// Copyright 2020 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; }