Compare commits

...

No commits in common. 'master' and 'preview' have entirely different histories.

  1. 7
      .cloudbuild/Dockerfile.bazel-gapic
  2. 20
      .cloudbuild/cloudbuild.yaml
  3. 3
      .cloudbuild/write-latest.sh
  4. 18
      .github/mistaken-pull-closer.yml
  5. 52
      .github/workflows/diregapic.yaml
  6. 41
      .github/workflows/generate_api_index.yaml
  7. 8
      .gitignore
  8. 35
      .kokoro/Dockerfile
  9. 2
      .kokoro/build.sh
  10. 145
      .kokoro/docker_update.sh
  11. 2
      .kokoro/start.sh
  12. 43
      CODE_OF_CONDUCT.md
  13. 28
      CONTRIBUTING.md
  14. 201
      LICENSE
  15. 49
      Makefile
  16. 80
      PACKAGES.md
  17. 102
      README.md
  18. 7
      SECURITY.md
  19. 136262
      api-index-v1.json
  20. 22
      gapic/metadata/BUILD.bazel
  21. 7
      gapic/metadata/gapic_metadata.proto
  22. 107
      google/actions/sdk/v2/BUILD.bazel
  23. 126
      google/actions/sdk/v2/account_linking.proto
  24. 35
      google/actions/sdk/v2/account_linking_secret.proto
  25. 103
      google/actions/sdk/v2/action.proto
  26. 16
      google/actions/sdk/v2/actions_grpc_service_config.json
  27. 436
      google/actions/sdk/v2/actions_sdk.proto
  28. 256
      google/actions/sdk/v2/actions_testing.proto
  29. 11
      google/actions/sdk/v2/actions_v2.yaml
  30. 112
      google/actions/sdk/v2/config_file.proto
  31. 25
      google/actions/sdk/v2/conversation/BUILD.bazel
  32. 52
      google/actions/sdk/v2/conversation/intent.proto
  33. 25
      google/actions/sdk/v2/conversation/prompt/BUILD.bazel
  34. 32
      google/actions/sdk/v2/conversation/prompt/content/BUILD.bazel
  35. 50
      google/actions/sdk/v2/conversation/prompt/content/canvas.proto
  36. 51
      google/actions/sdk/v2/conversation/prompt/content/card.proto
  37. 46
      google/actions/sdk/v2/conversation/prompt/content/collection.proto
  38. 57
      google/actions/sdk/v2/conversation/prompt/content/content.proto
  39. 64
      google/actions/sdk/v2/conversation/prompt/content/image.proto
  40. 51
      google/actions/sdk/v2/conversation/prompt/content/link.proto
  41. 41
      google/actions/sdk/v2/conversation/prompt/content/list.proto
  42. 97
      google/actions/sdk/v2/conversation/prompt/content/media.proto
  43. 92
      google/actions/sdk/v2/conversation/prompt/content/table.proto
  44. 81
      google/actions/sdk/v2/conversation/prompt/prompt.proto
  45. 38
      google/actions/sdk/v2/conversation/prompt/simple.proto
  46. 31
      google/actions/sdk/v2/conversation/prompt/suggestion.proto
  47. 92
      google/actions/sdk/v2/conversation/scene.proto
  48. 59
      google/actions/sdk/v2/data_file.proto
  49. 246
      google/actions/sdk/v2/event_logs.proto
  50. 40
      google/actions/sdk/v2/files.proto
  51. 33
      google/actions/sdk/v2/interactionmodel/BUILD.bazel
  52. 55
      google/actions/sdk/v2/interactionmodel/conditional_event.proto
  53. 41
      google/actions/sdk/v2/interactionmodel/entity_set.proto
  54. 41
      google/actions/sdk/v2/interactionmodel/event_handler.proto
  55. 45
      google/actions/sdk/v2/interactionmodel/global_intent_event.proto
  56. 85
      google/actions/sdk/v2/interactionmodel/intent.proto
  57. 40
      google/actions/sdk/v2/interactionmodel/intent_event.proto
  58. 27
      google/actions/sdk/v2/interactionmodel/prompt/BUILD.bazel
  59. 34
      google/actions/sdk/v2/interactionmodel/prompt/content/BUILD.bazel
  60. 54
      google/actions/sdk/v2/interactionmodel/prompt/content/static_canvas_prompt.proto
  61. 48
      google/actions/sdk/v2/interactionmodel/prompt/content/static_card_prompt.proto
  62. 56
      google/actions/sdk/v2/interactionmodel/prompt/content/static_collection_browse_prompt.proto
  63. 59
      google/actions/sdk/v2/interactionmodel/prompt/content/static_collection_prompt.proto
  64. 57
      google/actions/sdk/v2/interactionmodel/prompt/content/static_content_prompt.proto
  65. 63
      google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto
  66. 52
      google/actions/sdk/v2/interactionmodel/prompt/content/static_link_prompt.proto
  67. 55
      google/actions/sdk/v2/interactionmodel/prompt/content/static_list_prompt.proto
  68. 112
      google/actions/sdk/v2/interactionmodel/prompt/content/static_media_prompt.proto
  69. 93
      google/actions/sdk/v2/interactionmodel/prompt/content/static_table_prompt.proto
  70. 96
      google/actions/sdk/v2/interactionmodel/prompt/static_prompt.proto
  71. 48
      google/actions/sdk/v2/interactionmodel/prompt/static_simple_prompt.proto
  72. 33
      google/actions/sdk/v2/interactionmodel/prompt/suggestion.proto
  73. 54
      google/actions/sdk/v2/interactionmodel/prompt/surface_capabilities.proto
  74. 60
      google/actions/sdk/v2/interactionmodel/scene.proto
  75. 133
      google/actions/sdk/v2/interactionmodel/slot.proto
  76. 28
      google/actions/sdk/v2/interactionmodel/type/BUILD.bazel
  77. 36
      google/actions/sdk/v2/interactionmodel/type/class_reference.proto
  78. 35
      google/actions/sdk/v2/interactionmodel/type/entity_display.proto
  79. 33
      google/actions/sdk/v2/interactionmodel/type/free_text_type.proto
  80. 44
      google/actions/sdk/v2/interactionmodel/type/regular_expression_type.proto
  81. 66
      google/actions/sdk/v2/interactionmodel/type/synonym_type.proto
  82. 50
      google/actions/sdk/v2/interactionmodel/type/type.proto
  83. 92
      google/actions/sdk/v2/localized_settings.proto
  84. 30
      google/actions/sdk/v2/manifest.proto
  85. 44
      google/actions/sdk/v2/release_channel.proto
  86. 186
      google/actions/sdk/v2/settings.proto
  87. 64
      google/actions/sdk/v2/surface.proto
  88. 83
      google/actions/sdk/v2/theme_customization.proto
  89. 46
      google/actions/sdk/v2/validation_results.proto
  90. 91
      google/actions/sdk/v2/version.proto
  91. 82
      google/actions/sdk/v2/webhook.proto
  92. 164
      google/actions/type/BUILD.bazel
  93. 81
      google/actions/type/date_range.proto
  94. 66
      google/actions/type/datetime_range.proto
  95. 21
      google/actions/type/type_aog.yaml
  96. 36
      google/ads/admanager/BUILD.bazel
  97. 444
      google/ads/admanager/v1/BUILD.bazel
  98. 81
      google/ads/admanager/v1/ad_unit_enums.proto
  99. 230
      google/ads/admanager/v1/ad_unit_messages.proto
  100. 195
      google/ads/admanager/v1/ad_unit_service.proto
  101. Some files were not shown because too many files have changed in this diff Show More

@ -1,7 +0,0 @@
FROM gcr.io/cloud-builders/bazel
RUN apt-get update && apt-get install -y \
zip \
libxml2-dev \
build-essential

@ -1,20 +0,0 @@
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-f', '.cloudbuild/Dockerfile.bazel-gapic', '-t', 'bazel-gapic', '.']
- name: 'bazel-gapic'
args: ['build', '--remote_http_cache=https://storage.googleapis.com/$PROJECT_ID-cloud-build-artifacts/$REPO_NAME/bazel-remote-cache', '--google_default_credentials', '//:gapic-cloud-build']
- name: 'ubuntu'
args: ['mkdir', 'gapic-cloud-build']
- name: 'ubuntu'
args: ['tar', '-xf', 'bazel-bin/gapic-cloud-build.tar', '-C', 'gapic-cloud-build']
- name: 'gcr.io/cloud-builders/gsutil'
args: ['-m', 'cp', '-r', 'gapic-cloud-build', 'gs://$PROJECT_ID-cloud-build-artifacts/$REPO_NAME/$COMMIT_SHA/gapic-cloud-build']
- name: 'ubuntu'
args: ['bash', './.cloudbuild/write-latest.sh', '$COMMIT_SHA']
artifacts:
objects:
location: 'gs://$PROJECT_ID-cloud-build-artifacts/$REPO_NAME/'
paths:
- 'cloud_build_latest'
options:
machineType: 'N1_HIGHCPU_32'

@ -1,3 +0,0 @@
#!/bin/bash
echo $1 > cloud_build_latest

@ -1,18 +0,0 @@
# The JSONPath filter expression used to identify which PRs to close.
# The data filtered is the pull request data along with other metadata passed in
# by probot.
# Default behavior: Close all PRs.
filters:
# Don't close PRs in the pubsub_dev branch.
- '@.pull_request.base.ref != "pubsub_dev"'
- '@.pull_request.base.ref != "diregapic"'
# The message to post to the closed PR.
commentBody: |
Thanks for your contribution! Unfortunately, we don't use GitHub pull
requests to manage code contributions to this repository. Instead, please
see [CONTRIBUTING.md](../blob/master/CONTRIBUTING.md) which provides full
instructions on how to get involved.
# Whether to add a label to the closed PR.
addLabel: false

@ -1,52 +0,0 @@
---
name: DIREGAPIC Updater
on: # yamllint disable-line rule:truthy
schedule:
- cron: '19 */8 * * *'
workflow_dispatch:
jobs:
regenerate-compute:
if: github.repository == 'googleapis/googleapis'
runs-on: ubuntu-latest
container: gcr.io/gapic-images/googleapis:20230531
steps:
- name: Checkout master
uses: actions/checkout@v3
with:
ref: master
- name: Download discovery docs
run: |
curl https://raw.githubusercontent.com/googleapis/discovery-artifact-manager/refs/heads/master/discoveries/compute.v1.json --output google/cloud/compute/v1/compute.v1.json
echo compute_revision=$(grep -oP '"revision":\s*"\d+"' google/cloud/compute/v1/compute.v1.json | grep -oP '\d+') >> $GITHUB_ENV
- name: Regenerate API definitions
run: |
git config --global --add safe.directory /__w/googleapis/googleapis
bazelisk build --experimental_convenience_symlinks=normal //google/cloud/compute/v1:compute_gen
cp bazel-bin/google/cloud/compute/v1/compute_gen.proto google/cloud/compute/v1/compute.proto
bazelisk build --experimental_convenience_symlinks=normal //google/cloud/compute/v1:compute_grpc_service_config_gen
cp bazel-bin/google/cloud/compute/v1/compute_grpc_service_config_gen.json google/cloud/compute/v1/compute_grpc_service_config.json
bazelisk build --experimental_convenience_symlinks=normal //google/cloud/compute/v1:compute_gapic_gen
cp bazel-bin/google/cloud/compute/v1/compute_gapic_gen.yaml google/cloud/compute/v1/compute_gapic.yaml
echo api_changes=$(git diff-index --shortstat HEAD) >> $GITHUB_ENV
- name: Build GAPIC clients
if: contains(env.api_changes, 'file')
run: |
bazelisk build --experimental_convenience_symlinks=normal //google/cloud/compute/v1/...
bazelisk build --experimental_convenience_symlinks=normal //google/cloud/compute/v1/...
- name: Create PR
uses: googleapis/code-suggester@v2
env:
ACCESS_TOKEN: ${{ secrets.YOSHI_CODE_BOT_TOKEN }}
with:
command: pr
upstream_owner: googleapis
upstream_repo: googleapis
title: 'feat: [DIREGAPIC] Update API definitions'
description: 'feat: Update Compute Engine API to revision ${{ env.compute_revision }}'
message: 'feat: Update Compute Engine API to revision ${{ env.compute_revision }}'
primary: 'master'
branch: diregapic
git_dir: '.'
force: true
fork: true

@ -1,41 +0,0 @@
name: Generate API Index
on: # yamllint disable-line rule:truthy
push:
branches: [master]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Setup .NET Core SDK
uses: actions/setup-dotnet@v3
- name: Checkout googleapis (this repository)
uses: actions/checkout@v3
with:
path: googleapis
- name: Checkout index generator
uses: actions/checkout@v3
with:
repository: googleapis/googleapis-api-index-generator
path: gen
- name: Generate API index
run: |
gen/scripts/generate-schema.sh
gen/scripts/generate-index.sh $PWD/googleapis
cp gen/tmp/api-index-v1.json $PWD/googleapis
- name: Create PR
uses: googleapis/code-suggester@v2
env:
ACCESS_TOKEN: ${{ secrets.YOSHI_CODE_BOT_TOKEN }}
with:
command: pr
upstream_owner: googleapis
upstream_repo: googleapis
title: 'chore: regenerate API index'
description: 'chore: regenerate API index'
message: 'chore: regenerate API index'
primary: 'master'
branch: api-index
git_dir: 'googleapis/.'
force: true
fork: true

8
.gitignore vendored

@ -1,8 +0,0 @@
OWNERS
README.google
google/internal
google/protobuf
.project
artman-genfiles/
bazel-*
.vscode/

@ -1,35 +0,0 @@
FROM python:3.10.11-bullseye
RUN apt-get update
RUN apt-get install -y \
zip \
build-essential \
python-dev \
python3-dev \
openjdk-11-jdk \
pkg-config \
openssl \
libcurl4-openssl-dev
RUN mkdir -p /tools
WORKDIR /tools
RUN curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.12.0/bazelisk-linux-amd64 -o bazelisk
RUN chmod +x bazelisk
RUN curl -L https://github.com/bazelbuild/bazel/releases/download/6.0.0/bazel-6.0.0-linux-x86_64 -o bazel
RUN chmod +x bazel
WORKDIR /
ENV PATH="/tools:${PATH}"
ENV BAZELISK_BIN=/tools/bazelisk
ENV BAZEL_BIN=/tools/bazelisk
RUN apt-get clean
# Ask Bazel to use C++14 by default.
# Note: Bazel will use this system-wide configuration file and will merge it
# with other bazelrc file it finds: https://bazel.build/run/bazelrc
RUN echo 'build --repo_env=BAZEL_CXXOPTS="-std=c++14"' > /etc/bazel.bazelrc
ENTRYPOINT [ "/bin/bash" ]

@ -4,7 +4,7 @@ set -e
cd ${KOKORO_ARTIFACTS_DIR}/github/googleapis
cp .kokoro/.bazelrc $HOME/.bazelrc
CACHE_BUCKET=client-libraries-bazel-cache-github
CACHE_BUCKET=client-libraries-bazel-cache-github-preview
CACHE_CMDLINE="--remote_cache=https://storage.googleapis.com/${CACHE_BUCKET} --google_default_credentials"
#

