blob: 5b11438dd2e0e4315a965878d500f189ed3fe19c [file] [log] [blame]
// Copyright 2016 Google Inc.
//
// 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.storagetransfer.v1;
import "google/api/annotations.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";
import "google/storagetransfer/v1/transfer_types.proto";
option cc_enable_arenas = true;
option go_package = "google.golang.org/genproto/googleapis/storagetransfer/v1;storagetransfer";
option java_outer_classname = "TransferProto";
option java_package = "com.google.storagetransfer.v1.proto";
// Transfers data between between Google Cloud Storage buckets or from a data
// source external to Google to a Cloud Storage bucket.
service StorageTransferService {
// Returns the Google service account that is used by Storage Transfer
// Service to access buckets in the project where transfers
// run or in other projects. Each Google service account is associated
// with one Google Cloud Platform Console project. Users
// should add this service account to the Google Cloud Storage bucket
// ACLs to grant access to Storage Transfer Service. This service
// account is created and owned by Storage Transfer Service and can
// only be used by Storage Transfer Service.
rpc GetGoogleServiceAccount(GetGoogleServiceAccountRequest) returns (GoogleServiceAccount) {
option (google.api.http) = { get: "/v1/googleServiceAccounts/{project_id}" };
}
// Creates a transfer job that runs periodically.
rpc CreateTransferJob(CreateTransferJobRequest) returns (TransferJob) {
option (google.api.http) = { post: "/v1/transferJobs" body: "transfer_job" };
}
// Updates a transfer job. Updating a job's transfer spec does not affect
// transfer operations that are running already. Updating the scheduling
// of a job is not allowed.
rpc UpdateTransferJob(UpdateTransferJobRequest) returns (TransferJob) {
option (google.api.http) = { patch: "/v1/{job_name=transferJobs/**}" body: "*" };
}
// Gets a transfer job.
rpc GetTransferJob(GetTransferJobRequest) returns (TransferJob) {
option (google.api.http) = { get: "/v1/{job_name=transferJobs/**}" };
}
// Lists transfer jobs.
rpc ListTransferJobs(ListTransferJobsRequest) returns (ListTransferJobsResponse) {
option (google.api.http) = { get: "/v1/transferJobs" };
}
// Pauses a transfer operation.
rpc PauseTransferOperation(PauseTransferOperationRequest) returns (google.protobuf.Empty) {
option (google.api.http) = { post: "/v1/{name=transferOperations/**}:pause" body: "*" };
}
// Resumes a transfer operation that is paused.
rpc ResumeTransferOperation(ResumeTransferOperationRequest) returns (google.protobuf.Empty) {
option (google.api.http) = { post: "/v1/{name=transferOperations/**}:resume" body: "*" };
}
}
// Request passed to GetGoogleServiceAccount.
message GetGoogleServiceAccountRequest {
// The ID of the Google Cloud Platform Console project that the Google service
// account is associated with.
// Required.
string project_id = 1;
}
// Request passed to CreateTransferJob.
message CreateTransferJobRequest {
// The job to create.
// Required.
TransferJob transfer_job = 1;
}
// Request passed to UpdateTransferJob.
message UpdateTransferJobRequest {
// The name of job to update.
// Required.
string job_name = 1;
// The ID of the Google Cloud Platform Console project that owns the job.
// Required.
string project_id = 2;
// The job to update.
// Required.
TransferJob transfer_job = 3;
// The field mask of the fields in `transferJob` that are to be updated in
// this request. Fields in `transferJob` that can be updated are:
// `description`, `transferSpec`, and `status`. To update the `transferSpec`
// of the job, a complete transfer specification has to be provided. An
// incomplete specification which misses any required fields will be rejected
// with the error `INVALID_ARGUMENT`.
google.protobuf.FieldMask update_transfer_job_field_mask = 4;
}
// Request passed to GetTransferJob.
message GetTransferJobRequest {
// The job to get.
// Required.
string job_name = 1;
// The ID of the Google Cloud Platform Console project that owns the job.
// Required.
string project_id = 2;
}
// `project_id`, `job_names`, and `job_statuses` are query parameters that can
// be specified when listing transfer jobs.
message ListTransferJobsRequest {
// A list of query parameters specified as JSON text in the form of
// {"project_id":"my_project_id",
// "job_names":["jobid1","jobid2",...],
// "job_statuses":["status1","status2",...]}.
// Since `job_names` and `job_statuses` support multiple values, their values
// must be specified with array notation. `project_id` is required. `job_names`
// and `job_statuses` are optional. The valid values for `job_statuses` are
// case-insensitive: `ENABLED`, `DISABLED`, and `DELETED`.
string filter = 1;
// The list page size. The max allowed value is 256.
int32 page_size = 4;
// The list page token.
string page_token = 5;
}
// Response from ListTransferJobs.
message ListTransferJobsResponse {
// A list of transfer jobs.
repeated TransferJob transfer_jobs = 1;
// The list next page token.
string next_page_token = 2;
}
// Request passed to PauseTransferOperation.
message PauseTransferOperationRequest {
// The name of the transfer operation.
// Required.
string name = 1;
}
// Request passed to ResumeTransferOperation.
message ResumeTransferOperationRequest {
// The name of the transfer operation.
// Required.
string name = 1;
}