You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
436 lines
15 KiB
436 lines
15 KiB
// 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; |
|
}
|
|
|