@ -1,145 +0,0 @@
#!/bin/sh
# This script will build a Docker image for googleapis and recompile
# PHP and Ruby runtimes binaries to use in GAPIC generators for these
# languages.
#
# Historically, PHP and Ruby keep their compiled runtimes in the generators'
# repositories:
# https://github.com/googleapis/gapic-generator-php/tree/main/rules_php_gapic/resources
# https://github.com/googleapis/gapic-generator-ruby/tree/main/rules_ruby_gapic/prebuilt
# They are needed to prevent rebuilding of PHP and Ruby runtime (each taking
# several minutes) every time the build is executed from a clean workspace.
#
# Sometimes these binaries need to be updated: they are dynamically linked,
# and may stop working if some dependency changes in an incompatible way.
# Use this script to update both the googleapis Docker image, and those
# binaries.
#
# Run from any local working directory where you have write access.
#
# Usage:
# $ mkdir workdir
# $ cd workdir
# $ sh /path/to/.kokoro/docker_update.sh
#
# After the script completes, it should print out commands to push the new
# Docker image and to create pull requests against Ruby and PHP generators.
# Whenever the image is published, tag it in Google Cloud Console,
# then release new versions of the generators and update the image tag in
# start.sh scripts in Kokoro folders in all googleapis workspaces.
set -e
PWD="`pwd`"
SHARED="$PWD/volume"
SCRIPT=$0
DIRNAME=`dirname $SCRIPT`
if test -d "$SHARED"; then
echo "The working directory $SHARED already exists, please delete it first."
exit 1
fi
mkdir -p "$SHARED"
# 1. Build the latest Docker image using the Dockerfile from google3
echo "Using Dockerfile from $DIRNAME"
cat "$DIRNAME/Dockerfile" > "$PWD/Dockerfile"
echo "Building googleapis Docker image..."
docker build -t googleapis .
docker tag googleapis gcr.io/gapic-images/googleapis
echo "Done."
# 2. Clone Ruby and PHP generators
cd "$SHARED"
echo "Cloning Ruby generator..."
git clone --depth 1 git@github.com:googleapis/gapic-generator-ruby.git
echo "Done."
echo "Cloning PHP generator..."
git clone --depth 1 git@github.com:googleapis/gapic-generator-php.git
echo "Done."
# 3. Generate a script that would run Bazel to build both generators
cat > build.sh <<EOD
#!/bin/sh
set -e
export USER="$USER"
export HOME=/volume
cd /volume
cd gapic-generator-ruby
bazel build //rules_ruby_gapic/gapic-generator:gapic_generator_bundled_context
cd /volume
cd gapic-generator-php
bazel build //rules_php_gapic:php_gapic_generator_binary
cd ..
EOD
chmod +x build.sh
# 4. Execute the script inside Docker image
echo "Building generators inside Docker..."
# Note: without --privileged, the container has problems accessing the filesystem.
# We don't care much about it at this moment. Discussed here:
# https://forums.docker.com/t/what-capabilities-are-required-for-ls/92223
DOCKER_COMMAND="docker run --privileged --user=$UID --workdir=/volume -i --rm -v $SHARED:/volume"
$DOCKER_COMMAND --entrypoint /volume/build.sh googleapis
echo "Done."
# Fix permissions of the mounted folder
chmod -R u+w "$SHARED"
# 5. Pack the resulting Ruby and PHP binaries
RUBY_DIRECTORY=`ls -d .cache/bazel/*/*/external/gapic_generator_ruby_runtime`
RUBY_VERSION=`echo 'puts RUBY_VERSION' | $DOCKER_COMMAND --entrypoint "" googleapis /volume/$RUBY_DIRECTORY/bin/ruby`
echo "Ruby version: $RUBY_VERSION, packing..."
RUBY_ARCHIVE_DIR="ruby-$RUBY_VERSION"
RUBY_TARBALL_FILENAME="ruby-${RUBY_VERSION}_glinux_x86_64.tar.gz"
mkdir -p "$RUBY_ARCHIVE_DIR"
cp -r "$RUBY_DIRECTORY"/bin "$RUBY_DIRECTORY"/include "$RUBY_DIRECTORY"/lib "$RUBY_ARCHIVE_DIR"
tar cfz "$RUBY_TARBALL_FILENAME" "$RUBY_ARCHIVE_DIR"
echo "Done: $RUBY_TARBALL_FILENAME"
PHP_DIRECTORY=`ls -d .cache/bazel/*/*/external/php_micro`
PHP_VERSION=`echo '<? echo phpversion(); ?>' | $DOCKER_COMMAND --entrypoint "" googleapis /volume/$PHP_DIRECTORY/bin/php`
echo "PHP version: $PHP_VERSION, packing..."
PHP_ARCHIVE_DIR="php-$PHP_VERSION"
PHP_TARBALL_FILENAME="php-${PHP_VERSION}_linux_x86_64.tar.gz"
mkdir -p "$PHP_ARCHIVE_DIR"
cp -r "$PHP_DIRECTORY"/bin "$PHP_DIRECTORY"/include "$PHP_DIRECTORY"/lib "$PHP_ARCHIVE_DIR"
tar cfz "$PHP_TARBALL_FILENAME" "$PHP_ARCHIVE_DIR"
echo "Done: $PHP_TARBALL_FILENAME"
# 6. Commit the tarballs
BRANCH="update-binary-`date +%Y%m%dT%H%M%S`"
RUBY_TARBALL_LOCATION=rules_ruby_gapic/prebuilt
cd "$SHARED/gapic-generator-ruby"
git checkout -b "$BRANCH"
git rm -f "$RUBY_TARBALL_LOCATION"/*.tar.gz
cp "$SHARED/$RUBY_TARBALL_FILENAME" "$RUBY_TARBALL_LOCATION/"
git add "$RUBY_TARBALL_LOCATION/$RUBY_TARBALL_FILENAME"
git commit -m "fix: update Ruby prebuilt binary, version $RUBY_VERSION"
echo "Pushing Ruby branch to GitHub..."
git push --set-upstream origin "$BRANCH"
echo "Done"
PHP_TARBALL_LOCATION=rules_php_gapic/resources
cd "$SHARED/gapic-generator-php"
git checkout -b "$BRANCH"
git rm -f "$PHP_TARBALL_LOCATION"/*.tar.gz
cp "$SHARED/$PHP_TARBALL_FILENAME" "$PHP_TARBALL_LOCATION/"
git add "$PHP_TARBALL_LOCATION/$PHP_TARBALL_FILENAME"
git commit -m "fix: update PHP prebuilt binary, version $PHP_VERSION"
echo "Pushing PHP branch to GitHub..."
git push --set-upstream origin "$BRANCH"
echo "Done"
echo
echo "Please create pull requests:"
echo " https://github.com/googleapis/gapic-generator-ruby/pull/new/$BRANCH"
echo " https://github.com/googleapis/gapic-generator-php/pull/new/$BRANCH"
echo "and push this Docker image to gcr.io:"
echo " docker push gcr.io/gapic-images/googleapis"

@ -11,4 +11,4 @@ docker container run \
--workdir ${KOKORO_ROOT} \
--ipc=host \
--entrypoint ${KOKORO_ARTIFACTS_DIR}/github/googleapis/.kokoro/build.sh \
gcr.io/gapic-images/googleapis:20230531
gcr.io/gapic-images/googleapis:20230531

@ -1,43 +0,0 @@
# Contributor Code of Conduct
As contributors and maintainers of this project,
and in the interest of fostering an open and welcoming community,
we pledge to respect all people who contribute through reporting issues,
posting feature requests, updating documentation,
submitting pull requests or patches, and other activities.
We are committed to making participation in this project
a harassment-free experience for everyone,
regardless of level of experience, gender, gender identity and expression,
sexual orientation, disability, personal appearance,
body size, race, ethnicity, age, religion, or nationality.
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery
* Personal attacks
* Trolling or insulting/derogatory comments
* Public or private harassment
* Publishing other's private information,
such as physical or electronic
addresses, without explicit permission
* Other unethical or unprofessional conduct.
Project maintainers have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct.
By adopting this Code of Conduct,
project maintainers commit themselves to fairly and consistently
applying these principles to every aspect of managing this project.
Project maintainers who do not follow or enforce the Code of Conduct
may be permanently removed from the project team.
This code of conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community.
Instances of abusive, harassing, or otherwise unacceptable behavior
may be reported by opening an issue
or contacting one or more of the project maintainers.
This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0,
available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)

@ -1,28 +0,0 @@
# How to contribute
We definitely welcome feedback and contribution to Google APIs! Here
is some guideline and information about how to do so.
## Legal requirements
In order to protect both you and ourselves, you will need to sign the
[Contributor License Agreement](https://cla.developers.google.com/clas).
## Technical requirements
You will need several tools to work with this repository. At minimum,
you need both [Protocol Buffers](https://github.com/google/protobuf)
and [gRPC](https://github.com/grpc) in order to compile this
repository and generate client library source code in various
programming languages.
To compile the generated code into usable client libraries, you will
need to use appropriate development environments and setup proper
build configurations.
## Additional note
Currently, the root's Makefile only lets you generate source code for
the client library in the programming languages supported by
[gRPC](https://github.com/grpc). It does not generate the ready-to-use
client libraries yet.

@ -1,201 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

@ -1,49 +0,0 @@
# This is a simple Makefile that generates client library source code
# for Google APIs using Protocol Buffers and gRPC for any supported
# language. However, it does not compile the generated code into final
# libraries that can be directly used with application code.
#
# Syntax example: make OUTPUT=./output LANGUAGE=java
#
# Choose the output directory
OUTPUT ?= ./gens
# Choose the target language.
LANGUAGE ?= cpp
# Choose grpc plugin
GRPCPLUGIN ?= /usr/local/bin/grpc_$(LANGUAGE)_plugin
# Choose the proto include directory.
PROTOINCLUDE ?= /usr/local/include
# Choose protoc binary
PROTOC ?= protoc
# Compile the entire repository
#
# NOTE: if "protoc" command is not in the PATH, you need to modify this file.
#
ifeq ($(LANGUAGE),go)
$(error Go source files are not generated from this repository. See: https://github.com/google/go-genproto)
endif
FLAGS+= --proto_path=.:$(PROTOINCLUDE)
FLAGS+= --$(LANGUAGE)_out=$(OUTPUT) --grpc_out=$(OUTPUT)
FLAGS+= --plugin=protoc-gen-grpc=$(GRPCPLUGIN)
SUFFIX:= pb.cc
DEPS:= $(shell find google $(PROTOINCLUDE)/google/protobuf -type f -name '*.proto' | sed "s/proto$$/$(SUFFIX)/")
all: $(DEPS)
%.$(SUFFIX): %.proto
mkdir -p $(OUTPUT)
$(PROTOC) $(FLAGS) $*.proto
clean:
rm $(patsubst %,$(OUTPUT)/%,$(DEPS)) 2> /dev/null
rm -rd $(OUTPUT)

@ -1,80 +0,0 @@
# Auto-Generated Packages for Google Cloud Platform
This indexes the gRPC and GAPIC packages delivered to the [Google Cloud
Platform](https://github.com/GoogleCloudPlatform) teams and where they can be
found. Currently, package delivery is only being done for Python.
## [Python](https://github.com/GoogleCloudPlatform/gcloud-python)
### Common
- [GAX core library](https://pypi.python.org/pypi/google-gax) ([source](https://github.com/googleapis/gax-python))
- [gRPC for common protos](https://pypi.python.org/pypi/googleapis-common-protos) ([source](https://github.com/googleapis/googleapis))
- [Long-running operations](https://github.com/googleapis/googleapis/blob/master/google/longrunning/operations.proto)
- [GAPIC](https://pypi.python.org/pypi/gapic-google-longrunning)
- gRPC: Part of [gRPC for common protos](https://pypi.python.org/pypi/googleapis-common-protos)
- Documentation: TBD
### [Cloud Bigtable](https://cloud.google.com/bigtable/)
- GAPIC: TBD
- gRPC: TBD
- Documentation: TBD
### [Cloud Datastore](https://cloud.google.com/datastore/)
- [GAPIC](https://pypi.python.org/pypi/gapic-google-cloud-datastore-v1)
- [gRPC](https://pypi.python.org/pypi/grpc-google-cloud-datastore-v1)
- Documentation: TBD
### [Cloud Identity and Access Management (IAM)](https://cloud.google.com/iam/)
- Admin API
- [GAPIC](https://pypi.python.org/pypi/gapic-google-iam-admin-v1)
- [gRPC](https://pypi.python.org/pypi/grpc-google-iam-admin-v1)
- Documentation: TBD
- Policy Mixin (used by Pub/Sub and others)
- [gRPC](https://pypi.python.org/pypi/grpc-google-iam-v1)
### [Cloud Natural Language](https://cloud.google.com/natural-language/)
- [GAPIC](https://pypi.python.org/pypi/gapic-google-cloud-language-v1beta1)
- [gRPC](https://pypi.python.org/pypi/grpc-google-cloud-language-v1beta1)
- Documentation: TBD
### [Cloud Pub/Sub](https://cloud.google.com/pubsub/)
- [GAPIC](https://pypi.python.org/pypi/gapic-google-cloud-pubsub-v1)
- [gRPC](https://pypi.python.org/pypi/grpc-google-cloud-pubsub-v1)
- [Documentation](http://pythonhosted.org/gax-google-pubsub-v1/):
For old `gax` namespace... will be updated soon for `gapic` namespace.
### [Cloud Speech](https://cloud.google.com/speech/)
- [GAPIC](https://pypi.python.org/pypi/gapic-google-cloud-speech-v1beta1)
- [gRPC](https://pypi.python.org/pypi/grpc-google-cloud-speech-v1beta1)
- Documentation: TBD
### [Cloud Vision](https://cloud.google.com/vision/)
- [GAPIC](https://pypi.python.org/pypi/gapic-google-cloud-vision-v1)
- [gRPC](https://pypi.python.org/pypi/grpc-google-cloud-vision-v1)
- [Documentation](http://pythonhosted.org/gax-google-cloud-vision-v1/):
For old `gax` namespace... will be updated soon for `gapic` namespace.
### [Stackdriver Debugger](https://cloud.google.com/debugger/)
- GAPIC: TBD
- gRPC: TBD
- Documentation: TBD
### [Stackdriver Error Reporting](https://cloud.google.com/error-reporting/)
- [GAPIC](https://pypi.python.org/pypi/gapic-google-cloud-error-reporting-v1beta1)
- [gRPC](https://pypi.python.org/pypi/grpc-google-cloud-error-reporting-v1beta1)
- Documentation: TBD
### [Stackdriver Logging](https://cloud.google.com/logging/)
- [GAPIC](https://pypi.python.org/pypi/gapic-google-cloud-logging-v2)
- [gRPC](https://pypi.python.org/pypi/grpc-google-cloud-logging-v2)
- [Documentation](http://gapic-google-cloud-logging-v2.readthedocs.io)
### [Stackdriver Monitoring](https://cloud.google.com/monitoring/)
- [GAPIC](https://pypi.python.org/pypi/gapic-google-monitoring-v3)
- [gRPC](https://pypi.python.org/pypi/grpc-google-monitoring-v3)
- Documentation: TBD
### [Stackdriver Trace](https://cloud.google.com/trace/)
- GAPIC: TBD
- gRPC: TBD
- Documentation: TBD

@ -1,45 +1,6 @@
# Google APIs
# Google APIs Preview Channel
This repository contains the original interface definitions of public
Google APIs that support both REST and gRPC protocols. Reading the
original interface definitions can provide a better understanding of
Google APIs and help you to utilize them more efficiently. You can also
use these definitions with open source tools to generate client
libraries, documentation, and other artifacts.
## Building
### Bazel
The recommended way to build the API client libraries is through
[Bazel](https://bazel.build/) >= 4.2.2.
First, [install bazel](https://docs.bazel.build/versions/master/install.html).
To build all libraries:
```
bazel build //...
```
To test all libraries:
```
bazel test //...
```
To build one library in all languages:
```
bazel build //google/example/library/v1/...
```
To build the Java package for one library:
```
bazel build //google/example/library/v1:google-cloud-example-library-v1-java
```
Bazel packages exist in all the libraries for Java, Go, Python, Ruby, Node.js, PHP and C#.
This branch is meant for development of preview-level APIs and features.
## Overview
@ -52,62 +13,3 @@ version 3 (proto3) as their Interface Definition Language (IDL) to
define the API interface and the structure of the payload messages. The
same interface definition is used for both REST and RPC versions of the
API, which can be accessed over different wire protocols.
There are several ways of accessing Google APIs:
1. JSON over HTTP: You can access all Google APIs directly using JSON
over HTTP, using
[Google API client library](https://developers.google.com/api-client-library)
or third-party API client libraries.
2. Protocol Buffers over gRPC: You can access Google APIs published
in this repository through [GRPC](https://github.com/grpc), which is
a high-performance binary RPC protocol over HTTP/2. It offers many
useful features, including request/response multiplex and full-duplex
streaming.
3. [Google Cloud Client Libraries](https://cloud.google.com/apis/docs/cloud-client-libraries):
You can use these libraries to access Google Cloud APIs. They are based
on gRPC for better performance and provide idiomatic client surface for
better developer experience.
## Discussions
This repo contains copies of Google API definitions and related files. For
discussions or to raise issues about
[Google API client libraries](https://github.com/googleapis),
[GRPC](https://github.com/grpc) or
[Google Cloud Client Libraries](https://github.com/googlecloudplatform) please
refer to the repos associated with each area.
## Repository Structure
This repository uses a directory hierarchy that reflects the Google
API product structure. In general, every API has its own root
directory, and each major version of the API has its own subdirectory.
The proto package names exactly match the directory: this makes it
easy to locate the proto definitions and ensures that the generated
client libraries have idiomatic namespaces in most programming
languages. Alongside the API directories live the configuration files
for the [GAPIC toolkit](https://github.com/googleapis/toolkit).
**NOTE:** The major version of an API is used to indicate breaking
change to the API.
## Generate gRPC Source Code
To generate gRPC source code for Google APIs in this repository, you
first need to install both Protocol Buffers and gRPC on your local
machine, then you can run `make LANGUAGE=xxx all` to generate the
source code. You need to integrate the generated source code into
your application build system.
**NOTE:** The Makefile is only intended to generate source code for the
entire repository. It is not for generating linkable client library
for a specific API. Please see other repositories under
https://github.com/googleapis for generating linkable client libraries.
### Go gRPC Source Code
It is difficult to generate Go gRPC source code from this repository,
since Go has different directory structure.
Please use [this repository](https://github.com/google/go-genproto) instead.

@ -1,7 +0,0 @@
# Security Policy
To report a security issue, please use [g.co/vulnz](https://g.co/vulnz).
The Google Security Team will respond within 5 working days of your report on g.co/vulnz.
We use g.co/vulnz for our intake, and do coordination and disclosure here using GitHub Security Advisory to privately discuss and fix the issue.

File diff suppressed because it is too large Load Diff

@ -59,21 +59,27 @@ go_proto_library(
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"moved_proto_library",
"py_grpc_library",
"py_proto_library",
"py_gapic_assembly_pkg",
)
moved_proto_library(
name = "metadata_moved_proto",
srcs = [":metadata_proto"],
deps = [
],
)
py_proto_library(
name = "metadata_py_proto",
deps = [":metadata_proto"],
deps = [":metadata_moved_proto"],
)
# Open Source Packages
py_gapic_assembly_pkg(
name = "metadata-py",
deps = [
":metadata_py_proto"
],
py_grpc_library(
name = "metadata_py_grpc",
srcs = [":metadata_moved_proto"],
deps = [":metadata_py_proto"],
)
##############################################################################

@ -25,8 +25,8 @@ option java_package = "com.google.gapic.metadata";
option php_namespace = "Google\\Gapic\\Metadata";
option ruby_package = "Google::Gapic::Metadata";
// Metadata about a GAPIC library for a specific combination of API, version,
// and computer language.
// Metadata about a GAPIC library for a specific combination of API, version, and
// computer language.
message GapicMetadata {
// Schema version of this proto. Current value: 1.0
string schema = 1;
@ -74,7 +74,7 @@ message GapicMetadata {
// than one library_client method for each RPC. RPCs with no
// library_client methods need not be included.
//
// The key name is the name of the RPC as defined and formatted in
// The key name is the name of the RPC as defined and formated in
// the proto file.
map<string, MethodList> rpcs = 2;
}
@ -88,4 +88,5 @@ message GapicMetadata {
// source code.
repeated string methods = 1;
}
}

@ -1,107 +0,0 @@
# This file was automatically generated by BuildFileGenerator
# https://github.com/googleapis/gapic-generator/tree/master/rules_gapic/bazel
# Most of the manual changes to this file will be overwritten.
# It's **only** allowed to change the following rule attribute values:
# - names of *_gapic_assembly_* rules
# - certain parameters of *_gapic_library rules, including but not limited to:
# * extra_protoc_parameters
# * extra_protoc_file_parameters
# The complete list of preserved parameters can be found in the source code.
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
load("@com_google_googleapis_imports//:imports.bzl", "proto_library_with_info")
proto_library(
name = "sdk_proto",
srcs = [
"account_linking.proto",
"account_linking_secret.proto",
"action.proto",
"actions_sdk.proto",
"actions_testing.proto",
"config_file.proto",
"data_file.proto",
"event_logs.proto",
"files.proto",
"localized_settings.proto",
"manifest.proto",
"release_channel.proto",
"settings.proto",
"surface.proto",
"theme_customization.proto",
"validation_results.proto",
"version.proto",
"webhook.proto",
],
deps = [
"//google/actions/sdk/v2/conversation:conversation_proto",
"//google/actions/sdk/v2/conversation/prompt:prompt_proto",
"//google/actions/sdk/v2/conversation/prompt/content:content_proto",
"//google/actions/sdk/v2/interactionmodel:interactionmodel_proto",
"//google/actions/sdk/v2/interactionmodel/prompt:prompt_proto",
"//google/actions/sdk/v2/interactionmodel/prompt/content:content_proto",
"//google/actions/sdk/v2/interactionmodel/type:type_proto",
"//google/api:annotations_proto",
"//google/api:client_proto",
"//google/api:field_behavior_proto",
"//google/api:resource_proto",
"//google/rpc:status_proto",
"//google/type:latlng_proto",
"@com_google_protobuf//:empty_proto",
"@com_google_protobuf//:struct_proto",
"@com_google_protobuf//:timestamp_proto",
"@com_google_protobuf//:wrappers_proto",
],
)
proto_library_with_info(
name = "sdk_proto_with_info",
deps = [
":sdk_proto",
"//google/cloud:common_resources_proto",
],
)
##############################################################################
# Node.js
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"nodejs_gapic_assembly_pkg",
"nodejs_gapic_library",
)
nodejs_gapic_library(
name = "sdk_nodejs_gapic",
package_name = "@assistant/actions",
src = ":sdk_proto_with_info",
extra_protoc_parameters = ["metadata"],
grpc_service_config = "actions_grpc_service_config.json",
package = "google.actions.sdk.v2",
rest_numeric_enums = True,
service_yaml = "actions_v2.yaml",
transport = "grpc+rest",
deps = [],
)
nodejs_gapic_assembly_pkg(
name = "actions-v2-nodejs",
deps = [
":sdk_nodejs_gapic",
":sdk_proto",
"//google/actions/sdk/v2/conversation:conversation_proto",
"//google/actions/sdk/v2/conversation/prompt:prompt_proto",
"//google/actions/sdk/v2/conversation/prompt/content:content_proto",
"//google/actions/sdk/v2/interactionmodel:interactionmodel_proto",
"//google/actions/sdk/v2/interactionmodel/prompt:prompt_proto",
"//google/actions/sdk/v2/interactionmodel/prompt/content:content_proto",
"//google/actions/sdk/v2/interactionmodel/type:type_proto",
],
)

@ -1,126 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "AccountLinkingProto";
option java_package = "com.google.actions.sdk.v2";
// AccountLinking allows Google to guide the user to sign-in to the App's web
// services.
//
// For Google Sign In and OAuth + Google Sign In linking types, Google generates
// a client ID identifying your App to Google ("Client ID issued by Google to
// your Actions" on Console UI). This field is read-only and can be checked by
// navigating to the Console UI's Account Linking page.
// See: https://developers.google.com/assistant/identity/google-sign-in
//
// Note: For all account linking setting types (except for Google Sign In), you
// must provide a username and password for a test account in
// Settings.testing_instructions for the review team to review the app (they
// will not be visible to users).
message AccountLinking {
// The type of Account Linking to perform.
enum LinkingType {
// Unspecified.
LINKING_TYPE_UNSPECIFIED = 0;
// Google Sign In linking type.
// If using this linking type, no OAuth-related fields need to be set below.
GOOGLE_SIGN_IN = 1;
// OAuth and Google Sign In linking type.
OAUTH_AND_GOOGLE_SIGN_IN = 2;
// OAuth linking type.
OAUTH = 3;
}
// The OAuth2 grant type Google uses to guide the user to sign in to your
// App's web service.
enum AuthGrantType {
// Unspecified.
AUTH_GRANT_TYPE_UNSPECIFIED = 0;
// Authorization code grant. Requires you to provide both
// authentication URL and access token URL.
AUTH_CODE = 1;
// Implicit code grant. Only requires you to provide authentication
// URL.
IMPLICIT = 2;
}
// Required. If `true`, users are allowed to sign up for new accounts via voice.
// If `false`, account creation is only allowed on your website. Select this
// option if you want to display your terms of service or obtain user consents
// during sign-up.
// linking_type cannot be GOOGLE_SIGN_IN when this is `false`.
// linking_type cannot be OAUTH when this is `true`.
bool enable_account_creation = 1 [(google.api.field_behavior) = REQUIRED];
// Required. The linking type to use.
// See https://developers.google.com/assistant/identity for further details on
// the linking types.
LinkingType linking_type = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. Indicates the type of authentication for OAUTH linking_type.
AuthGrantType auth_grant_type = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Client ID issued by your App to Google.
// This is the OAuth2 Client ID identifying Google to your service.
// Only set when using OAuth.
string app_client_id = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Endpoint for your sign-in web page that supports OAuth2 code or
// implicit flows.
// URL must use HTTPS.
// Only set when using OAuth.
string authorization_url = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. OAuth2 endpoint for token exchange.
// URL must use HTTPS.
// This is not set when only using OAuth with IMPLICIT grant as the
// linking type.
// Only set when using OAuth.
string token_url = 6 [(google.api.field_behavior) = OPTIONAL];
// Optional. List of permissions the user must consent to in order to use
// your service.
// Only set when using OAuth.
// Make sure to provide a Terms of Service in the directory information in
// LocalizedSettings.terms_of_service_url section if specifying this field.
repeated string scopes = 7 [(google.api.field_behavior) = OPTIONAL];
// Optional. This is the web page on your service which describes the
// permissions the user is granting to Google.
// Only set if using OAuth and Google Sign In.
// Make sure to provide a Terms of Service in the directory information in
// LocalizedSettings.terms_of_service_url section if specifying this field.
string learn_more_url = 8 [(google.api.field_behavior) = OPTIONAL];
// Optional. If true, allow Google to transmit client ID and secret via HTTP
// basic auth header. Otherwise, Google uses the client ID and secret inside
// the post body.
// Only set when using OAuth.
// Make sure to provide a Terms of Service in the directory information in
// LocalizedSettings.terms_of_service_url section if specifying this field.
bool use_basic_auth_header = 9 [(google.api.field_behavior) = OPTIONAL];
}

@ -1,35 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "AccountLinkingSecretProto";
option java_package = "com.google.actions.sdk.v2";
// Information about the encrypted OAuth client secret used in account linking
// flows (for AUTH_CODE grant type).
message AccountLinkingSecret {
// Encrypted account linking client secret ciphertext.
bytes encrypted_client_secret = 1;
// The version of the crypto key used to encrypt the account linking client
// secret.
// Note that this field is ignored in push, preview, and version creation
// flows.
string encryption_key_version = 2;
}

@ -1,103 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "ActionProto";
option java_package = "com.google.actions.sdk.v2";
// Represents the list of Actions defined in a project.
message Actions {
// Defines the engagement mechanisms associated with this action. This
// allows end users to subscribe to push notification and daily update.
message Engagement {
// Defines push notification settings that this engagement supports.
message PushNotification {
}
// Defines daily update settings that this engagement supports.
message DailyUpdate {
}
// Indicates whether sharing links is enabled for this action and the
// corresponding settings. Action links are used to deep link a user into a
// specific action.
// ActionLink is deprecated. Use AssistantLink instead.
message ActionLink {
option deprecated = true;
// User friendly display title for the link.
string title = 1;
}
// Indicates whether sharing links is enabled for this action and the
// corresponding settings. Assistant links are used to deep link a user into
// a specific action.
message AssistantLink {
// User friendly display title for the link.
string title = 1;
}
// The title of the engagement that will be sent to end users asking for
// their permission to receive updates. The prompt sent to end users for
// daily updates will look like "What time would you like me to send your
// daily {title}" and for push notifications will look like
// "Is it ok if I send push notifications for {title}".
// **This field is localizable.**
string title = 1;
// Push notification settings that this engagement supports.
PushNotification push_notification = 2;
// Recurring update settings that this engagement supports.
oneof recurring_update {
// Daily update settings that this engagement supports.
DailyUpdate daily_update = 3;
}
// Link config for an action which determines whether sharing links is
// enabled for the action and if so, contains the user friendly display name
// for the link.
// ActionLink is deprecated. Use AssistantLink instead.
ActionLink action_link = 4 [deprecated = true];
// Link config for an action which determines whether sharing links is
// enabled for the action and if so, contains the user friendly display name
// for the link.
AssistantLink assistant_link = 6;
}
// Details regarding a custom action.
message CustomAction {
// Engagement mechanisms associated with the action to help end users
// subscribe to push notifications and daily updates.
// Note that the intent name specified in daily updates/push notifications
// slot config needs to match the intent corresponding to this action for
// end users to subscribe to these updates.
Engagement engagement = 2;
}
// Map from intents to custom Actions to configure invocation for the project.
// The invocation intents could either be system or custom intents defined
// in the "custom/intents/" package. All intents defined here (system
// intents & custom intents) must have a corresponding intent file in the
// "custom/global/" package.
map<string, CustomAction> custom = 3;
}

@ -1,16 +0,0 @@
{
"methodConfig": [{
"name": [{ "service": "google.actions.sdk.v2.ActionsSdk" }],
"timeout": "60s"
},
{
"name": [
{ "service": "google.actions.sdk.v2.ActionsSdk", "method": "WritePreview" }
],
"timeout": "180s"
},
{
"name": [{ "service": "google.actions.sdk.v2.ActionsTesting" }],
"timeout": "60s"
}]
}

@ -1,436 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
import "google/actions/sdk/v2/account_linking_secret.proto";
import "google/actions/sdk/v2/files.proto";
import "google/actions/sdk/v2/release_channel.proto";
import "google/actions/sdk/v2/validation_results.proto";
import "google/actions/sdk/v2/version.proto";
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/protobuf/wrappers.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "ActionsSdkProto";
option java_package = "com.google.actions.sdk.v2";
// Actions SDK API which allows developers to build projects using the SDK.
service ActionsSdk {
option (google.api.default_host) = "actions.googleapis.com";
// Updates the project draft based on the model.
rpc WriteDraft(stream WriteDraftRequest) returns (Draft) {
option (google.api.http) = {
post: "/v2/{parent=projects/*}/draft:write"
body: "*"
};
}
// Updates the user's project preview based on the model.
rpc WritePreview(stream WritePreviewRequest) returns (Preview) {
option (google.api.http) = {
post: "/v2/{parent=projects/*}/preview:write"
body: "*"
};
}
// Creates a project version based on the model and triggers deployment to the
// specified release channel, if specified.
rpc CreateVersion(stream CreateVersionRequest) returns (Version) {
option (google.api.http) = {
post: "/v2/{parent=projects/*}/versions:create"
body: "*"
};
}
// Reads the entire content of the project draft.
rpc ReadDraft(ReadDraftRequest) returns (stream ReadDraftResponse) {
option (google.api.http) = {
post: "/v2/{name=projects/*/draft}:read"
body: "*"
};
}
// Reads the entire content of a project version.
rpc ReadVersion(ReadVersionRequest) returns (stream ReadVersionResponse) {
option (google.api.http) = {
post: "/v2/{name=projects/*/versions/*}:read"
body: "*"
};
}
// Encrypts the OAuth client secret used in account linking flows.
// This can be used to encrypt the client secret for the first time (e.g.
// before the first push or after changing the client secret) or to re-encrypt
// a client secret using the latest primary key version (considering key
// rotation).
rpc EncryptSecret(EncryptSecretRequest) returns (EncryptSecretResponse) {
option (google.api.http) = {
post: "/v2:encryptSecret"
body: "*"
};
}
// Decrypts the OAuth client secret used in account linking flows.
// This can be used to view the client secret (e.g. after pulling a project).
rpc DecryptSecret(DecryptSecretRequest) returns (DecryptSecretResponse) {
option (google.api.http) = {
post: "/v2:decryptSecret"
body: "*"
};
}
// Lists all the sample projects supported by the gactions CLI.
rpc ListSampleProjects(ListSampleProjectsRequest) returns (ListSampleProjectsResponse) {
option (google.api.http) = {
get: "/v2/sampleProjects"
};
}
// Lists all release channels and corresponding versions, if any.
rpc ListReleaseChannels(ListReleaseChannelsRequest) returns (ListReleaseChannelsResponse) {
option (google.api.http) = {
get: "/v2/{parent=projects/*}/releaseChannels"
};
option (google.api.method_signature) = "parent";
}
// Lists all versions and their current states.
rpc ListVersions(ListVersionsRequest) returns (ListVersionsResponse) {
option (google.api.http) = {
get: "/v2/{parent=projects/*}/versions"
};
option (google.api.method_signature) = "parent";
}
}
// Streaming RPC request for WriteDraft.
message WriteDraftRequest {
// Required. The parent resource name in the format `projects/{project}`. The
// `{project}` is the cloud project ID associated with the project.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "actions.googleapis.com/Draft"
}
];
// Required. List of files sent to the server at a time. This is a list of config files
// or data files.
// 1. The first request must be a ConfigFiles.
// 2. The first request must have a ConfigFile with 'settings'.
// 3. The first request must have a ConfigFile with 'manifest'.
// 4. The webhook ConfigFile corresponding to inline cloud function must be
// streamed before the DataFile corresponding to its source code.
Files files = 4 [(google.api.field_behavior) = REQUIRED];
}
// Definition of draft resource.
message Draft {
option (google.api.resource) = {
type: "actions.googleapis.com/Draft"
pattern: "projects/{project}/draft"
};
// The unique identifier of the draft in the following format.
// `projects/{project}/draft`
string name = 1;
// Validation results associated with the project draft content. Note that
// WriteDraft updates the draft despite the warnings as warnings are not draft
// blocking.
ValidationResults validation_results = 2;
}
// Streaming RPC request for WritePreview.
message WritePreviewRequest {
// Indicates the preview content will be coming from the Draft.
message ContentFromDraft {
}
// Indicates the preview content will be coming from an exiting version.
message ContentFromSubmittedVersion {
// Required. Submitted version of the project to be used to create a preview.
// Format: `projects/{project}/versions/{version}`
string version = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "actions.googleapis.com/Version"
}
];
}
// Settings for updating the preview.
message PreviewSettings {
// Indicates whether or not to run certain operations, such as transactions,
// in sandbox mode. By default, preview requests run these operations in
// sandbox mode. In other words, the default value for `sandbox` is `true`.
google.protobuf.BoolValue sandbox = 1;
}
// Required. The parent resource name in the format `projects/{project}`. The
// `{project}` is the cloud project ID associated with the project.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "actions.googleapis.com/Preview"
}
];
// Data source used to created the preview.
oneof source {
// List of files sent to the server at a time. This is a list of config
// files or data files.
// 1. The first request must be a ConfigFiles.
// 2. The first request must have a ConfigFile with 'settings'.
// 3. The first request must have a ConfigFile with 'manifest'.
// 4. The webhook ConfigFile corresponding to inline cloud function must be
// streamed before the DataFile corresponding to its source code.
Files files = 5;
// Content sourced from the project draft.
ContentFromDraft draft = 6;
// Content sourced from the an exiting version.
ContentFromSubmittedVersion submitted_version = 7;
}
// Required. The settings for updating the user's preview.
PreviewSettings preview_settings = 4 [(google.api.field_behavior) = REQUIRED];
}
// Definition of preview resource.
message Preview {
option (google.api.resource) = {
type: "actions.googleapis.com/Preview"
pattern: "projects/{project}/previews/{preview}"
};
// The unique identifier of the preview.
// Format: `projects/{project}/preview`
string name = 1;
// Validation results associated with the user project preview content.
ValidationResults validation_results = 2;
// The simulator URL to test the user preview.
string simulator_url = 3;
}
// Streaming RPC request for CreateVersion.
message CreateVersionRequest {
// Required. The parent resource name in the format `projects/{project}`. The
// `{project}` is the cloud project ID associated with the project.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "actions.googleapis.com/Version"
}
];
// Required. List of files sent to the server at a time. This is a list of config files
// or data files.
// 1. The first request must be a ConfigFiles.
// 2. The first request must have a ConfigFile with 'settings'.
// 3. The first request must have a ConfigFile with 'manifest'.
// 4. The webhook ConfigFile corresponding to inline cloud function must be
// streamed before the DataFile corresponding to its source code.
Files files = 5 [(google.api.field_behavior) = REQUIRED];
// Optional. The release channel to deploy the version, if specified. The supported
// built in release channels are actions.channels.Production,
// actions.channels.ClosedBeta, actions.channels.Alpha.
// .
string release_channel = 4 [(google.api.field_behavior) = OPTIONAL];
}
// RPC request for ReadDraft.
message ReadDraftRequest {
// Required. The name of the resource in the format `projects/{project}/draft`. The
// `{project}` is the cloud project ID associated with the project.
string name = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. The version of the crypto key used to encrypt the account linking OAuth
// client secret. If not specified, the primary key version is used for
// encryption. Only relevant for projects with account linking with client
// secret.
string client_secret_encryption_key_version = 2 [(google.api.field_behavior) = OPTIONAL];
}
// Streaming RPC response for ReadDraft.
message ReadDraftResponse {
// List of files sent from the server at a time.
Files files = 3;
}
// RPC request for ReadVersion.
message ReadVersionRequest {
// Required. The name of the version resource in the format
// `projects/{project}/versions/{version}`. `{project}` is the
// cloud project ID associated with the project, `{version}` is the
// identifier of the version being read.
string name = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. The version of the crypto key used to encrypt the account linking OAuth
// client secret. If not specified, the primary key version is used for
// encryption. Only relevant for projects with account linking with client
// secret.
string client_secret_encryption_key_version = 2 [(google.api.field_behavior) = OPTIONAL];
}
// Streaming RPC response for ReadVersion.
message ReadVersionResponse {
// List of files sent from the server at a time.
Files files = 1;
}
// RPC request for EncryptSecret.
message EncryptSecretRequest {
// Required. The account linking client secret plaintext.
string client_secret = 1 [(google.api.field_behavior) = REQUIRED];
}
// RPC response for EncryptSecret.
message EncryptSecretResponse {
// Contains the encrypted account linking client secret and the key version
// used to encrypt the secret.
AccountLinkingSecret account_linking_secret = 1;
}
// RPC request for DecryptSecret.
message DecryptSecretRequest {
// Required. The account linking client secret ciphertext.
bytes encrypted_client_secret = 1 [(google.api.field_behavior) = REQUIRED];
}
// RPC response for DecryptSecret.
message DecryptSecretResponse {
// The account linking client secret plaintext.
string client_secret = 1;
}
// RPC request for ListSampleProjects.
message ListSampleProjectsRequest {
// Optional. The maximum number of sample projects to return. The service may return
// fewer than this value.
// If unspecified, at most 1000 sample projects will be returned. Values above
// 1000 will be coerced to 1000.
int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. A page token, received from a previous 'ListSampleProjects' call.
// Provide this to retrieve the subsequent page.
string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
}
// RPC response for ListSampleProjects.
message ListSampleProjectsResponse {
// The list of sample projects supported.
repeated SampleProject sample_projects = 1;
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there are no subsequent pages.
string next_page_token = 2;
}
// Definition of sample project resource.
message SampleProject {
option (google.api.resource) = {
type: "actions.googleapis.com/SampleProject"
pattern: "sampleProjects/{sample_project}"
};
// The name of the sample project.
// Format: `sampleProjects/{sample_project}`
string name = 1;
// The URL to the zip file where the sample is hosted.
string hosted_url = 2;
// The description of the sample project.
string description = 3;
}
// RPC request for listing release channels
message ListReleaseChannelsRequest {
// Required. The name of the resource in the format `projects/{project}`. The
// `{project}` is the cloud project ID associated with the project.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "actions.googleapis.com/ReleaseChannel"
}
];
// The maximum number of release channels to return. The service may return
// fewer than this value. If unspecified, at most 50 release channels will be
// returned.
int32 page_size = 2;
// A page token, received from a previous `ListReleaseChannels` call.
// Provide this to retrieve the subsequent page.
// When paginating, all other parameters provided to `ListReleaseChannels`
// must match the call that provided the page token.
string page_token = 3;
}
// RPC response for listing release channels
message ListReleaseChannelsResponse {
// List of the release channels for the given project id.
repeated ReleaseChannel release_channels = 1;
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there are no subsequent pages.
string next_page_token = 2;
}
// RPC request for listing versions
message ListVersionsRequest {
// Required. The name of the resource in the format `projects/{project}`. The
// `{project}` is the cloud project ID associated with the project.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "actions.googleapis.com/Version"
}
];
// The maximum number of versions to return. The service may return
// fewer than this value. If unspecified, at most 50 versions will be
// returned.
int32 page_size = 2;
// A page token, received from a previous `ListVersions` call.
// Provide this to retrieve the subsequent page.
// When paginating, all other parameters provided to `ListVersions`
// must match the call that provided the page token.
string page_token = 3;
}
// RPC response for listing versions
message ListVersionsResponse {
// List of the versions for the given project id.
repeated Version versions = 1;
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there are no subsequent pages.
string next_page_token = 2;
}

