| // 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/duration.proto"; |
| import "google/protobuf/timestamp.proto"; |
| import "google/rpc/code.proto"; |
| import "google/type/date.proto"; |
| import "google/type/timeofday.proto"; |
| |
| option cc_enable_arenas = true; |
| option go_package = "google.golang.org/genproto/googleapis/storagetransfer/v1;storagetransfer"; |
| option java_outer_classname = "TransferTypes"; |
| option java_package = "com.google.storagetransfer.v1.proto"; |
| |
| |
| // Google service account |
| message GoogleServiceAccount { |
| // Required. |
| string account_email = 1; |
| } |
| |
| // AWS access key (see |
| // [AWS Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html)). |
| message AwsAccessKey { |
| // AWS access key ID. |
| // Required. |
| string access_key_id = 1; |
| |
| // AWS secret access key. This field is not returned in RPC responses. |
| // Required. |
| string secret_access_key = 2; |
| } |
| |
| // Conditions that determine which objects will be transferred. |
| message ObjectConditions { |
| // If unspecified, `minTimeElapsedSinceLastModification` takes a zero value |
| // and `maxTimeElapsedSinceLastModification` takes the maximum possible |
| // value of Duration. Objects that satisfy the object conditions |
| // must either have a `lastModificationTime` greater or equal to |
| // `NOW` - `maxTimeElapsedSinceLastModification` and less than |
| // `NOW` - `minTimeElapsedSinceLastModification`, or not have a |
| // `lastModificationTime`. |
| google.protobuf.Duration min_time_elapsed_since_last_modification = 1; |
| |
| // `maxTimeElapsedSinceLastModification` is the complement to |
| // `minTimeElapsedSinceLastModification`. |
| google.protobuf.Duration max_time_elapsed_since_last_modification = 2; |
| |
| // If `includePrefixes` is specified, objects that satisfy the object |
| // conditions must have names that start with one of the `includePrefixes` |
| // and that do not start with any of the `excludePrefixes`. If `includePrefixes` |
| // is not specified, all objects except those that have names starting with |
| // one of the `excludePrefixes` must satisfy the object conditions. |
| // |
| // Requirements: |
| // |
| // * Each include-prefix and exclude-prefix can contain any sequence of |
| // Unicode characters, of max length 1024 bytes when UTF8-encoded, and |
| // must not contain Carriage Return or Line Feed characters. Wildcard |
| // matching and regular expression matching are not supported. |
| // |
| // * Each include-prefix and exclude-prefix must omit the leading slash. |
| // For example, to include the `requests.gz` object in a transfer from |
| // `s3://my-aws-bucket/logs/y=2015/requests.gz`, specify the include |
| // prefix as `logs/y=2015/requests.gz`. |
| // |
| // * None of the include-prefix or the exclude-prefix values can be empty, |
| // if specified. |
| // |
| // * Each include-prefix must include a distinct portion of the object |
| // namespace, i.e., no include-prefix may be a prefix of another |
| // include-prefix. |
| // |
| // * Each exclude-prefix must exclude a distinct portion of the object |
| // namespace, i.e., no exclude-prefix may be a prefix of another |
| // exclude-prefix. |
| // |
| // * If `includePrefixes` is specified, then each exclude-prefix must start |
| // with the value of a path explicitly included by `includePrefixes`. |
| // |
| // The max size of `includePrefixes` is 20. |
| repeated string include_prefixes = 3; |
| |
| // `excludePrefixes` must follow the requirements described for |
| // `includePrefixes`. |
| // |
| // The max size of `excludePrefixes` is 20. |
| repeated string exclude_prefixes = 4; |
| } |
| |
| // In a GcsData, an object's name is the Google Cloud Storage object's name and |
| // its `lastModificationTime` refers to the object's updated time, which changes |
| // when the content or the metadata of the object is updated. |
| message GcsData { |
| // Google Cloud Storage bucket name (see |
| // [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). |
| // Required. |
| string bucket_name = 1; |
| } |
| |
| // An AwsS3Data can be a data source, but not a data sink. |
| // In an AwsS3Data, an object's name is the S3 object's key name. |
| message AwsS3Data { |
| // S3 Bucket name (see |
| // [Creating a bucket](http://docs.aws.amazon.com/AmazonS3/latest/dev/create-bucket-get-location-example.html)). |
| // Required. |
| string bucket_name = 1; |
| |
| // AWS access key used to sign the API requests to the AWS S3 bucket. |
| // Permissions on the bucket must be granted to the access ID of the |
| // AWS access key. |
| // Required. |
| AwsAccessKey aws_access_key = 2; |
| } |
| |
| // An HttpData specifies a list of objects on the web to be transferred over |
| // HTTP. The information of the objects to be transferred is contained in a |
| // file referenced by a URL. The first line in the file must be |
| // "TsvHttpData-1.0", which specifies the format of the file. Subsequent lines |
| // specify the information of the list of objects, one object per list entry. |
| // Each entry has the following tab-delimited fields: |
| // |
| // * HTTP URL - The location of the object. |
| // |
| // * Length - The size of the object in bytes. |
| // |
| // * MD5 - The base64-encoded MD5 hash of the object. |
| // |
| // For an example of a valid TSV file, see |
| // [Transferring data from URLs](https://cloud.google.com/storage/transfer/#urls) |
| // |
| // When transferring data based on a URL list, keep the following in mind: |
| // |
| // * When an object located at `http(s)://hostname:port/<URL-path>` is transferred |
| // to a data sink, the name of the object at the data sink is |
| // `<hostname>/<URL-path>`. |
| // |
| // * If the specified size of an object does not match the actual size of the |
| // object fetched, the object will not be transferred. |
| // |
| // * If the specified MD5 does not match the MD5 computed from the transferred |
| // bytes, the object transfer will fail. For more information, see |
| // [Generating MD5 hashes](https://cloud.google.com/storage/transfer/#md5) |
| // |
| // * Ensure that each URL you specify is publicly accessible. For |
| // example, in Google Cloud Storage you can |
| // [share an object publicly] |
| // (https://cloud.google.com/storage/docs/cloud-console#_sharingdata) and get |
| // a link to it. |
| // |
| // * Storage Transfer Service obeys `robots.txt` rules and requires the source |
| // HTTP server to support `Range` requests and to return a `Content-Length` |
| // header in each response. |
| // |
| // * [ObjectConditions](#ObjectConditions) have no effect when filtering objects |
| // to transfer. |
| message HttpData { |
| // The URL that points to the file that stores the object list entries. |
| // This file must allow public access. Currently, only URLs with HTTP and |
| // HTTPS schemes are supported. |
| // Required. |
| string list_url = 1; |
| } |
| |
| // TransferOptions uses three boolean parameters to define the actions |
| // to be performed on objects in a transfer. |
| message TransferOptions { |
| // Whether overwriting objects that already exist in the sink is allowed. |
| bool overwrite_objects_already_existing_in_sink = 1; |
| |
| // Whether objects that exist only in the sink should be deleted. |
| bool delete_objects_unique_in_sink = 2; |
| |
| // Whether objects should be deleted from the source after they are |
| // transferred to the sink. |
| bool delete_objects_from_source_after_transfer = 3; |
| } |
| |
| // Configuration for running a transfer. |
| message TransferSpec { |
| // The read source of the data. |
| oneof data_source { |
| // A Google Cloud Storage data source. |
| GcsData gcs_data_source = 1; |
| |
| // An AWS S3 data source. |
| AwsS3Data aws_s3_data_source = 2; |
| |
| // An HTTP URL data source. |
| HttpData http_data_source = 3; |
| } |
| |
| // The write sink for the data. |
| oneof data_sink { |
| // A Google Cloud Storage data sink. |
| GcsData gcs_data_sink = 4; |
| } |
| |
| // Only objects that satisfy these object conditions are included in the set |
| // of data source and data sink objects. Object conditions based on |
| // objects' `lastModificationTime` do not exclude objects in a data sink. |
| ObjectConditions object_conditions = 5; |
| |
| // If the option `deleteObjectsUniqueInSink` is `true`, object conditions |
| // based on objects' `lastModificationTime` are ignored and do not exclude |
| // objects in a data source or a data sink. |
| TransferOptions transfer_options = 6; |
| } |
| |
| // Transfers can be scheduled to recur or to run just once. |
| message Schedule { |
| // The first day the recurring transfer is scheduled to run. If |
| // `scheduleStartDate` is in the past, the transfer will run for the first |
| // time on the following day. |
| // Required. |
| google.type.Date schedule_start_date = 1; |
| |
| // The last day the recurring transfer will be run. If `scheduleEndDate` |
| // is the same as `scheduleStartDate`, the transfer will be executed only |
| // once. |
| google.type.Date schedule_end_date = 2; |
| |
| // The time in UTC at which the transfer will be scheduled to start in a day. |
| // Transfers may start later than this time. If not specified, recurring and |
| // one-time transfers that are scheduled to run today will run immediately; |
| // recurring transfers that are scheduled to run on a future date will start |
| // at approximately midnight UTC on that date. Note that when configuring a |
| // transfer with the Cloud Platform Console, the transfer's start time in a |
| // day is specified in your local timezone. |
| google.type.TimeOfDay start_time_of_day = 3; |
| } |
| |
| // This resource represents the configuration of a transfer job that runs |
| // periodically. |
| message TransferJob { |
| // The status of the transfer job. |
| enum Status { |
| // Zero is an illegal value. |
| STATUS_UNSPECIFIED = 0; |
| |
| // New transfers will be performed based on the schedule. |
| ENABLED = 1; |
| |
| // New transfers will not be scheduled. |
| DISABLED = 2; |
| |
| // This is a soft delete state. After a transfer job is set to this |
| // state, the job and all the transfer executions are subject to |
| // garbage collection. |
| DELETED = 3; |
| } |
| |
| // A globally unique name assigned by Storage Transfer Service when the |
| // job is created. This field should be left empty in requests to create a new |
| // transfer job; otherwise, the requests result in an `INVALID_ARGUMENT` |
| // error. |
| string name = 1; |
| |
| // A description provided by the user for the job. Its max length is 1024 |
| // bytes when Unicode-encoded. |
| string description = 2; |
| |
| // The ID of the Google Cloud Platform Console project that owns the job. |
| // Required. |
| string project_id = 3; |
| |
| // Transfer specification. |
| // Required. |
| TransferSpec transfer_spec = 4; |
| |
| // Schedule specification. |
| // Required. |
| Schedule schedule = 5; |
| |
| // Status of the job. This value MUST be specified for |
| // `CreateTransferJobRequests`. |
| // |
| // NOTE: The effect of the new job status takes place during a subsequent job |
| // run. For example, if you change the job status from `ENABLED` to |
| // `DISABLED`, and an operation spawned by the transfer is running, the status |
| // change would not affect the current operation. |
| Status status = 6; |
| |
| // This field cannot be changed by user requests. |
| google.protobuf.Timestamp creation_time = 7; |
| |
| // This field cannot be changed by user requests. |
| google.protobuf.Timestamp last_modification_time = 8; |
| |
| // This field cannot be changed by user requests. |
| google.protobuf.Timestamp deletion_time = 9; |
| } |
| |
| // An entry describing an error that has occurred. |
| message ErrorLogEntry { |
| // A URL that refers to the target (a data source, a data sink, |
| // or an object) with which the error is associated. |
| // Required. |
| string url = 1; |
| |
| // A list of messages that carry the error details. |
| repeated string error_details = 3; |
| } |
| |
| // A summary of errors by error code, plus a count and sample error log |
| // entries. |
| message ErrorSummary { |
| // Required. |
| google.rpc.Code error_code = 1; |
| |
| // Count of this type of error. |
| // Required. |
| int64 error_count = 2; |
| |
| // Error samples. |
| repeated ErrorLogEntry error_log_entries = 3; |
| } |
| |
| // A collection of counters that report the progress of a transfer operation. |
| message TransferCounters { |
| // Objects found in the data source that are scheduled to be transferred, |
| // which will be copied, excluded based on conditions, or skipped due to |
| // failures. |
| int64 objects_found_from_source = 1; |
| |
| // Bytes found in the data source that are scheduled to be transferred, |
| // which will be copied, excluded based on conditions, or skipped due to |
| // failures. |
| int64 bytes_found_from_source = 2; |
| |
| // Objects found only in the data sink that are scheduled to be deleted. |
| int64 objects_found_only_from_sink = 3; |
| |
| // Bytes found only in the data sink that are scheduled to be deleted. |
| int64 bytes_found_only_from_sink = 4; |
| |
| // Objects in the data source that are not transferred because they already |
| // exist in the data sink. |
| int64 objects_from_source_skipped_by_sync = 5; |
| |
| // Bytes in the data source that are not transferred because they already |
| // exist in the data sink. |
| int64 bytes_from_source_skipped_by_sync = 6; |
| |
| // Objects that are copied to the data sink. |
| int64 objects_copied_to_sink = 7; |
| |
| // Bytes that are copied to the data sink. |
| int64 bytes_copied_to_sink = 8; |
| |
| // Objects that are deleted from the data source. |
| int64 objects_deleted_from_source = 9; |
| |
| // Bytes that are deleted from the data source. |
| int64 bytes_deleted_from_source = 10; |
| |
| // Objects that are deleted from the data sink. |
| int64 objects_deleted_from_sink = 11; |
| |
| // Bytes that are deleted from the data sink. |
| int64 bytes_deleted_from_sink = 12; |
| |
| // Objects in the data source that failed during the transfer. |
| int64 objects_from_source_failed = 13; |
| |
| // Bytes in the data source that failed during the transfer. |
| int64 bytes_from_source_failed = 14; |
| |
| // Objects that failed to be deleted from the data sink. |
| int64 objects_failed_to_delete_from_sink = 15; |
| |
| // Bytes that failed to be deleted from the data sink. |
| int64 bytes_failed_to_delete_from_sink = 16; |
| } |
| |
| // A description of the execution of a transfer. |
| message TransferOperation { |
| // The status of a TransferOperation. |
| enum Status { |
| // Zero is an illegal value. |
| STATUS_UNSPECIFIED = 0; |
| |
| // In progress. |
| IN_PROGRESS = 1; |
| |
| // Paused. |
| PAUSED = 2; |
| |
| // Completed successfully. |
| SUCCESS = 3; |
| |
| // Terminated due to an unrecoverable failure. |
| FAILED = 4; |
| |
| // Aborted by the user. |
| ABORTED = 5; |
| } |
| |
| // A globally unique ID assigned by the system. |
| string name = 1; |
| |
| // The ID of the Google Cloud Platform Console project that owns the operation. |
| // Required. |
| string project_id = 2; |
| |
| // Transfer specification. |
| // Required. |
| TransferSpec transfer_spec = 3; |
| |
| // Start time of this transfer execution. |
| google.protobuf.Timestamp start_time = 4; |
| |
| // End time of this transfer execution. |
| google.protobuf.Timestamp end_time = 5; |
| |
| // Status of the transfer operation. |
| Status status = 6; |
| |
| // Information about the progress of the transfer operation. |
| TransferCounters counters = 7; |
| |
| // Summarizes errors encountered with sample error log entries. |
| repeated ErrorSummary error_breakdowns = 8; |
| |
| // The name of the transfer job that triggers this transfer operation. |
| string transfer_job_name = 9; |
| } |