@ -1,256 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
import "google/actions/sdk/v2/conversation/intent.proto";
import "google/actions/sdk/v2/conversation/prompt/content/canvas.proto";
import "google/actions/sdk/v2/conversation/prompt/prompt.proto";
import "google/actions/sdk/v2/event_logs.proto";
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/protobuf/empty.proto";
import "google/type/latlng.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "ActionsTestingProto";
option java_package = "com.google.actions.sdk.v2";
// Actions Testing API which allows developers to run automated tests.
service ActionsTesting {
option (google.api.default_host) = "actions.googleapis.com";
// Plays one round of the conversation.
rpc SendInteraction(SendInteractionRequest) returns (SendInteractionResponse) {
option (google.api.http) = {
post: "/v2/{project=projects/*}:sendInteraction"
body: "*"
};
}
// Finds the intents that match a given query.
rpc MatchIntents(MatchIntentsRequest) returns (MatchIntentsResponse) {
option (google.api.http) = {
post: "/v2/{project=projects/*}:matchIntents"
body: "*"
};
option (google.api.method_signature) = "project,query,locale";
}
// Sets the Web & App Activity control on a service account.
//
// It is necessary to have this setting enabled in order to use call Actions.
// The setting is originally disabled for service accounts, and it is
// preserved until set to a different value. This means it only needs to be
// enabled once per account (and not necessarily once per test), unless it is
// later disabled.
//
// Returns an error if the caller is not a service account. User accounts can
// change this setting via the Activity Controls page. See
// https://support.google.com/websearch/answer/54068.
rpc SetWebAndAppActivityControl(SetWebAndAppActivityControlRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
post: "/v2:setWebAndAppActivityControl"
body: "*"
};
option (google.api.method_signature) = "enabled";
}
}
// Request for playing a round of the conversation.
message SendInteractionRequest {
// Required. The project being tested, indicated by the Project ID.
// Format: projects/{project}
string project = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Input provided by the user.
UserInput input = 2 [(google.api.field_behavior) = REQUIRED];
// Required. Properties of the device used for interacting with the Action.
DeviceProperties device_properties = 3 [(google.api.field_behavior) = REQUIRED];
// Opaque token that must be passed as received from SendInteractionResponse
// on the previous interaction. This can be left unset in order to start a new
// conversation, either as the first interaction of a testing session or to
// abandon a previous conversation and start a new one.
string conversation_token = 4;
}
// User input provided on a conversation round.
message UserInput {
// Indicates the input source, typed query or voice query.
enum InputType {
// Unspecified input source.
INPUT_TYPE_UNSPECIFIED = 0;
// Query from a GUI interaction.
TOUCH = 1;
// Voice query.
VOICE = 2;
// Typed query.
KEYBOARD = 3;
// The action was triggered by a URL link.
URL = 4;
}
// Content of the input sent by the user.
string query = 1;
// Type of the input.
InputType type = 2;
}
// Properties of device relevant to a conversation round.
message DeviceProperties {
// Possible surfaces used to interact with the Action.
// Additional values may be included in the future.
enum Surface {
// Default value. This value is unused.
SURFACE_UNSPECIFIED = 0;
// Speaker (e.g. Google Home).
SPEAKER = 1;
// Phone.
PHONE = 2;
// Allo Chat.
ALLO = 3;
// Smart Display Device.
SMART_DISPLAY = 4;
// KaiOS.
KAI_OS = 5;
}
// Surface used for interacting with the Action.
Surface surface = 1;
// Device location such as latitude, longitude, and formatted address.
Location location = 2;
// Locale as set on the device.
// The format should follow BCP 47: https://tools.ietf.org/html/bcp47
// Examples: en, en-US, es-419 (more examples at
// https://tools.ietf.org/html/bcp47#appendix-A).
string locale = 3;
// Time zone as set on the device.
// The format should follow the IANA Time Zone Database, e.g.
// "America/New_York": https://www.iana.org/time-zones
string time_zone = 4;
}
// Container that represents a location.
message Location {
// Geo coordinates.
// Requires the [DEVICE_PRECISE_LOCATION]
// [google.actions.v2.Permission.DEVICE_PRECISE_LOCATION] permission.
google.type.LatLng coordinates = 1;
// Display address, e.g., "1600 Amphitheatre Pkwy, Mountain View, CA 94043".
// Requires the [DEVICE_PRECISE_LOCATION]
// [google.actions.v2.Permission.DEVICE_PRECISE_LOCATION] permission.
string formatted_address = 2;
// Zip code.
// Requires the [DEVICE_PRECISE_LOCATION]
// [google.actions.v2.Permission.DEVICE_PRECISE_LOCATION] or
// [DEVICE_COARSE_LOCATION]
// [google.actions.v2.Permission.DEVICE_COARSE_LOCATION] permission.
string zip_code = 3;
// City.
// Requires the [DEVICE_PRECISE_LOCATION]
// [google.actions.v2.Permission.DEVICE_PRECISE_LOCATION] or
// [DEVICE_COARSE_LOCATION]
// [google.actions.v2.Permission.DEVICE_COARSE_LOCATION] permission.
string city = 4;
}
// Response to a round of the conversation.
message SendInteractionResponse {
// Output provided to the user.
Output output = 1;
// Diagnostics information that explains how the request was handled.
Diagnostics diagnostics = 2;
// Opaque token to be set on SendInteractionRequest on the next RPC call in
// order to continue the same conversation.
string conversation_token = 3;
}
// User-visible output to the conversation round.
message Output {
// Spoken response sent to user as a plain string.
string text = 1;
// Speech content produced by the Action. This may include markup elements
// such as SSML.
repeated string speech = 2;
// Interactive Canvas content.
google.actions.sdk.v2.conversation.Canvas canvas = 3;
// State of the prompt at the end of the conversation round.
// More information about the prompt:
// https://developers.google.com/assistant/conversational/prompts
google.actions.sdk.v2.conversation.Prompt actions_builder_prompt = 4;
}
// Diagnostics information related to the conversation round.
message Diagnostics {
// List of events with details about processing of the conversation round
// throughout the stages of the Actions Builder interaction model.
// Populated for Actions Builder & Actions SDK apps only.
repeated ExecutionEvent actions_builder_events = 1;
}
// Request for finding matching intents.
message MatchIntentsRequest {
// Required. The project being tested, indicated by the Project ID.
// Format: projects/{project}
string project = 1 [(google.api.field_behavior) = REQUIRED];
// Required. User query as plain text.
string query = 2 [(google.api.field_behavior) = REQUIRED];
// Required. Locale to use to evaluate the query, such as "en".
// The format should follow BCP 47: https://tools.ietf.org/html/bcp47
// See the list of supported languages in
// https://developers.google.com/assistant/console/languages-locales
string locale = 3 [(google.api.field_behavior) = REQUIRED];
}
// Response for finding matching intents.
message MatchIntentsResponse {
// Intents matched, ordered from most to least relevant. Only the first
// 50 matches are returned.
repeated google.actions.sdk.v2.conversation.Intent matched_intents = 1;
}
// Request for setting Web & App Activity preferences.
message SetWebAndAppActivityControlRequest {
// Whether the setting should be set to an enabled or disabled state.
bool enabled = 1;
}

@ -1,11 +0,0 @@
type: google.api.Service
config_version: 3
name: actions.googleapis.com
title: Actions API
apis:
- name: google.actions.sdk.v2.ActionsSdk
- name: google.actions.sdk.v2.ActionsTesting
documentation:
summary: A RESTful service for the Actions API.

@ -1,112 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
import "google/actions/sdk/v2/account_linking_secret.proto";
import "google/actions/sdk/v2/action.proto";
import "google/actions/sdk/v2/interactionmodel/entity_set.proto";
import "google/actions/sdk/v2/interactionmodel/global_intent_event.proto";
import "google/actions/sdk/v2/interactionmodel/intent.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/static_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/scene.proto";
import "google/actions/sdk/v2/interactionmodel/type/type.proto";
import "google/actions/sdk/v2/manifest.proto";
import "google/actions/sdk/v2/settings.proto";
import "google/actions/sdk/v2/webhook.proto";
import "google/protobuf/struct.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "ConfigFileProto";
option java_package = "com.google.actions.sdk.v2";
// Wrapper for repeated config files. Repeated fields cannot exist in a oneof.
message ConfigFiles {
// Multiple config files.
repeated ConfigFile config_files = 1;
}
// Represents a single file which contains structured data. Developers can
// define most of their project using structured config including Actions,
// Settings, Fulfillment.
message ConfigFile {
// Relative path of the config file from the project root in the SDK file
// structure. Each file types below have an allowed file path.
// Eg: settings/settings.yaml
string file_path = 1;
// Each type of config file should have a corresponding field in the oneof.
oneof file {
// Single manifest file.
// Allowed file path: `manifest.yaml`
Manifest manifest = 2;
// Single actions file with all the actions defined.
// Allowed file paths: `actions/{language}?/actions.yaml`
Actions actions = 3;
// Single settings config which includes non-localizable settings and
// settings for the project's default locale (if specified).
// For a locale override file, only localized_settings field will be
// populated.
// Allowed file paths: `settings/{language}?/settings.yaml`
// Note that the non-localized settings file `settings/settings.yaml` must
// be present in the write flow requests.
Settings settings = 4;
// Single webhook definition.
// Allowed file path: `webhooks/{WebhookName}.yaml`
Webhook webhook = 6;
// Single intent definition.
// Allowed file paths: `custom/intents/{language}?/{IntentName}.yaml`
google.actions.sdk.v2.interactionmodel.Intent intent = 7;
// Single type definition.
// Allowed file paths: `custom/types/{language}?/{TypeName}.yaml`
google.actions.sdk.v2.interactionmodel.type.Type type = 8;
// Single entity set definition.
// Allowed file paths: `custom/entitySets/{language}?/{EntitySetName}.yaml`
google.actions.sdk.v2.interactionmodel.EntitySet entity_set = 15;
// Single global intent event definition.
// Allowed file paths: `custom/global/{GlobalIntentEventName}.yaml`
// The file name (GlobalIntentEventName) should be the name of the intent
// that this global intent event corresponds to.
google.actions.sdk.v2.interactionmodel.GlobalIntentEvent global_intent_event = 9;
// Single scene definition.
// Allowed file paths: `custom/scenes/{SceneName}.yaml`
google.actions.sdk.v2.interactionmodel.Scene scene = 10;
// Single static prompt definition.
// Allowed file paths: `custom/prompts/{language}?/{StaticPromptName}.yaml`
google.actions.sdk.v2.interactionmodel.prompt.StaticPrompt static_prompt = 11;
// Metadata corresponding to the client secret used in account linking.
// Allowed file path: `settings/accountLinkingSecret.yaml`
AccountLinkingSecret account_linking_secret = 13;
// Single resource bundle, which is a map from a string to a string or list
// of strings. Resource bundles could be used for localizing strings in
// static prompts.
// Allowed file paths: `resources/strings/{language}?/{multiple
// directories}?/{BundleName}.yaml`
google.protobuf.Struct resource_bundle = 12;
}
}

@ -1,25 +0,0 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "conversation_proto",
srcs = [
"intent.proto",
"scene.proto",
],
deps = [
"//google/actions/sdk/v2/conversation/prompt:prompt_proto",
"@com_google_protobuf//:struct_proto",
],
)
##############################################################################
# Node.js
##############################################################################

@ -1,52 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.conversation;
import "google/protobuf/struct.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "IntentProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Represents an intent.
message Intent {
// Required. The name of the last matched intent.
string name = 1;
// Required. Represents parameters identified as part of intent matching.
// This is a map of the name of the identified parameter to the value of the
// parameter identified from user input. All parameters defined in
// the matched intent that are identified will be surfaced here.
map<string, IntentParameterValue> params = 2;
// Optional. Typed or spoken input from the end user that matched this intent.
// This will be populated when an intent is matched, based on the user input.
string query = 3;
}
// Represents a value for intent parameter.
message IntentParameterValue {
// Required. Original text value extracted from user utterance.
string original = 1;
// Required. Structured value for parameter extracted from user input.
// This will only be populated if the parameter is defined in the matched
// intent and the value of the parameter could be identified during intent
// matching.
google.protobuf.Value resolved = 2;
}

@ -1,25 +0,0 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "prompt_proto",
srcs = [
"prompt.proto",
"simple.proto",
"suggestion.proto",
],
deps = [
"//google/actions/sdk/v2/conversation/prompt/content:content_proto",
],
)
##############################################################################
# Node.js
##############################################################################

@ -1,32 +0,0 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "content_proto",
srcs = [
"canvas.proto",
"card.proto",
"collection.proto",
"content.proto",
"image.proto",
"link.proto",
"list.proto",
"media.proto",
"table.proto",
],
deps = [
"@com_google_protobuf//:duration_proto",
"@com_google_protobuf//:struct_proto",
],
)
##############################################################################
# Node.js
##############################################################################

@ -1,50 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.conversation;
import "google/protobuf/struct.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "CanvasProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Represents an Interactive Canvas response to be sent to the user.
// This can be used in conjunction with the "first_simple" field in the
// containing prompt to speak to the user in addition to displaying a
// interactive canvas response. The maximum size of the response is 50k bytes.
message Canvas {
// URL of the interactive canvas web app to load. If not set, the url from
// current active canvas will be reused.
string url = 1;
// Optional. JSON data to be passed through to the immersive experience
// web page as an event.
// If the "override" field in the containing prompt is "false" data values
// defined in this Canvas prompt will be added after data values defined in
// previous Canvas prompts.
repeated google.protobuf.Value data = 4;
// Optional. Default value: false.
bool suppress_mic = 3;
// If `true` the canvas application occupies the full screen and won't
// have a header at the top. A toast message will also be displayed on the
// loading screen that includes the Action's display name, the developer's
// name, and instructions for exiting the Action. Default value: `false`.
bool enable_full_screen = 8;
}

@ -1,51 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.conversation;
import "google/actions/sdk/v2/conversation/prompt/content/image.proto";
import "google/actions/sdk/v2/conversation/prompt/content/link.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "CardProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// A basic card for displaying some information, e.g. an image and/or text.
message Card {
// Overall title of the card.
// Optional.
string title = 1;
// Optional.
string subtitle = 2;
// Body text of the card.
// Supports a limited set of markdown syntax for formatting.
// Required, unless image is present.
string text = 3;
// A hero image for the card. The height is fixed to 192dp.
// Optional.
Image image = 4;
// How the image background will be filled. Optional.
Image.ImageFill image_fill = 5;
// Button.
// Optional.
Link button = 6;
}

@ -1,46 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.conversation;
import "google/actions/sdk/v2/conversation/prompt/content/image.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "CollectionProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// A card for presenting a collection of options to select from.
message Collection {
// An item in the collection
message CollectionItem {
// Required. The NLU key that matches the entry key name in the associated
// Type.
string key = 1;
}
// Title of the collection. Optional.
string title = 1;
// Subtitle of the collection. Optional.
string subtitle = 2;
// min: 2 max: 10
repeated CollectionItem items = 3;
// How the image backgrounds of collection items will be filled. Optional.
Image.ImageFill image_fill = 4;
}

@ -1,57 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.conversation;
import "google/actions/sdk/v2/conversation/prompt/content/canvas.proto";
import "google/actions/sdk/v2/conversation/prompt/content/card.proto";
import "google/actions/sdk/v2/conversation/prompt/content/collection.proto";
import "google/actions/sdk/v2/conversation/prompt/content/image.proto";
import "google/actions/sdk/v2/conversation/prompt/content/list.proto";
import "google/actions/sdk/v2/conversation/prompt/content/media.proto";
import "google/actions/sdk/v2/conversation/prompt/content/table.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "ContentProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Content to be shown.
message Content {
// Content.
oneof content {
// A basic card.
Card card = 1;
// An image.
Image image = 2;
// Table card.
Table table = 3;
// Response indicating a set of media to be played.
Media media = 4;
// A response to be used for interactive canvas experience.
Canvas canvas = 5 [deprecated = true];
// A card presenting a collection of options to select from.
Collection collection = 6;
// A card presenting a list of options to select from.
List list = 7;
}
}

@ -1,64 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.conversation;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "ImageProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// An image displayed in the card.
message Image {
// Possible image display options for affecting the presentation of the image.
// This should be used for when the image's aspect ratio does not match the
// image container's aspect ratio.
enum ImageFill {
// Unspecified image fill.
UNSPECIFIED = 0;
// Fill the gaps between the image and the image container with gray bars.
GRAY = 1;
// Fill the gaps between the image and the image container with white bars.
WHITE = 2;
// 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.
CROPPED = 3;
}
// The source url of the image. Images can be JPG, PNG and GIF (animated and
// non-animated). For example,`https://www.agentx.com/logo.png`. Required.
string url = 1;
// A text description of the image to be used for accessibility, e.g. screen
// readers.
// Required.
string alt = 2;
// The height of the image in pixels.
// Optional.
int32 height = 3;
// The width of the image in pixels.
// Optional.
int32 width = 4;
}

@ -1,51 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.conversation;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "LinkProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Link content.
message Link {
// Name of the link
string name = 1;
// What happens when a user opens the link
OpenUrl open = 2;
}
// Action taken when a user opens a link.
message OpenUrl {
// The url field which could be any of:
// - http/https urls for opening an App-linked App or a webpage
string url = 1;
// Indicates a hint for the url type.
UrlHint hint = 2;
}
// Different types of url hints.
enum UrlHint {
// Unspecified
LINK_UNSPECIFIED = 0;
// URL that points directly to AMP content, or to a canonical URL
// which refers to AMP content via <link rel="amphtml">.
AMP = 1;
}

@ -1,41 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.conversation;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "ListProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// A card for presenting a list of options to select from.
message List {
// An item in the list
message ListItem {
// Required. The NLU key that matches the entry key name in the associated
// Type.
string key = 1;
}
// Title of the list. Optional.
string title = 1;
// Subtitle of the list. Optional.
string subtitle = 2;
// min: 2 max: 30
repeated ListItem items = 3;
}

@ -1,97 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.conversation;
import "google/actions/sdk/v2/conversation/prompt/content/image.proto";
import "google/protobuf/duration.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "MediaProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Represents one media object.
// Contains information about the media, such as name, description, url, etc.
message Media {
// Media type of this response.
enum MediaType {
// Unspecified media type.
MEDIA_TYPE_UNSPECIFIED = 0;
// Audio file.
AUDIO = 1;
// Response to acknowledge a media status report.
MEDIA_STATUS_ACK = 2;
}
// Optional media control types the media response can support
enum OptionalMediaControls {
// Unspecified value
OPTIONAL_MEDIA_CONTROLS_UNSPECIFIED = 0;
// Paused event. Triggered when user pauses the media.
PAUSED = 1;
// Stopped event. Triggered when user exits out of 3p session during media
// play.
STOPPED = 2;
}
// Media type.
MediaType media_type = 8;
// Start offset of the first media object.
google.protobuf.Duration start_offset = 5;
// Optional media control types this media response session can support.
// If set, request will be made to 3p when a certain media event happens.
// If not set, 3p must still handle two default control type, FINISHED and
// FAILED.
repeated OptionalMediaControls optional_media_controls = 6;
// List of Media Objects
repeated MediaObject media_objects = 7;
}
// Represents a single media object
message MediaObject {
// Name of this media object.
string name = 1;
// Description of this media object.
string description = 2;
// The url pointing to the media content.
string url = 3;
// Image to show with the media card.
MediaImage image = 4;
}
// Image to show with the media card.
message MediaImage {
// Image.
oneof image {
// A large image, such as the cover of the album, etc.
Image large = 1;
// A small image icon displayed on the right from the title.
// It's resized to 36x36 dp.
Image icon = 2;
}
}

@ -1,92 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.conversation;
import "google/actions/sdk/v2/conversation/prompt/content/image.proto";
import "google/actions/sdk/v2/conversation/prompt/content/link.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "TableProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// A table card for displaying a table of text.
message Table {
// Overall title of the table. Optional but must be set if subtitle is set.
string title = 1;
// Subtitle for the table. Optional.
string subtitle = 2;
// Image associated with the table. Optional.
Image image = 4;
// Headers and alignment of columns.
repeated TableColumn columns = 5;
// Row data of the table. The first 3 rows are guaranteed to be shown but
// others might be cut on certain surfaces. Please test with the simulator to
// see which rows will be shown for a given surface. On surfaces that support
// the WEB_BROWSER capability, you can point the user to
// a web page with more data.
repeated TableRow rows = 6;
// Button.
Link button = 7;
}
// Describes a column in a table.
message TableColumn {
// The alignment of the content within the cell.
enum HorizontalAlignment {
// Unspecified horizontal alignment.
UNSPECIFIED = 0;
// Leading edge of the cell. This is the default.
LEADING = 1;
// Content is aligned to the center of the column.
CENTER = 2;
// Content is aligned to the trailing edge of the column.
TRAILING = 3;
}
// Header text for the column.
string header = 1;
// Horizontal alignment of content w.r.t column. If unspecified, content
// will be aligned to the leading edge.
HorizontalAlignment align = 2;
}
// Describes a cell in a row.
message TableCell {
// Text content of the cell.
string text = 1;
}
// Describes a row in the table.
message TableRow {
// Cells in this row. The first 3 cells are guaranteed to be shown but
// others might be cut on certain surfaces. Please test with the simulator
// to see which cells will be shown for a given surface.
repeated TableCell cells = 1;
// Indicates whether there should be a divider after each row.
bool divider = 2;
}

@ -1,81 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.conversation;
import "google/actions/sdk/v2/conversation/prompt/content/canvas.proto";
import "google/actions/sdk/v2/conversation/prompt/content/content.proto";
import "google/actions/sdk/v2/conversation/prompt/content/link.proto";
import "google/actions/sdk/v2/conversation/prompt/simple.proto";
import "google/actions/sdk/v2/conversation/prompt/suggestion.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "PromptProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Represent a response to a user.
message Prompt {
// Optional. Mode for how this messages should be merged with previously
// defined messages.
// "false" will clear all previously defined messages (first and last
// simple, content, suggestions link and canvas) and add messages defined in
// this prompt.
// "true" will add messages defined in this prompt to messages defined in
// previous responses. Setting this field to "true" will also enable appending
// to some fields inside Simple prompts, the Suggestion prompt and the Canvas
// prompt (part of the Content prompt). The Content and Link messages will
// always be overwritten if defined in the prompt.
// Default value is "false".
bool append = 1 [deprecated = true];
// Optional. Mode for how this messages should be merged with previously
// defined messages.
// "true" clears all previously defined messages (first and last
// simple, content, suggestions link and canvas) and adds messages defined in
// this prompt.
// "false" adds messages defined in this prompt to messages defined in
// previous responses. Leaving this field to "false" also enables
// appending to some fields inside Simple prompts, the Suggestions prompt,
// and the Canvas prompt (part of the Content prompt). The Content and Link
// messages are always overwritten if defined in the prompt. Default
// value is "false".
bool override = 8;
// Optional. The first voice and text-only response.
Simple first_simple = 2;
// Optional. A content like a card, list or media to display to the user.
Content content = 3;
// Optional. The last voice and text-only response.
Simple last_simple = 4;
// Optional. Suggestions to be displayed to the user which will always appear
// at the end of the response.
// If the "override" field in the containing prompt is "false", the titles
// defined in this field will be added to titles defined in any previously
// defined suggestions prompts and duplicate values will be removed.
repeated Suggestion suggestions = 5;
// Optional. An additional suggestion chip that can link out to the associated app
// or site.
// The chip will be rendered with the title "Open <name>". Max 20 chars.
Link link = 6;
// Optional. Represents a Interactive Canvas response to be sent to the user.
Canvas canvas = 9;
}

@ -1,38 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.conversation;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "SimpleProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Represents a simple prompt to be send to a user.
message Simple {
// Optional. Represents the speech to be spoken to the user. Can be SSML or
// text to speech.
// If the "override" field in the containing prompt is "true", the speech
// defined in this field replaces the previous Simple prompt's speech.
string speech = 1;
// Optional text to display in the chat bubble. If not given, a display
// rendering of the speech field above will be used. Limited to 640
// chars.
// If the "override" field in the containing prompt is "true", the text
// defined in this field replaces to the previous Simple prompt's text.
string text = 2;
}

@ -1,31 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.conversation;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "SuggestionProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Input suggestion to be presented to the user.
message Suggestion {
// Required. The text shown in the suggestion chip. When tapped, this text will be
// posted back to the conversation verbatim as if the user had typed it.
// Each title must be unique among the set of suggestion chips.
// Max 25 chars
string title = 1;
}

@ -1,92 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.conversation;
import "google/actions/sdk/v2/conversation/prompt/prompt.proto";
import "google/protobuf/struct.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "SceneProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Represents the current status of slot filling.
enum SlotFillingStatus {
// Fallback value when the usage field is not populated.
UNSPECIFIED = 0;
// The slots have been initialized but slot filling has not started.
INITIALIZED = 1;
// The slot values are being collected.
COLLECTING = 2;
// All slot values are final and cannot be changed.
FINAL = 4;
}
// Represents a slot.
message Slot {
// Represents the mode of a slot, that is, if it is required or not.
enum SlotMode {
// Fallback value when the usage field is not populated.
MODE_UNSPECIFIED = 0;
// Indicates that the slot is not required to complete slot filling.
OPTIONAL = 1;
// Indicates that the slot is required to complete slot filling.
REQUIRED = 2;
}
// Represents the status of a slot.
enum SlotStatus {
// Fallback value when the usage field is not populated.
SLOT_UNSPECIFIED = 0;
// Indicates that the slot does not have any values. This status cannot be
// modified through the response.
EMPTY = 1;
// Indicates that the slot value is invalid. This status can be set
// through the response.
INVALID = 2;
// Indicates that the slot has a value. This status cannot be modified
// through the response.
FILLED = 3;
}
// The mode of the slot (required or optional). Can be set by developer.
SlotMode mode = 1;
// The status of the slot.
SlotStatus status = 2;
// The value of the slot. Changing this value in the response, will
// modify the value in slot filling.
google.protobuf.Value value = 3;
// Indicates if the slot value was collected on the last turn.
// This field is read-only.
bool updated = 4;
// Optional. This prompt is sent to the user when needed to fill a required
// slot. This prompt overrides the existing prompt defined in the console.
// This field is not included in the webhook request.
Prompt prompt = 5;
}

@ -1,59 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "DataFileProto";
option java_package = "com.google.actions.sdk.v2";
// Wrapper for repeated data file. Repeated fields cannot exist in a oneof.
message DataFiles {
// Multiple data files.
repeated DataFile data_files = 1;
}
// Represents a single file which contains unstructured data. Examples include
// image files, audio files, and cloud function source code.
message DataFile {
// Relative path of the data file from the project root in the SDK file
// structure.
// Allowed file paths:
// - Images: `resources/images/{multiple
// directories}?/{ImageName}.{extension}`
// - Audio: `resources/audio/{multiple
// directories}?/{AudioFileName}.{extension}`
// - Inline Cloud Function Code: `webhooks/{WebhookName}.zip`
// Allowed extensions:
// - Images: `png`, `jpg`, `jpeg`
// - Audio: `mp3`, `mpeg`
// - Inline Cloud Functions: `zip`
string file_path = 1;
// Required. The content type of this asset. Example: `text/html`. The content
// type must comply with the specification
// (http://www.w3.org/Protocols/rfc1341/4_Content-Type.html).
// Cloud functions must be in zip format and the content type should
// be `application/zip;zip_type=cloud_function`. The zip_type parameter
// indicates that the zip is for a cloud function.
string content_type = 2;
// Content of the data file. Examples would be raw bytes of images, audio
// files, or cloud function zip format.
// There is 10 MB strict limit on the payload size.
bytes payload = 3;
}

@ -1,246 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
import "google/actions/sdk/v2/conversation/intent.proto";
import "google/actions/sdk/v2/conversation/prompt/prompt.proto";
import "google/actions/sdk/v2/conversation/scene.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/timestamp.proto";
import "google/rpc/status.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "EventLogsProto";
option java_package = "com.google.actions.sdk.v2";
// Contains information about execution event which happened during processing
// Actions Builder conversation request. For an overview of the stages involved
// in a conversation request, see
// https://developers.google.com/assistant/conversational/actions.
message ExecutionEvent {
// Timestamp when the event happened.
google.protobuf.Timestamp event_time = 1;
// State of the execution during this event.
ExecutionState execution_state = 2;
// Resulting status of particular execution step.
google.rpc.Status status = 3;
// Detailed information specific to different of events that may be involved
// in processing a conversation round. The field set here defines the type of
// this event.
oneof EventData {
// User input handling event.
UserConversationInput user_input = 4;
// Intent matching event.
IntentMatch intent_match = 5;
// Condition evaluation event.
ConditionsEvaluated conditions_evaluated = 6;
// OnSceneEnter execution event.
OnSceneEnter on_scene_enter = 7;
// Webhook request dispatch event.
WebhookRequest webhook_request = 8;
// Webhook response receipt event.
WebhookResponse webhook_response = 9;
// Webhook-initiated transition event.
WebhookInitiatedTransition webhook_initiated_transition = 10;
// Slot matching event.
SlotMatch slot_match = 11;
// Slot requesting event.
SlotRequested slot_requested = 12;
// Slot validation event.
SlotValidated slot_validated = 13;
// Form filling event.
FormFilled form_filled = 14;
// Waiting-for-user-input event.
WaitingForUserInput waiting_user_input = 15;
// End-of-conversation event.
EndConversation end_conversation = 16;
}
// List of warnings generated during execution of this Event. Warnings are
// tips for the developer discovered during the conversation request. These
// are usually non-critical and do not halt the execution of the request. For
// example, a warnings might be generated when webhook tries to override a
// custom Type which does not exist. Errors are reported as a failed status
// code, but warnings can be present even when the status is OK.
repeated string warning_messages = 17;
}
// Current state of the execution.
message ExecutionState {
// ID of the scene which is currently active.
string current_scene_id = 1;
// State of the session storage:
// https://developers.google.com/assistant/conversational/storage-session
google.protobuf.Struct session_storage = 2;
// State of the slots filling, if applicable:
// https://developers.google.com/assistant/conversational/scenes#slot_filling
Slots slots = 5;
// Prompt queue:
// https://developers.google.com/assistant/conversational/prompts
repeated google.actions.sdk.v2.conversation.Prompt prompt_queue = 7;
// State of the user storage:
// https://developers.google.com/assistant/conversational/storage-user
google.protobuf.Struct user_storage = 6;
// State of the home storage:
// https://developers.google.com/assistant/conversational/storage-home
google.protobuf.Struct household_storage = 8;
}
// Represents the current state of a the scene's slots.
message Slots {
// The current status of slot filling.
google.actions.sdk.v2.conversation.SlotFillingStatus status = 2;
// The slots associated with the current scene.
map<string, google.actions.sdk.v2.conversation.Slot> slots = 3;
}
// Information related to user input.
message UserConversationInput {
// Type of user input. E.g. keyboard, voice, touch, etc.
string type = 1;
// Original text input from the user.
string original_query = 2;
}
// Information about triggered intent match (global or within a scene):
// https://developers.google.com/assistant/conversational/intents
message IntentMatch {
// Intent id which triggered this interaction.
string intent_id = 1;
// Parameters of intent which triggered this interaction.
map<string, google.actions.sdk.v2.conversation.IntentParameterValue> intent_parameters = 5;
// Name of the handler attached to this interaction.
string handler = 3;
// Scene to which this interaction leads to.
string next_scene_id = 4;
}
// Results of conditions evaluation:
// https://developers.google.com/assistant/conversational/scenes#conditions
message ConditionsEvaluated {
// List of conditions which were evaluated to 'false'.
repeated Condition failed_conditions = 1;
// The first condition which was evaluated to 'true', if any.
Condition success_condition = 2;
}
// Evaluated condition.
message Condition {
// Expression specified in this condition.
string expression = 1;
// Handler name specified in evaluated condition.
string handler = 2;
// Destination scene specified in evaluated condition.
string next_scene_id = 3;
}
// Information about execution of onSceneEnter stage:
// https://developers.google.com/assistant/conversational/scenes#on_enter
message OnSceneEnter {
// Handler name specified in onSceneEnter event.
string handler = 1;
}
// Event triggered by destination scene returned from webhook:
// https://developers.google.com/assistant/conversational/webhooks#transition_scenes
message WebhookInitiatedTransition {
// ID of the scene the transition is leading to.
string next_scene_id = 1;
}
// Information about a request dispatched to the Action webhook:
// https://developers.google.com/assistant/conversational/webhooks#payloads
message WebhookRequest {
// Payload of the webhook request.
string request_json = 1;
}
// Information about a response received from the Action webhook:
// https://developers.google.com/assistant/conversational/webhooks#payloads
message WebhookResponse {
// Payload of the webhook response.
string response_json = 1;
}
// Information about matched slot(s):
// https://developers.google.com/assistant/conversational/scenes#slot_filling
message SlotMatch {
// Parameters extracted by NLU from user input.
map<string, google.actions.sdk.v2.conversation.IntentParameterValue> nlu_parameters = 2;
}
// Information about currently requested slot:
// https://developers.google.com/assistant/conversational/scenes#slot_filling
message SlotRequested {
// Name of the requested slot.
string slot = 1;
// Slot prompt.
google.actions.sdk.v2.conversation.Prompt prompt = 3;
}
// Event which happens after webhook validation was finished for slot(s):
// https://developers.google.com/assistant/conversational/scenes#slot_filling
message SlotValidated {
}
// Event which happens when form is fully filled:
// https://developers.google.com/assistant/conversational/scenes#slot_filling
message FormFilled {
}
// Event which happens when system needs user input:
// https://developers.google.com/assistant/conversational/scenes#input
message WaitingForUserInput {
}
// Event which informs that conversation with agent was ended.
message EndConversation {
}

@ -1,40 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
import "google/actions/sdk/v2/config_file.proto";
import "google/actions/sdk/v2/data_file.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "FilesProto";
option java_package = "com.google.actions.sdk.v2";
// Wrapper for a list of files.
message Files {
// Only one type of files can be sent to the server at a time, config files or
// data files.
oneof file_type {
// List of config files. This includes manifest, settings, interaction model
// resource bundles and more.
ConfigFiles config_files = 1;
// List of data files. This includes image, audio file, cloud function
// source code.
DataFiles data_files = 2;
}
}

@ -1,33 +0,0 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "interactionmodel_proto",
srcs = [
"conditional_event.proto",
"entity_set.proto",
"event_handler.proto",
"global_intent_event.proto",
"intent.proto",
"intent_event.proto",
"scene.proto",
"slot.proto",
],
deps = [
"//google/actions/sdk/v2/interactionmodel/prompt:prompt_proto",
"//google/actions/sdk/v2/interactionmodel/type:type_proto",
"//google/api:field_behavior_proto",
"@com_google_protobuf//:struct_proto",
],
)
##############################################################################
# Node.js
##############################################################################

@ -1,55 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/event_handler.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "ConditionalEventProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Registers events that trigger as the result of a true condition.
message ConditionalEvent {
// Required. Filter condition for this event to trigger. If condition is evaluated to
// true then the associated `handler` will be triggered.
// The following variable references are supported:
// `$session` - To reference data in session storage.
// `$user` - To reference data in user storage.
// The following boolean operators are supported (with examples):
// `&&` - `session.params.counter > 0 && session.params.counter < 100`
// `||` - `session.params.foo == "John" || session.params.counter == "Adam"`
// `!` - `!(session.params.counter == 5)`
// The following comparisons are supported:
// `==`, `!=`, `<`, `>`, `<=`, `>=`
// The following list and string operators are supported (with examples):
// `in` - "Watermelon" in `session.params.fruitList`
// `size` - `size(session.params.fruitList) > 2`
// `substring` - `session.params.fullName.contains("John")`
string condition = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. Destination scene which the conversation should jump to when the associated
// condition is evaluated to true. The state of the current scene is destroyed
// on the transition.
string transition_to_scene = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Event handler which is triggered when the associated condition is evaluated
// to `true`. Should execute before transitioning to the destination scene.
// Useful to generate Prompts in response to events.
EventHandler handler = 3 [(google.api.field_behavior) = OPTIONAL];
}

@ -1,41 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "EntitySetProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Entity sets describe the pre-defined set of entities that the values of
// built-in intent parameters can come from. Entity sets can be referenced from
// entity_set in built-in intent parameters.
message EntitySet {
// An entity a built-in intent parameter value can come from.
message Entity {
// Required. The ID of the entity.
// For a list of built-in-intent parameters and their supported entities,
// see
// https://developers.google.com/assistant/conversational/build/built-in-intents
string id = 1 [(google.api.field_behavior) = REQUIRED];
}
// Required. The list of entities this entity set supports.
repeated Entity entities = 1 [(google.api.field_behavior) = REQUIRED];
}

@ -1,41 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/prompt/static_prompt.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "EventHandlerProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Defines a handler to be executed after an event. Examples of events are
// intent and condition based events in a scene.
message EventHandler {
// Name of the webhook handler to call.
string webhook_handler = 1;
// Prompts can either be inlined or referenced by name.
oneof prompt {
// Inlined static prompt. Can contain references to string resources in
// bundles.
google.actions.sdk.v2.interactionmodel.prompt.StaticPrompt static_prompt = 2;
// Name of the static prompt to invoke.
string static_prompt_name = 3;
}
}

@ -1,45 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/event_handler.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "GlobalIntentEventProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Defines a global intent handler. Global intent events are scoped to the
// entire Actions project and may be overridden by intent handlers in a scene.
// Intent names must be unique within an Actions project.
//
// Global intents can be matched anytime during a session, allowing users to
// access common flows like "get help" or "go back home." They can also be
// used to deep link users into specific flows when they invoke an Action.
//
// Note, the intent name is specified in the name of the file.
message GlobalIntentEvent {
// Optional. Destination scene which the conversation should jump to. The state of the
// current scene is destroyed on the transition.
string transition_to_scene = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Event handler which is triggered when the intent is matched. Should execute
// before transitioning to the destination scene. Useful to generate Prompts
// in response to events.
EventHandler handler = 2 [(google.api.field_behavior) = OPTIONAL];
}

@ -1,85 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/type/class_reference.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "IntentProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Intents map open-ended user input to structured objects. Spoken
// phrases are matched to intents with Google's Natural Language Understanding
// (NLU). Intent matches can trigger events in your conversation design to
// progress the user's conversation.
// The intent name is specified in the name of the file.
message Intent {
// Definition of a parameter which can be used inside training phrases.
message IntentParameter {
// Entity set references for an intent parameter.
message EntitySetReferences {
// A reference to the set of allowed entities for this intent parameter.
message EntitySetReference {
// Required. Identifies the specific collection of entities to be considered for a
// given parameter. The corresponding entity set definition should be
// present in the custom/entitySets/ directory.
string entity_set = 1 [(google.api.field_behavior) = REQUIRED];
}
// Required. Entity set references for an intent parameter.
repeated EntitySetReference entity_set_references = 1 [(google.api.field_behavior) = REQUIRED];
}
// Required. Unique name of the intent parameter. Can be used in conditions and
// responses to reference intent parameters extracted by NLU with
// $intent.params.[name].resolved
string name = 1 [(google.api.field_behavior) = REQUIRED];
// The type of the intent parameter.
oneof parameter_type {
// Optional. Declares the data type of this parameter.
// This should not be set for built-in intents.
google.actions.sdk.v2.interactionmodel.type.ClassReference type = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. References to the sets of allowed entities for this intent parameter.
// Only valid for parameters of a built-in intent. These
// references point to entity sets in the 'custom/entitySets' directory.
EntitySetReferences entity_set_references = 3 [(google.api.field_behavior) = OPTIONAL];
}
}
// The list of parameters within the training phrases. All parameters must be
// defined here to be used in the training phrase.
repeated IntentParameter parameters = 1;
// Training phrases allow Googles NLU to automatically match intents with
// user input. The more unique phrases that are provided, the better chance
// this intent will be matched.
// The following is the format of training phrase part which are annotated.
// Note that `auto` field is optional and the default behavior when `auto` is
// not specified is equivalent to `auto=false`.
// `($<paramName> '<sample text>' auto=<true or false>)`
// `auto = true` means the part was auto annotated by NLU.
// `auto = false` means the part was annotated by the user. This is the
// default when auto is not specified.
// Example:
// "Book a flight from ($source 'San Francisco' auto=false) to ($dest
// 'Vancouver')"
repeated string training_phrases = 2;
}

@ -1,40 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/event_handler.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "IntentEventProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Registers Events which trigger as the result of an intent match.
message IntentEvent {
// Required. Intent triggering the event.
string intent = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. Destination scene which the conversation should jump to. The state of the
// current scene is destroyed on the transition.
string transition_to_scene = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Event handler which is triggered when the intent is matched. Should execute
// before transitioning to the destination scene. Useful to generate prompts
// in response to events.
EventHandler handler = 3 [(google.api.field_behavior) = OPTIONAL];
}

@ -1,27 +0,0 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "prompt_proto",
srcs = [
"static_prompt.proto",
"static_simple_prompt.proto",
"suggestion.proto",
"surface_capabilities.proto",
],
deps = [
"//google/actions/sdk/v2/interactionmodel/prompt/content:content_proto",
"//google/api:field_behavior_proto",
],
)
##############################################################################
# Node.js
##############################################################################

@ -1,34 +0,0 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "content_proto",
srcs = [
"static_canvas_prompt.proto",
"static_card_prompt.proto",
"static_collection_browse_prompt.proto",
"static_collection_prompt.proto",
"static_content_prompt.proto",
"static_image_prompt.proto",
"static_link_prompt.proto",
"static_list_prompt.proto",
"static_media_prompt.proto",
"static_table_prompt.proto",
],
deps = [
"//google/api:field_behavior_proto",
"@com_google_protobuf//:duration_proto",
"@com_google_protobuf//:struct_proto",
],
)
##############################################################################
# Node.js
##############################################################################

@ -1,54 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.prompt;
import "google/api/field_behavior.proto";
import "google/protobuf/struct.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticCanvasPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Represents a Interactive Canvas response to be sent to the user.
// This can be used in conjunction with the `first_simple` field in the
// containing prompt to speak to the user in addition to displaying a
// interactive canvas response.
message StaticCanvasPrompt {
// Required. URL of the web view to load.
string url = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. JSON data to be passed through to the immersive experience web page as an
// event. If the `override` field in the containing prompt is `false` data
// values defined in this Canvas prompt will be added after data values
// defined in previous Canvas prompts.
repeated google.protobuf.Value data = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. A true value means that the mic won't be opened for capturing input after
// this immersive response is presented to the user.
bool suppress_mic = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. If `true`, conversation related metadata is included and send back to the
// canvas application.
bool send_state_data_to_canvas_app = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. If `true` the canvas application occupies the full screen and won't
// have a header at the top. A toast message will also be displayed on the
// loading screen that includes the Action's display name, the developer's
// name, and instructions for exiting the Action. Default value: `false`.
bool enable_full_screen = 6 [(google.api.field_behavior) = OPTIONAL];
}

@ -1,48 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_link_prompt.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticCardPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// A basic card for displaying some information, e.g. an image and/or text.
message StaticCardPrompt {
// Optional. Overall title of the card.
string title = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Subtitle of the card.
string subtitle = 2 [(google.api.field_behavior) = OPTIONAL];
// Required. Body text of the card which is needed unless image is present. Supports a
// limited set of markdown syntax for formatting.
string text = 3 [(google.api.field_behavior) = REQUIRED];
// Optional. A hero image for the card. The height is fixed to 192dp.
StaticImagePrompt image = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. How the image background will be filled.
StaticImagePrompt.ImageFill image_fill = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. A clickable button to be shown in the Card.
StaticLinkPrompt button = 6 [(google.api.field_behavior) = OPTIONAL];
}

@ -1,56 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_link_prompt.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticCollectionBrowsePromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Presents a set of web documents as a collection of large-tile items. Items
// may be selected to launch their associated web document in a web viewer.
message StaticCollectionBrowsePrompt {
// Item in the collection.
message CollectionBrowseItem {
// Required. Title of the collection item.
string title = 1 [(google.api.field_behavior) = REQUIRED];
// Description of the collection item.
string description = 2;
// Footer text for the collection item, displayed below the description.
// Single line of text, truncated with an ellipsis.
string footer = 3;
// Image for the collection item.
StaticImagePrompt image = 4;
// Required. URI to open if the item selected.
OpenUrl open_uri_action = 5 [(google.api.field_behavior) = REQUIRED];
}
// Items in the browse collection. The list size should be in the range [2,
// 10].
repeated CollectionBrowseItem items = 1;
// Image display option for images in the collection.
StaticImagePrompt.ImageFill image_fill = 2;
}

@ -1,59 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticCollectionPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// A card for presenting a collection of options to select from.
message StaticCollectionPrompt {
// An item in the collection.
message CollectionItem {
// Required. The NLU key that matches the entry key name in the associated
// Type. When item tapped, this key will be posted back as a select option
// parameter.
string key = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Title of the item. When tapped, this text will be
// posted back to the conversation verbatim as if the user had typed it.
// Each title must be unique among the set of items.
string title = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. Body text of the item.
string description = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Item image.
StaticImagePrompt image = 4 [(google.api.field_behavior) = OPTIONAL];
}
// Optional. Title of the collection.
string title = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Subtitle of the collection.
string subtitle = 2 [(google.api.field_behavior) = OPTIONAL];
// Required. Collection items.
repeated CollectionItem items = 3 [(google.api.field_behavior) = REQUIRED];
// Optional. Type of image display option.
StaticImagePrompt.ImageFill image_fill = 4 [(google.api.field_behavior) = OPTIONAL];
}

@ -1,57 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_card_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_collection_browse_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_collection_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_list_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_media_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_table_prompt.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticContentPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// A placeholder for the Content part of a StaticPrompt.
message StaticContentPrompt {
// Only one type of content can be present in a Prompt.
oneof content {
// A basic card.
StaticCardPrompt card = 1;
// An image.
StaticImagePrompt image = 2;
// Table card.
StaticTablePrompt table = 3;
// Response indicating a set of media to be played.
StaticMediaPrompt media = 4;
// A card for presenting a list of options to select from.
StaticListPrompt list = 5;
// A card presenting a list of options to select from.
StaticCollectionPrompt collection = 6;
// A card presenting a collection of web pages to open.
StaticCollectionBrowsePrompt collection_browse = 7;
}
}

@ -1,63 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.prompt;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticImagePromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// An image displayed in the card.
message StaticImagePrompt {
// Possible image display options for affecting the presentation of the image.
// This should be used for when the image's aspect ratio does not match the
// image container's aspect ratio.
enum ImageFill {
// ImageFill unspecified.
UNSPECIFIED = 0;
// Fill the gaps between the image and the image container with gray bars.
GRAY = 1;
// Fill the gaps between the image and the image container with white bars.
WHITE = 2;
// 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.
CROPPED = 3;
}
// Required. The source url of the image. Images can be JPG, PNG and GIF (animated and
// non-animated). For example,`https://www.agentx.com/logo.png`.
string url = 1 [(google.api.field_behavior) = REQUIRED];
// Required. A text description of the image to be used for accessibility, e.g. screen
// readers.
string alt = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. The height of the image in pixels.
int32 height = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. The width of the image in pixels.
int32 width = 4 [(google.api.field_behavior) = OPTIONAL];
}

@ -1,52 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.prompt;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticLinkPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Defines a link which will be displayed as a suggestion chip and can be opened
// by the user.
message StaticLinkPrompt {
// Name of the link
string name = 1;
// Defines behavior when the user opens the link.
OpenUrl open = 2;
}
// Defines behavior when the user opens the link.
message OpenUrl {
// The url field which could be any of:
// - http/https urls for opening an App-linked App or a webpage
string url = 1;
// Indicates a hint for the url type.
UrlHint hint = 2;
}
// Different types of url hints.
enum UrlHint {
// Unspecified
HINT_UNSPECIFIED = 0;
// URL that points directly to AMP content, or to a canonical URL
// which refers to AMP content via `<link rel="amphtml">`.
AMP = 1;
}

@ -1,55 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticListPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// A card for presenting a list of options to select from.
message StaticListPrompt {
// An item in the list.
message ListItem {
// Required. The NLU key that matches the entry key name in the associated type. When
// item tapped, this key will be posted back as a select option parameter.
string key = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Title of the item. When tapped, this text will be posted back to the
// conversation verbatim as if the user had typed it. Each title must be
// unique among the set of items.
string title = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. Body text of the item.
string description = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Item image.
StaticImagePrompt image = 4 [(google.api.field_behavior) = OPTIONAL];
}
// Optional. Title of the list.
string title = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Subtitle of the list.
string subtitle = 2 [(google.api.field_behavior) = OPTIONAL];
// Required. List items.
repeated ListItem items = 3 [(google.api.field_behavior) = REQUIRED];
}

@ -1,112 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto";
import "google/protobuf/duration.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticMediaPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Contains information about the media, such as name, description, url, etc.
// Next id: 11
message StaticMediaPrompt {
// Media type of this response.
enum MediaType {
// UNSPECIFIED value
MEDIA_TYPE_UNSPECIFIED = 0;
// Audio file.
AUDIO = 1;
// Response to acknowledge a media status report.
MEDIA_STATUS_ACK = 2;
}
// Media control types the media response can supported optionally
enum OptionalMediaControls {
// Unspecified value
OPTIONAL_MEDIA_CONTROLS_UNSPECIFIED = 0;
// Paused event. Triggered when user pauses the media.
PAUSED = 1;
// Stopped event. Triggered when user exit out 3p session during media play.
STOPPED = 2;
}
// The types of repeat mode for a list of media objects.
enum RepeatMode {
// Equivalent to OFF.
REPEAT_MODE_UNSPECIFIED = 0;
// End media session at the end of the last media object.
OFF = 1;
// Loop to the beginning of the first media object when the end of the last
// media object is reached.
ALL = 2;
}
// Media type of this response.
MediaType media_type = 8;
// Start offset of the first media object.
google.protobuf.Duration start_offset = 5;
// Optional media control types this media response session can support.
// If set, request will be made to 3p when a certain media event happens.
// If not set, 3p must still handle two default control type, FINISHED and
// FAILED.
repeated OptionalMediaControls optional_media_controls = 6;
// List of media objects.
repeated MediaObject media_objects = 7;
// Repeat mode for the list of Media Objects.
RepeatMode repeat_mode = 9;
}
// Represents a single media object.
message MediaObject {
// Name of this media object.
string name = 1;
// Description of this media object.
string description = 2;
// The url pointing to the media content.
string url = 3;
// Image to show with the media card.
MediaImage image = 4;
}
// Image to be shown inside a MediaPrompt.
message MediaImage {
// Only one type of MediaImage is allowed.
oneof image {
// A large image, such as the cover of the album, etc.
StaticImagePrompt large = 1;
// A small image icon displayed on the right from the title.
// It's resized to 36x36 dp.
StaticImagePrompt icon = 2;
}
}

@ -1,93 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_link_prompt.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticTablePromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// A table card for displaying a table of text.
message StaticTablePrompt {
// Optional. Overall title of the table. Must be set if subtitle is set.
string title = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Subtitle for the table.
string subtitle = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Image associated with the table.
StaticImagePrompt image = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Headers and alignment of columns.
repeated TableColumn columns = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Row data of the table. The first 3 rows are guaranteed to be shown but
// others might be cut on certain surfaces. Please test with the simulator to
// see which rows will be shown for a given surface. On surfaces that support
// the `WEB_BROWSER` capability, you can point the user to
// a web page with more data.
repeated TableRow rows = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. Button.
StaticLinkPrompt button = 6 [(google.api.field_behavior) = OPTIONAL];
}
// Describes a column in the table.
message TableColumn {
// The alignment of the content within the cell.
enum HorizontalAlignment {
// HorizontalAlignment unspecified.
UNSPECIFIED = 0;
// Leading edge of the cell. This is the default.
LEADING = 1;
// Content is aligned to the center of the column.
CENTER = 2;
// Content is aligned to the trailing edge of the column.
TRAILING = 3;
}
// Header text for the column.
string header = 1;
// Horizontal alignment of content w.r.t column. If unspecified, content
// will be aligned to the leading edge.
HorizontalAlignment align = 2;
}
// Describes a cell in a row.
message TableCell {
// Text content of the cell.
string text = 1;
}
// Describes a row in the table.
message TableRow {
// Cells in this row. The first 3 cells are guaranteed to be shown but
// others might be cut on certain surfaces. Please test with the simulator
// to see which cells will be shown for a given surface.
repeated TableCell cells = 1;
// Indicates whether there should be a divider after each row.
bool divider = 2;
}

@ -1,96 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_canvas_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_content_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_link_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/static_simple_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/suggestion.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/surface_capabilities.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Represents a list of prompt candidates, one of which will be selected as the
// prompt to be shown in the response to the user.
// **This message is localizable.**
message StaticPrompt {
// Represents a static prompt candidate.
message StaticPromptCandidate {
// Represents structured responses to send to the user, such as text,
// speech, cards, canvas data, suggestion chips, etc.
message StaticPromptResponse {
// Optional. The first voice and text-only response.
StaticSimplePrompt first_simple = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. A content like a card, list or media to display to the user.
StaticContentPrompt content = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. The last voice and text-only response.
StaticSimplePrompt last_simple = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Suggestions to be displayed to the user which will always
// appear at the end of the response. If the `append` field in the
// containing prompt is `true` the titles defined in this field will be
// added to titles defined in any previously defined suggestions prompts
// and duplicate values will be removed.
repeated Suggestion suggestions = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. An additional suggestion chip that can link out to the associated app
// or site.
// The chip will be rendered with the title "Open <name>". Max 20 chars.
StaticLinkPrompt link = 6 [(google.api.field_behavior) = OPTIONAL];
// Optional. Mode for how this messages should be merged with previously defined
// messages.
// `true` will clear all previously defined messages (first and last
// simple, content, suggestions link and canvas) and add messages defined
// in this prompt. `false` will add messages defined in this prompt to
// messages defined in previous responses. Setting this field to `false`
// will also enable appending to some fields inside Simple prompts, the
// Suggestions prompt and the Canvas prompt (part of the Content prompt).
// The Content and Link messages will always be overwritten if defined in
// the prompt. Default value is `false`.
bool override = 7 [(google.api.field_behavior) = OPTIONAL];
// A response to be used for interactive canvas experience.
StaticCanvasPrompt canvas = 8;
}
// Optional. The criteria for whether this prompt matches a request. If the selector
// is empty, this prompt will always be triggered.
Selector selector = 1 [(google.api.field_behavior) = OPTIONAL];
// The prompt response associated with the selector.
StaticPromptResponse prompt_response = 2;
}
// Defines the criteria for whether a prompt matches a request.
message Selector {
// The set of required surface capabilities.
SurfaceCapabilities surface_capabilities = 1;
}
// The list of candidate prompts to be sent to the client. Each prompt has a
// selector to determine when it can be used. The first selector that matches
// a request will be sent and the rest will be ignored.
repeated StaticPromptCandidate candidates = 1;
}

@ -1,48 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.prompt;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticSimplePromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Represents a simple prompt to be send to a user.
message StaticSimplePrompt {
// Represents a variant which is part of the simple prompt.
message Variant {
// Optional. Represents the speech to be spoken to the user. Can be SSML or text to
// speech.
// By default, speech will be appended to previous Simple prompt's
// speech. If the `override` field in the containing prompt is `true` the
// speech defined in this field will override previous Simple prompt's
// speech.
string speech = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Text to display in the chat bubble. If not given, a display rendering of
// the speech field above will be used. Limited to 640 chars.
// By default, text will be appended to previous Simple prompt's text.
// If the `override` field in the containing prompt is `true` the text
// defined in this field will override previous Simple prompt's text.
string text = 2 [(google.api.field_behavior) = OPTIONAL];
}
// List of possible variants.
repeated Variant variants = 1;
}

@ -1,33 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.prompt;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "SuggestionProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Represents a suggestion chip, a UI element shown to the user for convenience.
message Suggestion {
// Required. The text shown in the suggestion chip. When tapped, this text will be
// posted back to the conversation verbatim as if the user had typed it.
// Each title must be unique among the set of suggestion chips.
// Max 25 chars
string title = 1 [(google.api.field_behavior) = REQUIRED];
}

@ -1,54 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.prompt;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "SurfaceCapabilitiesProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Represents the surface the user is using to make a request to the Action.
message SurfaceCapabilities {
// Capabilities the device surface supports at the time of the request.
enum Capability {
// Unspecified surface capability.
UNSPECIFIED = 0;
// Device can speak to the user via text-to-speech or SSML.
SPEECH = 1;
// Device can display rich responses like cards, lists and tables.
RICH_RESPONSE = 2;
// Device can play long form audio media like music and podcasts.
LONG_FORM_AUDIO = 3;
// Device can display a interactive canvas response.
INTERACTIVE_CANVAS = 4;
// Device can use web links in rich responses to open a web browser.
WEB_LINK = 5;
// Device can support saving and fetching home storage.
HOME_STORAGE = 6;
}
// Required. The capabilities of the surface making a request to the Action.
repeated Capability capabilities = 1 [(google.api.field_behavior) = REQUIRED];
}

@ -1,60 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/conditional_event.proto";
import "google/actions/sdk/v2/interactionmodel/event_handler.proto";
import "google/actions/sdk/v2/interactionmodel/intent_event.proto";
import "google/actions/sdk/v2/interactionmodel/slot.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "SceneProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Scene is the basic unit of control flow when designing a conversation. They
// can be chained together with other scenes, generate prompts for the end user,
// and define slots.
// The scene name is specified in the name of the file.
message Scene {
// Handler to invoke when transitioning into this scene.
EventHandler on_enter = 1;
// The list of events that trigger based on intents. These events can
// be triggered at any time after the on_load Handler has been called.
// Important - these events define the set of intents which are scoped to
// this scene and will take precedence over any globally defined events that
// have the same intents or their triggering phrases. Intent names must be
// unique within a scene.
repeated IntentEvent intent_events = 2;
// The list of events to trigger based on conditional statements. These are
// evaluated after the form has been filled or immediately after on_load if
// this scene does not have a form (evaluation is only done once). Only the
// first matching event will be triggered.
repeated ConditionalEvent conditional_events = 3;
// Ordered list of slots. Each slot defines the type of data
// that it will resolve and configuration to customize the experience of this
// resolution (e.g. prompts).
repeated Slot slots = 4;
// Handler called when there is a change in state of a slot not
// caused by updates within another Handler. This allows slots to be
// invalidated, the scene invalidated or other changes to scene state.
EventHandler on_slot_updated = 5;
}

@ -1,133 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/event_handler.proto";
import "google/actions/sdk/v2/interactionmodel/type/class_reference.proto";
import "google/api/field_behavior.proto";
import "google/protobuf/struct.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "SlotProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Configuration for a slot. Slots are single units of data that can be filled
// through natural language (ie. intent parameters), session parameters, and
// other sources.
message Slot {
// A single place where slot prompts are defined.
message PromptSettings {
// Prompt for the slot value itself. Example: "What size did you want?"
EventHandler initial_prompt = 1;
// Prompt to give when the user's input does not match the expected
// value type for the slot for the first time. Example: "Sorry, I
// didn't get that."
EventHandler no_match_prompt1 = 2;
// Prompt to give when the user's input does not match the expected
// value type for the slot for the second time. Example: "Sorry, I
// didn't get that."
EventHandler no_match_prompt2 = 3;
// Prompt to give when the user's input does not match the expected
// value type for the slot for the last time. Example: "Sorry, I
// didn't get that."
EventHandler no_match_final_prompt = 4;
// Prompt to give when the user does not provide an input for the first
// time. Example: "Sorry, I didn't get that."
EventHandler no_input_prompt1 = 5;
// Prompt to give when the user does not provide an input for the second
// time. Example: "Sorry, I didn't get that."
EventHandler no_input_prompt2 = 6;
// Prompt to give when the user does not provide an input for the last
// time. Example: "Sorry, I didn't get that."
EventHandler no_input_final_prompt = 7;
}
// Message describing the commit behavior associated with the slot after it
// has been successfully filled.
message CommitBehavior {
// The session parameter to write the slot value after it is filled. Note
// that nested paths are not currently supported. "$$" is used to write the
// slot value to a session parameter with same name as the slot.
// Eg: write_session_param = "fruit" corresponds to "$session.params.fruit".
// write_session_param = "ticket" corresponds to "$session.params.ticket".
string write_session_param = 1;
}
// Configuration to populate a default value for this slot.
message DefaultValue {
// Optional. The session parameter to be used to initialize the slot value, if it has
// a non-empty value. The type of the value must match the type of the slot.
// Note that nested paths are not currently supported.
// Eg: `session_param = "fruit"` corresponds to `$session.params.fruit`.
// `session_param = "ticket"` corresponds to `$session.params.ticket`.
string session_param = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Constant default value for the slot. This will only be used if a value
// for this slot was not populated through the `session_param`. The
// type for this value must match the type of the slot.
google.protobuf.Value constant = 2 [(google.api.field_behavior) = OPTIONAL];
}
// Required. Name of the slot.
string name = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Declares the data type of this slot.
google.actions.sdk.v2.interactionmodel.type.ClassReference type = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. Indicates whether the slot is required to be filled before
// advancing. Required slots that are not filled will trigger a customizable
// prompt to the user.
bool required = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Registers Prompts for different stages of slot filling.
PromptSettings prompt_settings = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Commit behavior associated with the slot.
CommitBehavior commit_behavior = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. Additional configuration associated with the slot which is
// used for filling the slot. The format of the config is specific to the
// type of the slot. Resource references to user or session parameter can be
// added to this config. This config is needed for filling slots related to
// transactions and user engagement.
//
// Example:
// For a slot of type actions.type.CompletePurchaseValue, the following
// config proposes a digital good order with a reference to a client defined
// session parameter `userSelectedSkuId`:
//
// {
// "@type": "type.googleapis.com/
// google.actions.transactions.v3.CompletePurchaseValueSpec",
// "skuId": {
// "skuType": "SKU_TYPE_IN_APP",
// "id": "$session.params.userSelectedSkuId",
// "packageName": "com.example.company"
// }
// }
google.protobuf.Value config = 6 [(google.api.field_behavior) = OPTIONAL];
// Optional. Configuration to populate a default value for this slot.
DefaultValue default_value = 7 [(google.api.field_behavior) = OPTIONAL];
}

@ -1,28 +0,0 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "type_proto",
srcs = [
"class_reference.proto",
"entity_display.proto",
"free_text_type.proto",
"regular_expression_type.proto",
"synonym_type.proto",
"type.proto",
],
deps = [
"//google/api:field_behavior_proto",
],
)
##############################################################################
# Node.js
##############################################################################

@ -1,36 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.type;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/type";
option java_multiple_files = true;
option java_outer_classname = "ClassReferenceProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.type";
// A reference to a class which is used to declare the type of a field or return
// value. Enums are also a type of class that can be referenced using
// ClassReference.
message ClassReference {
// Required. Name of a built-in type or custom type of the parameter. Examples:
// `PizzaToppings`, `actions.type.Number`
string name = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. Indicates whether the data type represents a list of values.
bool list = 2 [(google.api.field_behavior) = OPTIONAL];
}

@ -1,35 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.type;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/type";
option java_multiple_files = true;
option java_outer_classname = "EntityDisplayProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.type";
// Elements that will be displayed on the canvas once a particular type's entity
// is extracted from a query. Only relevant for canvas enabled apps.
// **This message is localizable.**
message EntityDisplay {
// Optional. Title of the icon.
string icon_title = 1 [(google.api.field_behavior) = OPTIONAL];
// Required. Url of the icon.
string icon_url = 2 [(google.api.field_behavior) = REQUIRED];
}

@ -1,33 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.type;
import "google/actions/sdk/v2/interactionmodel/type/entity_display.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/type";
option java_multiple_files = true;
option java_outer_classname = "FreeTextTypeProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.type";
// Type that matches any text if surrounding words context is close to provided
// training examples.
message FreeTextType {
// Optional. Elements that will be displayed on the canvas once an entity is extracted
// from a query. Only relevant for canvas enabled apps.
EntityDisplay display = 2 [(google.api.field_behavior) = OPTIONAL];
}

@ -1,44 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.type;
import "google/actions/sdk/v2/interactionmodel/type/entity_display.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/type";
option java_multiple_files = true;
option java_outer_classname = "RegularExpressionTypeProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.type";
// Type that matches text by regular expressions.
// **This message is localizable.**
message RegularExpressionType {
// Represents an entity object that contains the regular expression that is
// used for comparison.
message Entity {
// Optional. Elements that will be displayed on the canvas once an entity is
// extracted from a query. Only relevant for canvas enabled apps.
EntityDisplay display = 1 [(google.api.field_behavior) = OPTIONAL];
// Required. Uses RE2 regex syntax (See
// https://github.com/google/re2/wiki/Syntax for more details)
repeated string regular_expressions = 2 [(google.api.field_behavior) = REQUIRED];
}
// Required. Named map of entities which each contain Regex strings.
map<string, Entity> entities = 1 [(google.api.field_behavior) = REQUIRED];
}

@ -1,66 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.type;
import "google/actions/sdk/v2/interactionmodel/type/entity_display.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/type";
option java_multiple_files = true;
option java_outer_classname = "SynonymTypeProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.type";
// Type that matches text by set of synonyms.
message SynonymType {
// Represents a synonym entity field that contains the details of a single
// entry inside the type.
message Entity {
// Optional. The entity display details.
EntityDisplay display = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. The list of synonyms for the entity.
// **This field is localizable.**
repeated string synonyms = 2 [(google.api.field_behavior) = OPTIONAL];
}
// The type of matching that entries in this type will use. This will ensure
// all of the types use the same matching method and allow variation of
// matching for synonym matching (i.e. fuzzy versus exact). If the value is
// `UNSPECIFIED` it will be defaulted to `EXACT_MATCH`.
enum MatchType {
// Defaults to `EXACT_MATCH`.
UNSPECIFIED = 0;
// Looks for an exact match of the synonym or name.
EXACT_MATCH = 1;
// Looser than `EXACT_MATCH`. Looks for similar matches as well as exact
// matches.
FUZZY_MATCH = 2;
}
// Optional. The match type for the synonym.
MatchType match_type = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. When set to true this will match unknown words or phrases based on
// surrounding input and intent training data, such as items that might be
// added to a grocery list.
bool accept_unknown_values = 3 [(google.api.field_behavior) = OPTIONAL];
// Required. Named map of synonym entities.
map<string, Entity> entities = 2 [(google.api.field_behavior) = REQUIRED];
}

@ -1,50 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel.type;
import "google/actions/sdk/v2/interactionmodel/type/free_text_type.proto";
import "google/actions/sdk/v2/interactionmodel/type/regular_expression_type.proto";
import "google/actions/sdk/v2/interactionmodel/type/synonym_type.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/type";
option java_multiple_files = true;
option java_outer_classname = "TypeProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.type";
// Declaration of a custom type, as opposed to built-in types. Types can be
// assigned to slots in a scene or parameters of an intent's training phrases.
// Practically, Types can be thought of as enums.
// Note, type name is specified in the name of the file.
message Type {
// Selection of sub type based on the type of matching to be done.
oneof sub_type {
// Synonyms type, which is essentially an enum.
SynonymType synonym = 1;
// Regex type, allows regular expression matching.
RegularExpressionType regular_expression = 2;
// FreeText type.
FreeTextType free_text = 3;
}
// Set of exceptional words/phrases that shouldn't be matched by type.
// Note: If word/phrase is matched by the type but listed as an exclusion it
// won't be returned in parameter extraction result.
// **This field is localizable.**
repeated string exclusions = 4;
}

@ -1,92 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
import "google/actions/sdk/v2/theme_customization.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "LocalizedSettingsProto";
option java_package = "com.google.actions.sdk.v2";
// Represents settings of an Actions project that are specific to a user locale.
// In this instance, user means the end user who invokes your Actions.
// **This message is localizable.**
message LocalizedSettings {
// Required. The default display name for this Actions project (if there is no
// translation available)
string display_name = 1 [(google.api.field_behavior) = REQUIRED];
// Required. The pronunciation of the display name to invoke it within a voice
// (spoken) context.
string pronunciation = 2 [(google.api.field_behavior) = REQUIRED];
// Required. The default short description for the Actions project (if there is no
// translation available). 80 character limit.
string short_description = 3 [(google.api.field_behavior) = REQUIRED];
// Required. The default long description for the Actions project (if there is no
// translation available). 4000 character limit.
string full_description = 4 [(google.api.field_behavior) = REQUIRED];
// Required. Small square image, 192 x 192 px.
// This should be specified as a reference to the corresponding image in the
// `resources/images/` directory. For example, `$resources.images.foo` (without the
// extension) for image in `resources/images/foo.jpg`
// When working on a project pulled from Console, the Google-managed URL
// pulled could be used. URLs from external sources are not allowed.
string small_logo_image = 5 [(google.api.field_behavior) = REQUIRED];
// Optional. Large landscape image, 1920 x 1080 px.
// This should be specified as a reference to the corresponding image in the
// `resources/images/` directory. For example, `$resources.images.foo` (without the
// extension) for image in `resources/images/foo.jpg`
// When working on a project pulled from Console, the Google-managed URL
// pulled could be used. URLs from external sources are not allowed.
string large_banner_image = 6 [(google.api.field_behavior) = OPTIONAL];
// Required. The name of the developer to be displayed to users.
string developer_name = 7 [(google.api.field_behavior) = REQUIRED];
// Required. The contact email address for the developer.
string developer_email = 8 [(google.api.field_behavior) = REQUIRED];
// Optional. The terms of service URL.
string terms_of_service_url = 9 [(google.api.field_behavior) = OPTIONAL];
// Required. The Google Assistant voice type that users hear when they interact with
// your Actions. The supported values are "male_1", "male_2", "female_1", and
// "female_2".
string voice = 10 [(google.api.field_behavior) = REQUIRED];
// Optional. The locale for the specified voice. If not specified, this resolves
// to the user's Assistant locale. If specified, the voice locale must have
// the same root language as the locale specified in LocalizedSettings.
string voice_locale = 14 [(google.api.field_behavior) = OPTIONAL];
// Required. The privacy policy URL.
string privacy_policy_url = 11 [(google.api.field_behavior) = REQUIRED];
// Optional. Sample invocation phrases displayed as part of your Actions project's
// description in the Assistant directory. This will help users learn how to
// use it.
repeated string sample_invocations = 12 [(google.api.field_behavior) = OPTIONAL];
// Optional. Theme customizations for visual components of your Actions.
ThemeCustomization theme_customization = 13 [(google.api.field_behavior) = OPTIONAL];
}

@ -1,30 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "ManifestProto";
option java_package = "com.google.actions.sdk.v2";
// Contains information that's "transportable" i.e. not specific to any given
// project and can be moved between projects.
message Manifest {
// Version of the file format. The current file format version is 1.0
// Example: "1.0"
string version = 1;
}

@ -1,44 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
import "google/api/resource.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "ReleaseChannelProto";
option java_package = "com.google.actions.sdk.v2";
// Definition of release channel resource.
message ReleaseChannel {
option (google.api.resource) = {
type: "actions.googleapis.com/ReleaseChannel"
pattern: "projects/{project}/releaseChannels/{release_channel}"
};
// The unique name of the release channel in the following format.
// `projects/{project}/releaseChannels/{release_channel}`.
string name = 1;
// Version currently deployed to this release channel in the following format:
// `projects/{project}/versions/{version}`.
string current_version = 2;
// Version to be deployed to this release channel in the following format:
// `projects/{project}/versions/{version}`.
string pending_version = 3;
}

@ -1,186 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
import "google/actions/sdk/v2/account_linking.proto";
import "google/actions/sdk/v2/localized_settings.proto";
import "google/actions/sdk/v2/surface.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "SettingsProto";
option java_package = "com.google.actions.sdk.v2";
// Represents settings of an Actions project that are not locale specific.
message Settings {
// The category choices for an Actions project.
enum Category {
// Unknown / Unspecified.
CATEGORY_UNSPECIFIED = 0;
// Business and Finance category.
BUSINESS_AND_FINANCE = 2;
// Education and Reference category.
EDUCATION_AND_REFERENCE = 3;
// Food and Drink category.
FOOD_AND_DRINK = 4;
// Games and Trivia category.
GAMES_AND_TRIVIA = 5;
// Health and Fitness category.
HEALTH_AND_FITNESS = 6;
// Kids and Family category.
KIDS_AND_FAMILY = 20;
// Lifestyle category.
LIFESTYLE = 7;
// Local category.
LOCAL = 8;
// Movies and TV category.
MOVIES_AND_TV = 9;
// Music and Audio category.
MUSIC_AND_AUDIO = 10;
// News category,
NEWS = 1;
// Novelty and Humor category.
NOVELTY_AND_HUMOR = 11;
// Productivity category.
PRODUCTIVITY = 12;
// Shopping category.
SHOPPING = 13;
// Social category.
SOCIAL = 14;
// Sports category.
SPORTS = 15;
// Travel and Transportation category.
TRAVEL_AND_TRANSPORTATION = 16;
// Utilities category.
UTILITIES = 17;
// Weather category.
WEATHER = 18;
// Home Control category.
HOME_CONTROL = 19;
}
// Actions project id.
string project_id = 1;
// Locale which is default for the project. For all files except under
// `resources/` with no locale in the path, the localized data is attributed
// to this `default_locale`. For files under `resources/` no locale means that
// the resource is applicable to all locales.
string default_locale = 2;
// Represents the regions where users can invoke your Actions, which is
// based on the user's location of presence. Cannot be set if
// `disabled_regions` is set. If both `enabled_regions` and `disabled_regions`
// are not specified, users can invoke your Actions in all regions. Each
// region is represented using the Canonical Name of Adwords geotargets. See
// https://developers.google.com/adwords/api/docs/appendix/geotargeting
// Examples include:
// - "Germany"
// - "Ghana"
// - "Greece"
// - "Grenada"
// - "United Kingdom"
// - "United States"
// - "United States Minor Outlying Islands"
// - "Uruguay"
repeated string enabled_regions = 3;
// Represents the regions where your Actions are blocked, based on the user's
// location of presence. Cannot be set if `enabled_regions` is set.
// Each region is represented using the Canonical Name of Adwords geotargets.
// See https://developers.google.com/adwords/api/docs/appendix/geotargeting
// Examples include:
// - "Germany"
// - "Ghana"
// - "Greece"
// - "Grenada"
// - "United Kingdom"
// - "United States"
// - "United States Minor Outlying Islands"
// - "Uruguay"
repeated string disabled_regions = 4;
// The category for this Actions project.
Category category = 5;
// Whether Actions can use transactions (for example, making
// reservations, taking orders, etc.). If false, then attempts to use the
// Transactions APIs fail.
bool uses_transactions_api = 6;
// Whether Actions can perform transactions for digital goods.
bool uses_digital_purchase_api = 7;
// Whether Actions use Interactive Canvas.
bool uses_interactive_canvas = 8;
// Whether Actions use the home storage feature.
bool uses_home_storage = 17;
// Whether Actions content is designed for family (DFF).
bool designed_for_family = 9;
// Whether Actions contains alcohol or tobacco related content.
bool contains_alcohol_or_tobacco_content = 11;
// Whether Actions may leave mic open without an explicit prompt during
// conversation.
bool keeps_mic_open = 12;
// The surface requirements that a client surface must support to invoke
// Actions in this project.
SurfaceRequirements surface_requirements = 13;
// Free-form testing instructions for Actions reviewer (for example, account
// linking instructions).
string testing_instructions = 14;
// Localized settings for the project's default locale. Every additional
// locale should have its own settings file in its own directory.
LocalizedSettings localized_settings = 15;
// Allow users to create or link accounts through Google sign-in and/or your
// own OAuth service.
AccountLinking account_linking = 16;
// Android apps selected to acccess Google Play purchases for transactions.
// This is a selection from the Android apps connected to the actions project
// to verify brand ownership and enable additional features. See
// https://developers.google.com/assistant/console/brand-verification for more
// information.
repeated string selected_android_apps = 20;
}

@ -1,64 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "SurfaceProto";
option java_package = "com.google.actions.sdk.v2";
// Contains a set of requirements that the client surface must support to invoke
// Actions in your project.
message SurfaceRequirements {
// The minimum set of capabilities needed to invoke the Actions in your
// project. If the surface is missing any of these, the Action will not be
// triggered.
repeated CapabilityRequirement minimum_requirements = 1;
}
// Represents a requirement about the availability of a given capability.
message CapabilityRequirement {
// Possible set of surface capabilities.
enum SurfaceCapability {
// Unknown / Unspecified.
SURFACE_CAPABILITY_UNSPECIFIED = 0;
// Surface supports audio output.
AUDIO_OUTPUT = 1;
// Surface supports screen/visual output.
SCREEN_OUTPUT = 2;
// Surface supports media response audio.
MEDIA_RESPONSE_AUDIO = 3;
// Surface supports web browsers.
WEB_BROWSER = 4;
// Surface supports account linking.
ACCOUNT_LINKING = 7;
// Surface supports Interactive Canvas.
INTERACTIVE_CANVAS = 8;
// Surface supports home storage.
HOME_STORAGE = 9;
}
// The type of capability.
SurfaceCapability capability = 1;
}

@ -1,83 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "ThemeCustomizationProto";
option java_package = "com.google.actions.sdk.v2";
// Styles applied to cards that are presented to users
message ThemeCustomization {
// Describes how the borders of images should be rendered.
enum ImageCornerStyle {
// Undefined / Unspecified.
IMAGE_CORNER_STYLE_UNSPECIFIED = 0;
// Round corner for image.
CURVED = 1;
// Rectangular corner for image.
ANGLED = 2;
}
// Background color of cards. Acts as a fallback if `background_image` is
// not provided by developers or `background_image` doesn't fit for certain
// surfaces.
// Example usage: #FAFAFA
string background_color = 1;
// Primary theme color of the Action will be used to set text color of title,
// action item background color for Actions on Google cards.
// Example usage: #FAFAFA
string primary_color = 2;
// The font family that will be used for title of cards.
// Supported fonts:
// - Sans Serif
// - Sans Serif Medium
// - Sans Serif Bold
// - Sans Serif Black
// - Sans Serif Condensed
// - Sans Serif Condensed Medium
// - Serif
// - Serif Bold
// - Monospace
// - Cursive
// - Sans Serif Smallcaps
string font_family = 3;
// Border style of foreground image of cards. For example, can be applied on
// the foreground image of a basic card or carousel card.
ImageCornerStyle image_corner_style = 4;
// Landscape mode (minimum 1920x1200 pixels).
// This should be specified as a reference to the corresponding image in the
// `resources/images/` directory. Eg: `$resources.images.foo` (without the
// extension) for image in `resources/images/foo.jpg`
// When working on a project pulled from Console the Google managed url pulled
// could be used.
string landscape_background_image = 5;
// Portrait mode (minimum 1200x1920 pixels).
// This should be specified as a reference to the corresponding image in the
// `resources/images/` directory. Eg: `$resources.images.foo` (without the
// extension) for image in `resources/images/foo.jpg`
// When working on a project pulled from Console the Google managed url pulled
// could be used.
string portrait_background_image = 6;
}

@ -1,46 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "ValidationResultsProto";
option java_package = "com.google.actions.sdk.v2";
// Wrapper for repeated validation result.
message ValidationResults {
// Multiple validation results.
repeated ValidationResult results = 1;
}
// Represents a validation result associated with the app content.
message ValidationResult {
// Context to identify the resource the validation message relates to.
message ValidationContext {
// Language code of the lozalized resource.
// Empty if the error is for non-localized resource.
// See the list of supported languages in
// https://developers.google.com/assistant/console/languages-locales
string language_code = 1;
}
// Holds the validation message.
string validation_message = 1;
// Context to identify the resource the validation message relates to.
ValidationContext validation_context = 2;
}

@ -1,91 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
import "google/api/resource.proto";
import "google/protobuf/timestamp.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "VersionProto";
option java_package = "com.google.actions.sdk.v2";
// Definition of version resource.
message Version {
option (google.api.resource) = {
type: "actions.googleapis.com/Version"
pattern: "projects/{project}/versions/{version}"
};
// Represents the current state of the version.
message VersionState {
// Enum indicating the states that a Version can take. This enum is not yet
// frozen and values maybe added later.
enum State {
// Default value of State.
STATE_UNSPECIFIED = 0;
// The version creation is in progress.
CREATION_IN_PROGRESS = 1;
// The version creation failed.
CREATION_FAILED = 2;
// The version has been successfully created.
CREATED = 3;
// The version is under policy review (aka Approval).
REVIEW_IN_PROGRESS = 4;
// The version has been approved for policy review and can be deployed.
APPROVED = 5;
// The version has been conditionally approved but is pending final
// review. It may be rolled back if final review is denied.
CONDITIONALLY_APPROVED = 6;
// The version has been denied for policy review.
DENIED = 7;
// The version is taken down as entire agent and all versions are taken
// down.
UNDER_TAKEDOWN = 8;
// The version has been deleted.
DELETED = 9;
}
// The current state of the version.
State state = 1;
// User-friendly message for the current state of the version.
string message = 2;
}
// The unique identifier of the version in the following format.
// `projects/{project}/versions/{version}`.
string name = 1;
// The current state of the version.
VersionState version_state = 2;
// Email of the user who created this version.
string creator = 3;
// Timestamp of the last change to this version.
google.protobuf.Timestamp update_time = 4;
}

@ -1,82 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "WebhookProto";
option java_package = "com.google.actions.sdk.v2";
// Metadata for different types of webhooks. If you're using
// `inlineCloudFunction`, your source code must be in a directory with the same
// name as the value for the `executeFunction` key.
// For example, a value of `my_webhook` for the`executeFunction` key would have
// a code structure like this:
// - `/webhooks/my_webhook.yaml`
// - `/webhooks/my_webhook/index.js`
// - `/webhooks/my_webhook/package.json`
message Webhook {
// Declares the name of the webhoook handler. A webhook can have
// multiple handlers registered. These handlers can be called from multiple
// places in your Actions project.
message Handler {
// Required. Name of the handler. Must be unique across all handlers the Actions
// project. You can check the name of this handler to invoke the correct
// function in your fulfillment source code.
string name = 1 [(google.api.field_behavior) = REQUIRED];
}
// REST endpoint to notify if you're not using the inline editor.
message HttpsEndpoint {
// The HTTPS base URL for your fulfillment endpoint (HTTP is not supported).
// Handler names are appended to the base URL path after a colon
// (following the style guide in
// https://cloud.google.com/apis/design/custom_methods).
// For example a base URL of 'https://gactions.service.com/api' would
// receive requests with URL 'https://gactions.service.com/api:{method}'.
string base_url = 1;
// Map of HTTP parameters to be included in the POST request.
map<string, string> http_headers = 2;
// Version of the protocol used by the endpoint. This is the protocol shared
// by all fulfillment types and not specific to Google fulfillment type.
int32 endpoint_api_version = 3;
}
// Holds the metadata of an inline Cloud Function deployed from the
// webhooks folder.
message InlineCloudFunction {
// The name of the Cloud Function entry point. The value of this field
// should match the name of the method exported from the source code.
string execute_function = 1;
}
// List of handlers for this webhook.
repeated Handler handlers = 1;
// Only one webhook type is supported.
oneof webhook_type {
// Custom webhook HTTPS endpoint.
HttpsEndpoint https_endpoint = 2;
// Metadata for cloud function deployed from code in the webhooks folder.
InlineCloudFunction inline_cloud_function = 3;
}
}

@ -1,164 +0,0 @@
load("@rules_proto//proto:defs.bzl", "proto_library")
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
proto_library(
name = "date_range_proto",
srcs = ["date_range.proto"],
deps = [
"//google/type:date_proto",
],
)
proto_library(
name = "datetime_range_proto",
srcs = ["datetime_range.proto"],
deps = [
"//google/type:datetime_proto",
],
)
##############################################################################
# Java
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"java_proto_library",
)
java_proto_library(
name = "type_java_proto",
deps = [
":date_range_proto",
":datetime_range_proto",
],
)
##############################################################################
# Go
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"go_proto_library",
)
go_proto_library(
name = "date_range_go_proto",
importpath = "google.golang.org/genproto/googleapis/type/date_range",
protos = [
":date_range_proto",
],
deps = ["//google/type:date_go_proto"],
)
go_proto_library(
name = "datetime_range_go_proto",
importpath = "google.golang.org/genproto/googleapis/type/datetime_range",
protos = [
":datetime_range_proto",
],
deps = ["//google/type:datetime_go_proto"],
)
##############################################################################
# Python
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"py_proto_library",
)
py_proto_library(
name = "date_range_py_proto",
deps = [":date_range_proto"],
)
py_proto_library(
name = "datetime_range_py_proto",
deps = [":datetime_range_proto"],
)
##############################################################################
# PHP
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"php_proto_library",
)
php_proto_library(
name = "date_range_php_proto",
deps = [":date_range_proto"],
)
php_proto_library(
name = "datetime_range_php_proto",
deps = [":datetime_range_proto"],
)
##############################################################################
# Node.js
##############################################################################
##############################################################################
# Ruby
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"ruby_proto_library",
)
ruby_proto_library(
name = "date_range_ruby_proto",
deps = [":date_range_proto"],
)
ruby_proto_library(
name = "datetime_range_ruby_proto",
deps = [":datetime_range_proto"],
)
##############################################################################
# C#
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"csharp_proto_library",
)
csharp_proto_library(
name = "date_range_csharp_proto",
deps = [":date_range_proto"],
)
csharp_proto_library(
name = "datetime_range_csharp_proto",
deps = [":datetime_range_proto"],
)
##############################################################################
# C++
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"cc_proto_library",
)
cc_proto_library(
name = "date_range_cc_proto",
deps = [
":date_range_proto",
],
)
cc_proto_library(
name = "datetime_range_cc_proto",
deps = [
":datetime_range_proto",
],
)

@ -1,81 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
syntax = "proto3";
package google.actions.type;
import "google/type/date.proto";
option go_package = "google.golang.org/genproto/googleapis/type/date_range;date_range";
option java_multiple_files = true;
option java_outer_classname = "DateRangeProto";
option java_package = "com.google.actions.type";
option objc_class_prefix = "AOGTP";
// Represents a range based on whole or partial calendar dates, e.g. the
// duration of a hotel reservation or the Common Era. This can represent:
//
// * A range between full dates, e.g. the duration of a hotel reservation
// * A range between years, e.g. a historical era
// * A range between year/month dates, e.g. the duration of a job on a resume
// * A range beginning in a year, e.g. the Common Era
// * A range ending on a specific date, e.g. the period of time before an event
//
// While [google.type.Date][google.type.Date] allows zero years, DateRange does not. Year must
// always be non-zero.
//
// End cannot be chronologically before start. For example, if start has year
// 2000, end cannot have year 1999.
//
// When both set, start and end must have exactly the same precision. That is,
// they must have the same fields populated with non-zero values. For example,
// if start specifies only year and month, then end must also specify only year
// and month (but not day).
//
// The date range is inclusive. That is, the dates specified by start and end
// are part of the date range. For example, the date January 1, 2000 falls
// within any date with start or end equal to January 1, 2000. When determining
// whether a date is inside a date range, the date should only be compared to
// start and end when those values are set.
//
// When a date and date range are specified to different degrees of precision,
// the rules for evaluating whether that date is inside the date range are as
// follows:
//
// * When comparing the date to the start of the date range, unspecified months
// should be replaced with 1, and unspecified days should be replaced with 1.
// For example, the year 2000 is within the date range with start equal to
// January 1, 2000 and no end. And the date January 1, 2000 is within the
// date range with start equal to the year 2000 and no end.
//
// * When comparing the date to the end of the date range, unspecified months
// should be replaced with 12, and unspecified days should be replaced with
// the last valid day for the month/year. For example, the year 2000 is
// within the date range with start equal to January 1, 1999 and end equal to
// December 31, 2000. And the date December 31, 2001 is within the date range
// with start equal to the year 2000 and end equal to the year 2001.
//
// The semantics of start and end are the same as those of [google.type.Date][google.type.Date],
// except that year must always be non-zero in DateRange.
message DateRange {
// Date at which the date range begins. If unset, the date range has no
// beginning bound.
google.type.Date start = 1;
// Date at which the date range ends. If unset, the date range has no ending
// bound.
google.type.Date end = 2;
}

@ -1,66 +0,0 @@
// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
syntax = "proto3";
package google.actions.type;
import "google/type/datetime.proto";
option go_package = "google.golang.org/genproto/googleapis/type/date_time_range;date_time_range";
option java_multiple_files = true;
option java_outer_classname = "DateTimeRangeProto";
option java_package = "com.google.actions.type";
option objc_class_prefix = "AOGTP";
// Represents a date and time range. This can represent:
//
// * A range between points in time with time zone or offset, e.g. the duration
// of a flight which starts in the "America/New_York" time zone and ends in
// the "Australia/Sydney" time zone
// * A range between points in time without time zone/offset info, e.g. an
// appointment in local time
// * A range starting at a specific date and time, e.g. the range of time which
// can be measured in milliseconds since the Unix epoch (period starting with
// 1970-01-01T00:00:00Z)
// * A range ending at a specific date and time, e.g. range of time before
// a deadline
//
// When considering whether a DateTime falls within a DateTimeRange, the start
// of the range is inclusive and the end is exclusive.
//
// While [google.type.DateTime][google.type.DateTime] allows zero years, DateTimeRange does not.
// Year must always be non-zero.
//
// When both start and end are set, either both or neither must have a
// time_offset. When set, time_offset can be specified by either utc_offset or
// time_zone and must match for start and end, that is if start has utc_offset
// set then end must also have utc_offset set. The values of utc_offset or
// time_zone need not be the same for start and end.
//
// When both start and end are set, start must be chronologically less than or
// equal to end. When start and end are equal, the range is empty.
//
// The semantics of start and end are the same as those of
// [google.type.DateTime][google.type.DateTime].
message DateTimeRange {
// DateTime at which the date range begins. If unset, the range has no
// beginning bound.
google.type.DateTime start = 1;
// DateTime at which the date range ends. If unset, the range has no ending
// bound.
google.type.DateTime end = 2;
}

@ -1,21 +0,0 @@
type: google.api.Service
config_version: 1
name: type.aog.googleapis.com
title: Common Actions on Google Types
types:
- name: google.actions.type.DateRange
- name: google.actions.type.DateTimeRange
documentation:
summary: Defines common types for Actions on Google APIs.
overview: |-
This package contains definitions of common types for Actions on Google
APIs, which are used in addition to the common Google API types in the
google.type package. These types are not versioned, and must go through
extensive review before being created.
Like the types in google.type, all types defined in this package are
suitable for different APIs to exchange data, and will never break binary
compatibility. They should have design quality comparable to major
programming languages like Java and C#.

@ -1,36 +0,0 @@
# This build file includes a target for the Ruby wrapper library for
# google-ads-ad_manager.
load(
"@com_google_googleapis_imports//:imports.bzl",
"ruby_cloud_gapic_library",
"ruby_gapic_assembly_pkg",
)
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
# Export yaml configs.
exports_files(glob(["*.yaml"]))
# Generates a Ruby wrapper client for admanager.
# Ruby wrapper clients are versionless, but are generated from source protos
# for a particular service version, v1 in this case.
ruby_cloud_gapic_library(
name = "admanager_ruby_wrapper",
srcs = ["//google/ads/admanager/v1:admanager_proto_with_info"],
extra_protoc_parameters = [
"ruby-cloud-gem-name=google-ads-ad_manager",
"ruby-cloud-wrapper-of=v1:1.0",
],
service_yaml = "//google/ads/admanager/v1:admanager_v1.yaml",
transport = "rest",
)
# Open Source package.
ruby_gapic_assembly_pkg(
name = "google-ads-ad_manager-ruby",
deps = [
":admanager_ruby_wrapper",
],
)

@ -1,444 +0,0 @@
# This file was automatically generated by BuildFileGenerator
# https://github.com/googleapis/rules_gapic/tree/master/bazel
# Most of the manual changes to this file will be overwritten.
# It's **only** allowed to change the following rule attribute values:
# - names of *_gapic_assembly_* rules
# - certain parameters of *_gapic_library rules, including but not limited to:
# * extra_protoc_parameters
# * extra_protoc_file_parameters
# The complete list of preserved parameters can be found in the source code.
# buildifier: disable=load-on-top
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
# buildifier: disable=same-origin-load
load("@com_google_googleapis_imports//:imports.bzl", "proto_library_with_info")
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "admanager_proto",
srcs = [
"ad_unit_enums.proto",
"ad_unit_messages.proto",
"ad_unit_service.proto",
"admanager_error.proto",
"applied_label.proto",
"company_credit_status_enum.proto",
"company_messages.proto",
"company_service.proto",
"company_type_enum.proto",
"contact_messages.proto",
"custom_field_enums.proto",
"custom_field_messages.proto",
"custom_field_service.proto",
"custom_field_value.proto",
"custom_targeting_key_enums.proto",
"custom_targeting_key_messages.proto",
"custom_targeting_key_service.proto",
"custom_targeting_value_enums.proto",
"custom_targeting_value_messages.proto",
"custom_targeting_value_service.proto",
"entity_signals_mapping_messages.proto",
"entity_signals_mapping_service.proto",
"environment_type_enum.proto",
"frequency_cap.proto",
"label_messages.proto",
"network_messages.proto",
"network_service.proto",
"order_enums.proto",
"order_messages.proto",
"order_service.proto",
"placement_enums.proto",
"placement_messages.proto",
"placement_service.proto",
"report_service.proto",
"role_enums.proto",
"role_messages.proto",
"role_service.proto",
"size.proto",
"size_type_enum.proto",
"taxonomy_category_messages.proto",
"taxonomy_category_service.proto",
"taxonomy_type_enum.proto",
"team_messages.proto",
"time_unit_enum.proto",
"user_messages.proto",
"user_service.proto",
],
deps = [
"//google/api:annotations_proto",
"//google/api:client_proto",
"//google/api:field_behavior_proto",
"//google/api:resource_proto",
"//google/longrunning:operations_proto",
"//google/type:date_proto",
"//google/type:dayofweek_proto",
"//google/type:timeofday_proto",
"@com_google_protobuf//:any_proto",
"@com_google_protobuf//:duration_proto",
"@com_google_protobuf//:field_mask_proto",
"@com_google_protobuf//:timestamp_proto",
],
)
proto_library_with_info(
name = "admanager_proto_with_info",
deps = [
":admanager_proto",
"//google/cloud:common_resources_proto",
],
)
##############################################################################
# Java
##############################################################################
# buildifier: disable=same-origin-load
load(
"@com_google_googleapis_imports//:imports.bzl",
"java_gapic_assembly_gradle_pkg",
"java_gapic_library",
"java_gapic_test",
"java_proto_library",
)
java_proto_library(
name = "admanager_java_proto",
deps = [":admanager_proto"],
)
java_gapic_library(
name = "admanager_java_gapic",
srcs = [":admanager_proto_with_info"],
gapic_yaml = None,
grpc_service_config = "admanager_grpc_service_config.json",
rest_numeric_enums = True,
service_yaml = "admanager_v1.yaml",
test_deps = [
],
transport = "rest",
deps = [
":admanager_java_proto",
"//google/api:api_java_proto",
],
)
java_gapic_test(
name = "admanager_java_gapic_test_suite",
test_classes = [
"com.google.ads.admanager.v1.AdUnitServiceClientTest",
"com.google.ads.admanager.v1.CompanyServiceClientTest",
"com.google.ads.admanager.v1.CustomFieldServiceClientTest",
"com.google.ads.admanager.v1.CustomTargetingKeyServiceClientTest",
"com.google.ads.admanager.v1.CustomTargetingValueServiceClientTest",
"com.google.ads.admanager.v1.EntitySignalsMappingServiceClientTest",
"com.google.ads.admanager.v1.NetworkServiceClientTest",
"com.google.ads.admanager.v1.OrderServiceClientTest",
"com.google.ads.admanager.v1.PlacementServiceClientTest",
"com.google.ads.admanager.v1.ReportServiceClientTest",
"com.google.ads.admanager.v1.RoleServiceClientTest",
"com.google.ads.admanager.v1.TaxonomyCategoryServiceClientTest",
"com.google.ads.admanager.v1.UserServiceClientTest",
],
runtime_deps = [":admanager_java_gapic_test"],
)
# Open Source Packages
java_gapic_assembly_gradle_pkg(
name = "google-ads-admanager-v1-java",
include_samples = True,
transport = "rest",
deps = [
":admanager_java_gapic",
":admanager_java_proto",
":admanager_proto",
],
)
##############################################################################
# Go
##############################################################################
# buildifier: disable=same-origin-load
load(
"@com_google_googleapis_imports//:imports.bzl",
"go_gapic_assembly_pkg",
"go_gapic_library",
"go_proto_library",
)
go_proto_library(
name = "admanager_go_proto",
compilers = ["@io_bazel_rules_go//proto:go_grpc"],
importpath = "google.golang.org/genproto/googleapis/ads/admanager/v1",
protos = [":admanager_proto"],
deps = [
"//google/api:annotations_go_proto",
"//google/longrunning:longrunning_go_proto",
"//google/type:date_go_proto",
"//google/type:dayofweek_go_proto",
"//google/type:timeofday_go_proto",
],
)
go_gapic_library(
name = "admanager_go_gapic",
srcs = [":admanager_proto_with_info"],
grpc_service_config = "admanager_grpc_service_config.json",
importpath = "google.golang.org/google/ads/admanager/v1;admanager",
metadata = True,
release_level = "beta",
rest_numeric_enums = True,
service_yaml = "admanager_v1.yaml",
transport = "rest",
deps = [
":admanager_go_proto",
"//google/longrunning:longrunning_go_proto",
"@com_google_cloud_go_longrunning//:go_default_library",
"@com_google_cloud_go_longrunning//autogen:go_default_library",
"@io_bazel_rules_go//proto/wkt:any_go_proto",
"@io_bazel_rules_go//proto/wkt:duration_go_proto",
],
)
# Open Source Packages
go_gapic_assembly_pkg(
name = "gapi-ads-admanager-v1-go",
deps = [
":admanager_go_gapic",
":admanager_go_gapic_srcjar-metadata.srcjar",
":admanager_go_gapic_srcjar-snippets.srcjar",
":admanager_go_gapic_srcjar-test.srcjar",
":admanager_go_proto",
],
)
##############################################################################
# Python
##############################################################################
# buildifier: disable=same-origin-load
load(
"@com_google_googleapis_imports//:imports.bzl",
"py_gapic_assembly_pkg",
"py_gapic_library",
"py_test",
)
py_gapic_library(
name = "admanager_py_gapic",
srcs = [":admanager_proto"],
grpc_service_config = "admanager_grpc_service_config.json",
rest_numeric_enums = True,
service_yaml = "admanager_v1.yaml",
transport = "rest",
deps = [
],
)
py_test(
name = "admanager_py_gapic_test",
srcs = [
"admanager_py_gapic_pytest.py",
"admanager_py_gapic_test.py",
],
legacy_create_init = False,
deps = [":admanager_py_gapic"],
)
# Open Source Packages
py_gapic_assembly_pkg(
name = "ads-admanager-v1-py",
deps = [
":admanager_py_gapic",
],
)
##############################################################################
# PHP
##############################################################################
# buildifier: disable=same-origin-load
load(
"@com_google_googleapis_imports//:imports.bzl",
"php_gapic_assembly_pkg",
"php_gapic_library",
"php_proto_library",
)
php_proto_library(
name = "admanager_php_proto",
deps = [":admanager_proto"],
)
php_gapic_library(
name = "admanager_php_gapic",
srcs = [":admanager_proto_with_info"],
grpc_service_config = "admanager_grpc_service_config.json",
migration_mode = "NEW_SURFACE_ONLY",
rest_numeric_enums = True,
service_yaml = "admanager_v1.yaml",
transport = "rest",
deps = [
":admanager_php_proto",
],
)
# Open Source Packages
php_gapic_assembly_pkg(
name = "google-ads-admanager-v1-php",
deps = [
":admanager_php_gapic",
":admanager_php_proto",
],
)
##############################################################################
# Node.js
##############################################################################
# buildifier: disable=same-origin-load
load(
"@com_google_googleapis_imports//:imports.bzl",
"nodejs_gapic_assembly_pkg",
"nodejs_gapic_library",
)
nodejs_gapic_library(
name = "admanager_nodejs_gapic",
package_name = "@google-ads/admanager",
src = ":admanager_proto_with_info",
extra_protoc_parameters = ["metadata"],
grpc_service_config = "admanager_grpc_service_config.json",
package = "google.ads.admanager.v1",
rest_numeric_enums = True,
service_yaml = "admanager_v1.yaml",
transport = "rest",
deps = [],
)
nodejs_gapic_assembly_pkg(
name = "ads-admanager-v1-nodejs",
deps = [
":admanager_nodejs_gapic",
":admanager_proto",
],
)
##############################################################################
# Ruby
##############################################################################
# buildifier: disable=same-origin-load
load(
"@com_google_googleapis_imports//:imports.bzl",
"ruby_cloud_gapic_library",
"ruby_gapic_assembly_pkg",
"ruby_grpc_library",
"ruby_proto_library",
)
ruby_proto_library(
name = "admanager_ruby_proto",
deps = [":admanager_proto"],
)
ruby_grpc_library(
name = "admanager_ruby_grpc",
srcs = [":admanager_proto"],
deps = [":admanager_ruby_proto"],
)
ruby_cloud_gapic_library(
name = "admanager_ruby_gapic",
srcs = [":admanager_proto_with_info"],
extra_protoc_parameters = ["ruby-cloud-gem-name=google-ads-ad_manager-v1"],
grpc_service_config = "admanager_grpc_service_config.json",
rest_numeric_enums = True,
service_yaml = "admanager_v1.yaml",
transport = "rest",
deps = [
":admanager_ruby_grpc",
":admanager_ruby_proto",
],
)
# Open Source Packages
ruby_gapic_assembly_pkg(
name = "google-ads-admanager-v1-ruby",
deps = [
":admanager_ruby_gapic",
":admanager_ruby_grpc",
":admanager_ruby_proto",
],
)
##############################################################################
# C#
##############################################################################
# buildifier: disable=same-origin-load
load(
"@com_google_googleapis_imports//:imports.bzl",
"csharp_gapic_assembly_pkg",
"csharp_gapic_library",
"csharp_grpc_library",
"csharp_proto_library",
)
csharp_proto_library(
name = "admanager_csharp_proto",
extra_opts = [],
deps = [":admanager_proto"],
)
csharp_grpc_library(
name = "admanager_csharp_grpc",
srcs = [":admanager_proto"],
deps = [":admanager_csharp_proto"],
)
csharp_gapic_library(
name = "admanager_csharp_gapic",
srcs = [":admanager_proto_with_info"],
common_resources_config = "@gax_dotnet//:Google.Api.Gax/ResourceNames/CommonResourcesConfig.json",
grpc_service_config = "admanager_grpc_service_config.json",
rest_numeric_enums = True,
service_yaml = "admanager_v1.yaml",
transport = "rest",
deps = [
":admanager_csharp_grpc",
":admanager_csharp_proto",
],
)
# Open Source Packages
csharp_gapic_assembly_pkg(
name = "google-ads-admanager-v1-csharp",
deps = [
":admanager_csharp_gapic",
":admanager_csharp_grpc",
":admanager_csharp_proto",
],
)
##############################################################################
# C++
##############################################################################
# buildifier: disable=same-origin-load
load(
"@com_google_googleapis_imports//:imports.bzl",
"cc_grpc_library",
"cc_proto_library",
)
cc_proto_library(
name = "admanager_cc_proto",
deps = [":admanager_proto"],
)
cc_grpc_library(
name = "admanager_cc_grpc",
srcs = [":admanager_proto"],
grpc_only = True,
deps = [":admanager_cc_proto"],
)

@ -1,81 +0,0 @@
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.ads.admanager.v1;
option csharp_namespace = "Google.Ads.AdManager.V1";
option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
option java_multiple_files = true;
option java_outer_classname = "AdUnitEnumsProto";
option java_package = "com.google.ads.admanager.v1";
option php_namespace = "Google\\Ads\\AdManager\\V1";
option ruby_package = "Google::Ads::AdManager::V1";
// Wrapper message for
// [AdUnitStatus][google.ads.admanager.v1.AdUnitStatusEnum.AdUnitStatus]
message AdUnitStatusEnum {
// The status of an AdUnit.
enum AdUnitStatus {
// Default value. This value is unused.
AD_UNIT_STATUS_UNSPECIFIED = 0;
// The ad unit is active, available for targeting, and serving.
ACTIVE = 1;
// The ad unit will be visible in the UI, but ignored by serving.
INACTIVE = 2;
// The ad unit will be hidden in the UI and ignored by serving.
ARCHIVED = 3;
}
}
// Wrapper message for
// [SmartSizeMode][google.ads.admanager.v1.SmartSizeModeEnum.SmartSizeMode].
message SmartSizeModeEnum {
// The smart size mode for this ad unit. This attribute is optional and
// defaults to SmartSizeMode.NONE for fixed sizes.
enum SmartSizeMode {
// Default value. This value is unused.
SMART_SIZE_MODE_UNSPECIFIED = 0;
// Fixed size mode (default).
NONE = 1;
// The height is fixed for the request, the width is a range.
SMART_BANNER = 2;
// Height and width are ranges.
DYNAMIC_SIZE = 3;
}
}
// Wrapper message for
// [TargetWindow][google.ads.admanager.v1.TargetWindowEnum.TargetWindow].
message TargetWindowEnum {
// Corresponds to an HTML link's target attribute.
// See http://www.w3.org/TR/html401/present/frames.html#adef-target
enum TargetWindow {
// Default value. This value is unused.
TARGET_WINDOW_UNSPECIFIED = 0;
// Specifies that the link should open in the full body of the page.
TOP = 1;
// Specifies that the link should open in a new window.
BLANK = 2;
}
}

@ -1,230 +0,0 @@
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.ads.admanager.v1;
import "google/ads/admanager/v1/ad_unit_enums.proto";
import "google/ads/admanager/v1/applied_label.proto";
import "google/ads/admanager/v1/environment_type_enum.proto";
import "google/ads/admanager/v1/frequency_cap.proto";
import "google/ads/admanager/v1/size.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
option csharp_namespace = "Google.Ads.AdManager.V1";
option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
option java_multiple_files = true;
option java_outer_classname = "AdUnitMessagesProto";
option java_package = "com.google.ads.admanager.v1";
option php_namespace = "Google\\Ads\\AdManager\\V1";
option ruby_package = "Google::Ads::AdManager::V1";
// The AdUnit resource.
message AdUnit {
option (google.api.resource) = {
type: "admanager.googleapis.com/AdUnit"
pattern: "networks/{network_code}/adUnits/{ad_unit}"
plural: "adUnits"
singular: "adUnit"
};
// Identifier. The resource name of the AdUnit.
// Format: `networks/{network_code}/adUnits/{ad_unit_id}`
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Output only. AdUnit ID.
int64 ad_unit_id = 15 [(google.api.field_behavior) = OUTPUT_ONLY];
// Required. Immutable. The AdUnit's parent. Every ad unit has a parent except
// for the root ad unit, which is created by Google. Format:
// "networks/{network_code}/adUnits/{ad_unit_id}"
string parent_ad_unit = 10 [
(google.api.field_behavior) = REQUIRED,
(google.api.field_behavior) = IMMUTABLE,
(google.api.resource_reference) = {
type: "admanager.googleapis.com/AdUnit"
}
];
// Output only. The path to this AdUnit in the ad unit hierarchy represented
// as a list from the root to this ad unit's parent. For root ad units, this
// list is empty.
repeated AdUnitParent parent_path = 11
[(google.api.field_behavior) = OUTPUT_ONLY];
// Required. The display name of the ad unit. Its maximum length is 255
// characters.
string display_name = 9 [(google.api.field_behavior) = REQUIRED];
// Immutable. A string used to uniquely identify the ad unit for the purposes
// of serving the ad. This attribute is optional and can be set during ad unit
// creation. If it is not provided, it will be assigned by Google based on the
// ad unit ID.
string ad_unit_code = 2 [(google.api.field_behavior) = IMMUTABLE];
// Output only. The status of this ad unit. It defaults to ACTIVE.
AdUnitStatusEnum.AdUnitStatus status = 13
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The target window directly applied to this AdUnit.
// If this field is not set, this AdUnit uses the target window specified in
// effectiveTargetWindow.
TargetWindowEnum.TargetWindow applied_target_window = 44
[(google.api.field_behavior) = OPTIONAL];
// Output only. Non-empty default. The target window of this AdUnit. This
// value is inherited from ancestor AdUnits and defaults to TOP if no AdUnit
// in the hierarchy specifies it.
TargetWindowEnum.TargetWindow effective_target_window = 45 [
(google.api.field_behavior) = NON_EMPTY_DEFAULT,
(google.api.field_behavior) = OUTPUT_ONLY
];
// Optional. The resource names of Teams directly applied to this AdUnit.
// Format: "networks/{network_code}/teams/{team_id}"
repeated string applied_teams = 3 [
(google.api.field_behavior) = OPTIONAL,
(google.api.resource_reference) = { type: "admanager.googleapis.com/Team" }
];
// Output only. The resource names of all Teams that this AdUnit is on as well
// as those inherited from parent AdUnits. Format:
// "networks/{network_code}/teams/{team_id}"
repeated string teams = 4 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = { type: "admanager.googleapis.com/Team" }
];
// Optional. A description of the ad unit. The maximum length is 65,535
// characters.
string description = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. If this field is set to true, then the AdUnit will not be
// implicitly targeted when its parent is. Traffickers must explicitly
// target such an AdUnit or else no line items will serve to it. This
// feature is only available for Ad Manager 360 accounts.
bool explicitly_targeted = 6 [(google.api.field_behavior) = OPTIONAL];
// Output only. This field is set to true if the ad unit has any children.
bool has_children = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time this AdUnit was last modified.
google.protobuf.Timestamp update_time = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The sizes that can be served inside this ad unit.
repeated AdUnitSize ad_unit_sizes = 14
[(google.api.field_behavior) = OPTIONAL];
// Optional. Determines what set top box video on demand channel this ad unit
// corresponds to in an external set top box ad campaign system.
string external_set_top_box_channel_id = 17
[(google.api.field_behavior) = OPTIONAL];
// Optional. The duration after which an Ad Unit will automatically refresh.
// This is only valid for ad units in mobile apps. If not set, the ad unit
// will not refresh.
google.protobuf.Duration refresh_delay = 19
[(google.api.field_behavior) = OPTIONAL];
// Optional. The set of labels applied directly to this ad unit.
repeated AppliedLabel applied_labels = 21
[(google.api.field_behavior) = OPTIONAL];
// Output only. Contains the set of labels applied directly to the ad unit as
// well as those inherited from the parent ad units. If a label has been
// negated, only the negated label is returned. This field is readonly and is
// assigned by Google.
repeated AppliedLabel effective_applied_labels = 22
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The set of label frequency caps applied directly to this ad unit.
// There is a limit of 10 label frequency caps per ad unit.
repeated LabelFrequencyCap applied_label_frequency_caps = 23
[(google.api.field_behavior) = OPTIONAL];
// Output only. The label frequency caps applied directly to the ad unit as
// well as those inherited from parent ad units.
repeated LabelFrequencyCap effective_label_frequency_caps = 24
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The smart size mode for this ad unit. This attribute is optional
// and defaults to SmartSizeMode.NONE for fixed sizes.
SmartSizeModeEnum.SmartSizeMode smart_size_mode = 25
[(google.api.field_behavior) = OPTIONAL];
// Optional. The value of AdSense enabled directly applied to this ad unit.
// This attribute is optional and if not specified this ad unit will inherit
// the value of effectiveAdsenseEnabled from its ancestors.
optional bool applied_adsense_enabled = 26
[(google.api.field_behavior) = OPTIONAL];
// Output only. Specifies whether or not the AdUnit is enabled for serving ads
// from the AdSense content network. This attribute defaults to the ad unit's
// parent or ancestor's setting if one has been set. If no ancestor of the ad
// unit has set appliedAdsenseEnabled, the attribute is defaulted to true.
bool effective_adsense_enabled = 27
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Represents the size, environment, and companions of an ad in an ad unit.
message AdUnitSize {
// Required. The Size of the AdUnit.
Size size = 1 [(google.api.field_behavior) = REQUIRED];
// Required. The EnvironmentType of the AdUnit
EnvironmentTypeEnum.EnvironmentType environment_type = 2
[(google.api.field_behavior) = REQUIRED];
// The companions for this ad unit size. Companions are only valid if the
// environment is
// [VIDEO_PLAYER][google.ads.admanager.v1.EnvironmentTypeEnum.EnvironmentType].
repeated Size companions = 3;
}
// The summary of a parent AdUnit.
message AdUnitParent {
// Output only. The parent of the current AdUnit
// Format: `networks/{network_code}/adUnits/{ad_unit_id}`
string parent_ad_unit = 1 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "admanager.googleapis.com/AdUnit"
}
];
// Output only. The display name of the parent AdUnit.
string display_name = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. A string used to uniquely identify the ad unit for the
// purposes of serving the ad.
string ad_unit_code = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Frequency cap using a label.
message LabelFrequencyCap {
// Required. The label to used for frequency capping.
// Format: "networks/{network_code}/labels/{label_id}"
string label = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = { type: "admanager.googleapis.com/Label" }
];
// The frequency cap.
FrequencyCap frequency_cap = 2;
}

@ -1,195 +0,0 @@
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.ads.admanager.v1;
import "google/ads/admanager/v1/ad_unit_messages.proto";
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
option csharp_namespace = "Google.Ads.AdManager.V1";
option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
option java_multiple_files = true;
option java_outer_classname = "AdUnitServiceProto";
option java_package = "com.google.ads.admanager.v1";
option php_namespace = "Google\\Ads\\AdManager\\V1";
option ruby_package = "Google::Ads::AdManager::V1";
// Provides methods for handling AdUnit objects.
service AdUnitService {
option (google.api.default_host) = "admanager.googleapis.com";
// API to retrieve an AdUnit object.
rpc GetAdUnit(GetAdUnitRequest) returns (AdUnit) {
option (google.api.http) = {
get: "/v1/{name=networks/*/adUnits/*}"
};
option (google.api.method_signature) = "name";
}
// API to retrieve a list of AdUnit objects.
rpc ListAdUnits(ListAdUnitsRequest) returns (ListAdUnitsResponse) {
option (google.api.http) = {
get: "/v1/{parent=networks/*}/adUnits"
};
option (google.api.method_signature) = "parent";
}
// API to retrieve a list of AdUnitSize objects.
rpc ListAdUnitSizes(ListAdUnitSizesRequest)
returns (ListAdUnitSizesResponse) {
option (google.api.http) = {
get: "/v1/{parent=networks/*}/adUnitSizes"
};
option (google.api.method_signature) = "parent";
}
}
// Request object for GetAdUnit method.
message GetAdUnitRequest {
// Required. The resource name of the AdUnit.
// Format: `networks/{network_code}/adUnits/{ad_unit_id}`
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "admanager.googleapis.com/AdUnit"
}
];
}
// Request object for ListAdUnits method.
message ListAdUnitsRequest {
// Required. The parent, which owns this collection of AdUnits.
// Format: `networks/{network_code}`
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "admanager.googleapis.com/Network"
}
];
// Optional. The maximum number of AdUnits to return. The service may return
// fewer than this value. If unspecified, at most 50 ad units will be
// returned. The maximum value is 1000; values above 1000 will be coerced to
// 1000.
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. A page token, received from a previous `ListAdUnits` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other parameters provided to `ListAdUnits` must match
// the call that provided the page token.
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Expression to filter the response.
// See syntax details at
// https://developers.google.com/ad-manager/api/beta/filters
string filter = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Expression to specify sorting order.
// See syntax details at
// https://developers.google.com/ad-manager/api/beta/filters#order
string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. Number of individual resources to skip while paginating.
int32 skip = 6 [(google.api.field_behavior) = OPTIONAL];
}
// Response object for ListAdUnitsRequest containing matching AdUnit resources.
message ListAdUnitsResponse {
// The AdUnit from the specified network.
repeated AdUnit ad_units = 1;
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there are no subsequent pages.
string next_page_token = 2;
// Total number of AdUnits.
// If a filter was included in the request, this reflects the total number
// after the filtering is applied.
//
// `total_size` will not be calculated in the response unless it has been
// included in a response field mask. The response field mask can be provided
// to the method by using the URL parameter `$fields` or `fields`, or by using
// the HTTP/gRPC header `X-Goog-FieldMask`.
//
// For more information, see
// https://developers.google.com/ad-manager/api/beta/field-masks
int32 total_size = 3;
}
// Request object for ListAdUnitSizes method.
message ListAdUnitSizesRequest {
// Required. The parent, which owns this collection of AdUnitSizes.
// Format: `networks/{network_code}`
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "admanager.googleapis.com/Network"
}
];
// Optional. The maximum number of AdUnitSizes to return. The service may
// return fewer than this value. If unspecified, at most 50 ad unit sizes will
// be returned. The maximum value is 1000; values above 1000 will be coerced
// to 1000.
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. A page token, received from a previous `ListAdUnitSizes` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other parameters provided to `ListAdUnitSizes` must
// match the call that provided the page token.
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Expression to filter the response.
// See syntax details at
// https://developers.google.com/ad-manager/api/beta/filters
string filter = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Expression to specify sorting order.
// See syntax details at
// https://developers.google.com/ad-manager/api/beta/filters#order
string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. Number of individual resources to skip while paginating.
int32 skip = 6 [(google.api.field_behavior) = OPTIONAL];
}
// Response object for ListAdUnitSizesRequest containing matching AdUnitSizes.
message ListAdUnitSizesResponse {
// The AdUnitSizes from the specified network.
repeated AdUnitSize ad_unit_sizes = 1;
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there are no subsequent pages.
string next_page_token = 2;
// Total number of AdUnitSizes.
// If a filter was included in the request, this reflects the total number
// after the filtering is applied.
//
// `total_size` will not be calculated in the response unless it has been
// included in a response field mask. The response field mask can be provided
// to the method by using the URL parameter `$fields` or `fields`, or by using
// the HTTP/gRPC header `X-Goog-FieldMask`.
//
// For more information, see
// https://developers.google.com/ad-manager/api/beta/field-masks
int32 total_size = 3;
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save