123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952 |
- // Copyright 2022 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.storage.v1;
- import "google/protobuf/timestamp.proto";
- import "google/protobuf/wrappers.proto";
- option go_package = "google.golang.org/genproto/googleapis/storage/v1;storage";
- option java_multiple_files = true;
- option java_outer_classname = "CloudStorageResourcesProto";
- option java_package = "com.google.storage.v1";
- // A bucket.
- message Bucket {
- // Billing properties of a bucket.
- message Billing {
- // When set to true, Requester Pays is enabled for this bucket.
- bool requester_pays = 1;
- }
- // Cross-Origin Response sharing (CORS) properties for a bucket.
- // For more on GCS and CORS, see
- // https://cloud.google.com/storage/docs/cross-origin.
- // For more on CORS in general, see https://tools.ietf.org/html/rfc6454.
- message Cors {
- // The list of Origins eligible to receive CORS response headers. See
- // [https://tools.ietf.org/html/rfc6454][RFC 6454] for more on origins.
- // Note: "*" is permitted in the list of origins, and means "any Origin".
- repeated string origin = 1;
- // The list of HTTP methods on which to include CORS response headers,
- // (`GET`, `OPTIONS`, `POST`, etc) Note: "*" is permitted in the list of
- // methods, and means "any method".
- repeated string method = 2;
- // The list of HTTP headers other than the
- // [https://www.w3.org/TR/cors/#simple-response-header][simple response
- // headers] to give permission for the user-agent to share across domains.
- repeated string response_header = 3;
- // The value, in seconds, to return in the
- // [https://www.w3.org/TR/cors/#access-control-max-age-response-header][Access-Control-Max-Age
- // header] used in preflight responses.
- int32 max_age_seconds = 4;
- }
- // Encryption properties of a bucket.
- message Encryption {
- // A Cloud KMS key that will be used to encrypt objects inserted into this
- // bucket, if no encryption method is specified.
- string default_kms_key_name = 1;
- }
- // Bucket restriction options currently enforced on the bucket.
- message IamConfiguration {
- message UniformBucketLevelAccess {
- // If set, access checks only use bucket-level IAM policies or above.
- bool enabled = 1;
- // The deadline time for changing
- // <code>iamConfiguration.uniformBucketLevelAccess.enabled</code> from
- // true to false in [https://tools.ietf.org/html/rfc3339][RFC 3339]. After
- // the deadline is passed the field is immutable.
- google.protobuf.Timestamp locked_time = 2;
- }
- // Public Access Prevention configuration values.
- enum PublicAccessPrevention {
- // No specified PublicAccessPrevention.
- PUBLIC_ACCESS_PREVENTION_UNSPECIFIED = 0;
- // Prevents access from being granted to public members 'allUsers' and
- // 'allAuthenticatedUsers'. Prevents attempts to grant new access to
- // public members.
- ENFORCED = 1;
- // This setting is inherited from Org Policy. Does not prevent access from
- // being granted to public members 'allUsers' or 'allAuthenticatedUsers'.
- INHERITED = 2;
- }
- UniformBucketLevelAccess uniform_bucket_level_access = 1;
- // Whether IAM will enforce public access prevention.
- PublicAccessPrevention public_access_prevention = 2;
- }
- // Lifecycle properties of a bucket.
- // For more information, see https://cloud.google.com/storage/docs/lifecycle.
- message Lifecycle {
- // A lifecycle Rule, combining an action to take on an object and a
- // condition which will trigger that action.
- message Rule {
- // An action to take on an object.
- message Action {
- // Type of the action. Currently, only `Delete`, `SetStorageClass`, and
- // `AbortIncompleteMultipartUpload` are supported.
- string type = 1;
- // Target storage class. Required iff the type of the action is
- // SetStorageClass.
- string storage_class = 2;
- }
- // A condition of an object which triggers some action.
- message Condition {
- // Age of an object (in days). This condition is satisfied when an
- // object reaches the specified age.
- int32 age = 1;
- // A date in [RFC 3339][1] format with only the date part (for
- // instance, "2013-01-15"). This condition is satisfied when an
- // object is created before midnight of the specified date in UTC.
- // [1]: https://tools.ietf.org/html/rfc3339
- google.protobuf.Timestamp created_before = 2;
- // Relevant only for versioned objects. If the value is
- // `true`, this condition matches live objects; if the value
- // is `false`, it matches archived objects.
- google.protobuf.BoolValue is_live = 3;
- // Relevant only for versioned objects. If the value is N, this
- // condition is satisfied when there are at least N versions (including
- // the live version) newer than this version of the object.
- int32 num_newer_versions = 4;
- // Objects having any of the storage classes specified by this condition
- // will be matched. Values include `MULTI_REGIONAL`, `REGIONAL`,
- // `NEARLINE`, `COLDLINE`, `STANDARD`, and
- // `DURABLE_REDUCED_AVAILABILITY`.
- repeated string matches_storage_class = 5;
- // A regular expression that satisfies the RE2 syntax. This condition is
- // satisfied when the name of the object matches the RE2 pattern. Note:
- // This feature is currently in the "Early Access" launch stage and is
- // only available to an allowlisted set of users; that means that this
- // feature may be changed in backward-incompatible ways and that it is
- // not guaranteed to be released.
- string matches_pattern = 6;
- // Number of days that has elapsed since the custom timestamp set on an
- // object.
- int32 days_since_custom_time = 7;
- // An object matches this condition if the custom timestamp set on the
- // object is before this timestamp.
- google.protobuf.Timestamp custom_time_before = 8;
- // This condition is relevant only for versioned objects. An object
- // version satisfies this condition only if these many days have been
- // passed since it became noncurrent. The value of the field must be a
- // nonnegative integer. If it's zero, the object version will become
- // eligible for Lifecycle action as soon as it becomes noncurrent.
- int32 days_since_noncurrent_time = 9;
- // This condition is relevant only for versioned objects. An object
- // version satisfies this condition only if it became noncurrent before
- // the specified timestamp.
- google.protobuf.Timestamp noncurrent_time_before = 10;
- // List of object name prefixes. If any prefix exactly matches the
- // beginning of the object name, the condition evaluates to true.
- repeated string matches_prefix = 11;
- // List of object name suffixes. If any suffix exactly matches the
- // end of the object name, the condition evaluates to true.
- repeated string matches_suffix = 12;
- }
- // The action to take.
- Action action = 1;
- // The condition(s) under which the action will be taken.
- Condition condition = 2;
- }
- // A lifecycle management rule, which is made of an action to take and the
- // condition(s) under which the action will be taken.
- repeated Rule rule = 1;
- }
- // Logging-related properties of a bucket.
- message Logging {
- // The destination bucket where the current bucket's logs should be placed.
- string log_bucket = 1;
- // A prefix for log object names.
- string log_object_prefix = 2;
- }
- // Retention policy properties of a bucket.
- message RetentionPolicy {
- // Server-determined value that indicates the time from which policy was
- // enforced and effective. This value is in
- // [https://tools.ietf.org/html/rfc3339][RFC 3339] format.
- google.protobuf.Timestamp effective_time = 1;
- // Once locked, an object retention policy cannot be modified.
- bool is_locked = 2;
- // The duration in seconds that objects need to be retained. Retention
- // duration must be greater than zero and less than 100 years. Note that
- // enforcement of retention periods less than a day is not guaranteed. Such
- // periods should only be used for testing purposes.
- int64 retention_period = 3;
- }
- // Properties of a bucket related to versioning.
- // For more on GCS versioning, see
- // https://cloud.google.com/storage/docs/object-versioning.
- message Versioning {
- // While set to true, versioning is fully enabled for this bucket.
- bool enabled = 1;
- }
- // Properties of a bucket related to accessing the contents as a static
- // website. For more on hosting a static website via GCS, see
- // https://cloud.google.com/storage/docs/hosting-static-website.
- message Website {
- // If the requested object path is missing, the service will ensure the path
- // has a trailing '/', append this suffix, and attempt to retrieve the
- // resulting object. This allows the creation of `index.html`
- // objects to represent directory pages.
- string main_page_suffix = 1;
- // If the requested object path is missing, and any
- // `mainPageSuffix` object is missing, if applicable, the service
- // will return the named object from this bucket as the content for a
- // [https://tools.ietf.org/html/rfc7231#section-6.5.4][404 Not Found]
- // result.
- string not_found_page = 2;
- }
- // Configuration for a bucket's Autoclass feature.
- message Autoclass {
- // Enables Autoclass.
- bool enabled = 1;
- // Latest instant at which the `enabled` bit was flipped.
- google.protobuf.Timestamp toggle_time = 2;
- }
- // Access controls on the bucket.
- repeated BucketAccessControl acl = 1;
- // Default access controls to apply to new objects when no ACL is provided.
- repeated ObjectAccessControl default_object_acl = 2;
- // The bucket's lifecycle configuration. See
- // [https://developers.google.com/storage/docs/lifecycle]Lifecycle Management]
- // for more information.
- Lifecycle lifecycle = 3;
- // The creation time of the bucket in
- // [https://tools.ietf.org/html/rfc3339][RFC 3339] format.
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- google.protobuf.Timestamp time_created = 4;
- // The ID of the bucket. For buckets, the `id` and `name` properties are the
- // same.
- // Attempting to update this field after the bucket is created will result in
- // a [FieldViolation][google.rpc.BadRequest.FieldViolation].
- string id = 5;
- // The name of the bucket.
- // Attempting to update this field after the bucket is created will result in
- // an error.
- string name = 6;
- // The project number of the project the bucket belongs to.
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- int64 project_number = 7;
- // The metadata generation of this bucket.
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- int64 metageneration = 8;
- // The bucket's [https://www.w3.org/TR/cors/][Cross-Origin Resource Sharing]
- // (CORS) configuration.
- repeated Cors cors = 9;
- // The location of the bucket. Object data for objects in the bucket resides
- // in physical storage within this region. Defaults to `US`. See the
- // [https://developers.google.com/storage/docs/concepts-techniques#specifyinglocations"][developer's
- // guide] for the authoritative list. Attempting to update this field after
- // the bucket is created will result in an error.
- string location = 10;
- // The bucket's default storage class, used whenever no storageClass is
- // specified for a newly-created object. This defines how objects in the
- // bucket are stored and determines the SLA and the cost of storage.
- // If this value is not specified when the bucket is created, it will default
- // to `STANDARD`. For more information, see
- // https://developers.google.com/storage/docs/storage-classes.
- string storage_class = 11;
- // HTTP 1.1 [https://tools.ietf.org/html/rfc7232#section-2.3"]Entity tag]
- // for the bucket.
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- string etag = 12;
- // The modification time of the bucket.
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- google.protobuf.Timestamp updated = 13;
- // The default value for event-based hold on newly created objects in this
- // bucket. Event-based hold is a way to retain objects indefinitely until an
- // event occurs, signified by the
- // hold's release. After being released, such objects will be subject to
- // bucket-level retention (if any). One sample use case of this flag is for
- // banks to hold loan documents for at least 3 years after loan is paid in
- // full. Here, bucket-level retention is 3 years and the event is loan being
- // paid in full. In this example, these objects will be held intact for any
- // number of years until the event has occurred (event-based hold on the
- // object is released) and then 3 more years after that. That means retention
- // duration of the objects begins from the moment event-based hold
- // transitioned from true to false. Objects under event-based hold cannot be
- // deleted, overwritten or archived until the hold is removed.
- bool default_event_based_hold = 14;
- // User-provided labels, in key/value pairs.
- map<string, string> labels = 15;
- // The bucket's website configuration, controlling how the service behaves
- // when accessing bucket contents as a web site. See the
- // [https://cloud.google.com/storage/docs/static-website][Static Website
- // Examples] for more information.
- Website website = 16;
- // The bucket's versioning configuration.
- Versioning versioning = 17;
- // The bucket's logging configuration, which defines the destination bucket
- // and optional name prefix for the current bucket's logs.
- Logging logging = 18;
- // The owner of the bucket. This is always the project team's owner group.
- Owner owner = 19;
- // Encryption configuration for a bucket.
- Encryption encryption = 20;
- // The bucket's billing configuration.
- Billing billing = 21;
- // The bucket's retention policy. The retention policy enforces a minimum
- // retention time for all objects contained in the bucket, based on their
- // creation time. Any attempt to overwrite or delete objects younger than the
- // retention period will result in a PERMISSION_DENIED error. An unlocked
- // retention policy can be modified or removed from the bucket via a
- // storage.buckets.update operation. A locked retention policy cannot be
- // removed or shortened in duration for the lifetime of the bucket.
- // Attempting to remove or decrease period of a locked retention policy will
- // result in a PERMISSION_DENIED error.
- RetentionPolicy retention_policy = 22;
- // The location type of the bucket (region, dual-region, multi-region, etc).
- string location_type = 23;
- // The bucket's IAM configuration.
- IamConfiguration iam_configuration = 24;
- // The zone or zones from which the bucket is intended to use zonal quota.
- // Requests for data from outside the specified affinities are still allowed
- // but won't be able to use zonal quota. The values are case-insensitive.
- // Attempting to update this field after bucket is created will result in an
- // error.
- repeated string zone_affinity = 25 [deprecated = true];
- // Reserved for future use.
- bool satisfies_pzs = 26;
- // The bucket's autoclass configuration. If there is no configuration, the
- // Autoclass feature will be disabled and have no effect on the bucket.
- Autoclass autoclass = 28;
- }
- // An access-control entry.
- message BucketAccessControl {
- // The access permission for the entity.
- string role = 1;
- // HTTP 1.1 ["https://tools.ietf.org/html/rfc7232#section-2.3][Entity tag]
- // for the access-control entry.
- string etag = 2;
- // The ID of the access-control entry.
- string id = 3;
- // The name of the bucket.
- string bucket = 4;
- // The entity holding the permission, in one of the following forms:
- // * `user-{userid}`
- // * `user-{email}`
- // * `group-{groupid}`
- // * `group-{email}`
- // * `domain-{domain}`
- // * `project-{team-projectid}`
- // * `allUsers`
- // * `allAuthenticatedUsers`
- // Examples:
- // * The user `liz@example.com` would be `user-liz@example.com`.
- // * The group `example@googlegroups.com` would be
- // `group-example@googlegroups.com`
- // * All members of the Google Apps for Business domain `example.com` would be
- // `domain-example.com`
- string entity = 6;
- // The ID for the entity, if any.
- string entity_id = 7;
- // The email address associated with the entity, if any.
- string email = 8;
- // The domain associated with the entity, if any.
- string domain = 9;
- // The project team associated with the entity, if any.
- ProjectTeam project_team = 10;
- }
- // The response to a call to BucketAccessControls.ListBucketAccessControls.
- message ListBucketAccessControlsResponse {
- // The list of items.
- repeated BucketAccessControl items = 1;
- }
- // The result of a call to Buckets.ListBuckets
- message ListBucketsResponse {
- // The list of items.
- repeated Bucket items = 1;
- // The continuation token, used to page through large result sets. Provide
- // this value in a subsequent request to return the next page of results.
- string next_page_token = 2;
- }
- // An notification channel used to watch for resource changes.
- message Channel {
- // A UUID or similar unique string that identifies this channel.
- string id = 1;
- // An opaque ID that identifies the resource being watched on this channel.
- // Stable across different API versions.
- string resource_id = 2;
- // A version-specific identifier for the watched resource.
- string resource_uri = 3;
- // An arbitrary string delivered to the target address with each notification
- // delivered over this channel. Optional.
- string token = 4;
- // Date and time of notification channel expiration. Optional.
- google.protobuf.Timestamp expiration = 5;
- // The type of delivery mechanism used for this channel.
- string type = 6;
- // The address where notifications are delivered for this channel.
- string address = 7;
- // Additional parameters controlling delivery channel behavior. Optional.
- map<string, string> params = 8;
- // A Boolean value to indicate whether payload is wanted. Optional.
- bool payload = 9;
- }
- // The result of a call to Channels.ListChannels
- message ListChannelsResponse {
- message Items {
- // User-specified name for a channel. Needed to unsubscribe.
- string channel_id = 1;
- // Opaque value generated by GCS representing a bucket. Needed to
- // unsubscribe.
- string resource_id = 2;
- // Url used to identify where notifications are sent to.
- string push_url = 3;
- // Email address of the subscriber.
- string subscriber_email = 4;
- // Time when the channel was created.
- google.protobuf.Timestamp creation_time = 5;
- }
- // The list of notification channels for a bucket.
- repeated Items items = 1;
- }
- // Message used to convey content being read or written, along with its
- // checksum.
- message ChecksummedData {
- // The data.
- bytes content = 1;
- // CRC32C digest of the contents.
- google.protobuf.UInt32Value crc32c = 2;
- }
- // Message used for storing full (not subrange) object checksums.
- message ObjectChecksums {
- // CRC32C digest of the object data. Computed by the GCS service for
- // all written objects, and validated by the GCS service against
- // client-supplied values if present in an InsertObjectRequest.
- google.protobuf.UInt32Value crc32c = 1;
- // Hex-encoded MD5 hash of the object data (hexdigest). Whether/how this
- // checksum is provided and validated is service-dependent.
- string md5_hash = 2;
- }
- // A collection of enums used in multiple places throughout the API.
- message CommonEnums {
- // A set of properties to return in a response.
- enum Projection {
- // No specified projection.
- PROJECTION_UNSPECIFIED = 0;
- // Omit `owner`, `acl`, and `defaultObjectAcl` properties.
- NO_ACL = 1;
- // Include all properties.
- FULL = 2;
- }
- // Predefined or "canned" aliases for sets of specific bucket ACL entries.
- enum PredefinedBucketAcl {
- // No predefined ACL.
- PREDEFINED_BUCKET_ACL_UNSPECIFIED = 0;
- // Project team owners get `OWNER` access, and
- // `allAuthenticatedUsers` get `READER` access.
- BUCKET_ACL_AUTHENTICATED_READ = 1;
- // Project team owners get `OWNER` access.
- BUCKET_ACL_PRIVATE = 2;
- // Project team members get access according to their roles.
- BUCKET_ACL_PROJECT_PRIVATE = 3;
- // Project team owners get `OWNER` access, and
- // `allUsers` get `READER` access.
- BUCKET_ACL_PUBLIC_READ = 4;
- // Project team owners get `OWNER` access, and
- // `allUsers` get `WRITER` access.
- BUCKET_ACL_PUBLIC_READ_WRITE = 5;
- }
- // Predefined or "canned" aliases for sets of specific object ACL entries.
- enum PredefinedObjectAcl {
- // No predefined ACL.
- PREDEFINED_OBJECT_ACL_UNSPECIFIED = 0;
- // Object owner gets `OWNER` access, and
- // `allAuthenticatedUsers` get `READER` access.
- OBJECT_ACL_AUTHENTICATED_READ = 1;
- // Object owner gets `OWNER` access, and project team owners get
- // `OWNER` access.
- OBJECT_ACL_BUCKET_OWNER_FULL_CONTROL = 2;
- // Object owner gets `OWNER` access, and project team owners get
- // `READER` access.
- OBJECT_ACL_BUCKET_OWNER_READ = 3;
- // Object owner gets `OWNER` access.
- OBJECT_ACL_PRIVATE = 4;
- // Object owner gets `OWNER` access, and project team members get
- // access according to their roles.
- OBJECT_ACL_PROJECT_PRIVATE = 5;
- // Object owner gets `OWNER` access, and `allUsers`
- // get `READER` access.
- OBJECT_ACL_PUBLIC_READ = 6;
- }
- }
- // Specifies a requested range of bytes to download.
- message ContentRange {
- // The starting offset of the object data.
- int64 start = 1;
- // The ending offset of the object data.
- int64 end = 2;
- // The complete length of the object data.
- int64 complete_length = 3;
- }
- // Hmac Key Metadata, which includes all information other than the secret.
- message HmacKeyMetadata {
- // Resource name ID of the key in the format <projectId>/<accessId>.
- string id = 1;
- // Globally unique id for keys.
- string access_id = 2;
- // The project ID that the hmac key is contained in.
- string project_id = 3;
- // Email of the service account the key authenticates as.
- string service_account_email = 4;
- // State of the key. One of ACTIVE, INACTIVE, or DELETED.
- string state = 5;
- // The creation time of the HMAC key in RFC 3339 format.
- google.protobuf.Timestamp time_created = 6;
- // The last modification time of the HMAC key metadata in RFC 3339 format.
- google.protobuf.Timestamp updated = 7;
- // Tag updated with each key update.
- string etag = 8;
- }
- // A subscription to receive Google PubSub notifications.
- message Notification {
- // The Cloud PubSub topic to which this subscription publishes. Formatted as:
- // '//pubsub.googleapis.com/projects/{project-identifier}/topics/{my-topic}'
- string topic = 1;
- // If present, only send notifications about listed event types. If empty,
- // sent notifications for all event types.
- repeated string event_types = 2;
- // An optional list of additional attributes to attach to each Cloud PubSub
- // message published for this notification subscription.
- map<string, string> custom_attributes = 3;
- // HTTP 1.1 [https://tools.ietf.org/html/rfc7232#section-2.3][Entity tag]
- // for this subscription notification.
- string etag = 4;
- // If present, only apply this notification configuration to object names that
- // begin with this prefix.
- string object_name_prefix = 5;
- // The desired content of the Payload.
- string payload_format = 6;
- // The ID of the notification.
- string id = 7;
- }
- // The result of a call to Notifications.ListNotifications
- message ListNotificationsResponse {
- // The list of items.
- repeated Notification items = 1;
- }
- // An object.
- message Object {
- // Describes the customer-specified mechanism used to store the data at rest.
- message CustomerEncryption {
- // The encryption algorithm.
- string encryption_algorithm = 1;
- // SHA256 hash value of the encryption key.
- string key_sha256 = 2;
- }
- // Content-Encoding of the object data, matching
- // [https://tools.ietf.org/html/rfc7231#section-3.1.2.2][RFC 7231 §3.1.2.2]
- string content_encoding = 1;
- // Content-Disposition of the object data, matching
- // [https://tools.ietf.org/html/rfc6266][RFC 6266].
- string content_disposition = 2;
- // Cache-Control directive for the object data, matching
- // [https://tools.ietf.org/html/rfc7234#section-5.2"][RFC 7234 §5.2].
- // If omitted, and the object is accessible to all anonymous users, the
- // default will be `public, max-age=3600`.
- string cache_control = 3;
- // Access controls on the object.
- repeated ObjectAccessControl acl = 4;
- // Content-Language of the object data, matching
- // [https://tools.ietf.org/html/rfc7231#section-3.1.3.2][RFC 7231 §3.1.3.2].
- string content_language = 5;
- // The version of the metadata for this object at this generation. Used for
- // preconditions and for detecting changes in metadata. A metageneration
- // number is only meaningful in the context of a particular generation of a
- // particular object.
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- int64 metageneration = 6;
- // The deletion time of the object. Will be returned if and only if this
- // version of the object has been deleted.
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- google.protobuf.Timestamp time_deleted = 7;
- // Content-Type of the object data, matching
- // [https://tools.ietf.org/html/rfc7231#section-3.1.1.5][RFC 7231 §3.1.1.5].
- // If an object is stored without a Content-Type, it is served as
- // `application/octet-stream`.
- string content_type = 8;
- // Content-Length of the object data in bytes, matching
- // [https://tools.ietf.org/html/rfc7230#section-3.3.2][RFC 7230 §3.3.2].
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- int64 size = 9;
- // The creation time of the object.
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- google.protobuf.Timestamp time_created = 10;
- // CRC32c checksum. For more information about using the CRC32c
- // checksum, see
- // [https://cloud.google.com/storage/docs/hashes-etags#json-api][Hashes and
- // ETags: Best Practices]. This is a server determined value and should not be
- // supplied by the user when sending an Object. The server will ignore any
- // value provided. Users should instead use the object_checksums field on the
- // InsertObjectRequest when uploading an object.
- google.protobuf.UInt32Value crc32c = 11;
- // Number of underlying components that make up this object. Components are
- // accumulated by compose operations.
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- int32 component_count = 12;
- // MD5 hash of the data; encoded using base64 as per
- // [https://tools.ietf.org/html/rfc4648#section-4][RFC 4648 §4]. For more
- // information about using the MD5 hash, see
- // [https://cloud.google.com/storage/docs/hashes-etags#json-api][Hashes and
- // ETags: Best Practices]. This is a server determined value and should not be
- // supplied by the user when sending an Object. The server will ignore any
- // value provided. Users should instead use the object_checksums field on the
- // InsertObjectRequest when uploading an object.
- string md5_hash = 13;
- // HTTP 1.1 Entity tag for the object. See
- // [https://tools.ietf.org/html/rfc7232#section-2.3][RFC 7232 §2.3].
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- string etag = 14;
- // The modification time of the object metadata.
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- google.protobuf.Timestamp updated = 15;
- // Storage class of the object.
- string storage_class = 16;
- // Cloud KMS Key used to encrypt this object, if the object is encrypted by
- // such a key.
- string kms_key_name = 17;
- // The time at which the object's storage class was last changed. When the
- // object is initially created, it will be set to time_created.
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- google.protobuf.Timestamp time_storage_class_updated = 18;
- // Whether an object is under temporary hold. While this flag is set to true,
- // the object is protected against deletion and overwrites. A common use case
- // of this flag is regulatory investigations where objects need to be retained
- // while the investigation is ongoing. Note that unlike event-based hold,
- // temporary hold does not impact retention expiration time of an object.
- bool temporary_hold = 19;
- // A server-determined value that specifies the earliest time that the
- // object's retention period expires. This value is in
- // [https://tools.ietf.org/html/rfc3339][RFC 3339] format.
- // Note 1: This field is not provided for objects with an active event-based
- // hold, since retention expiration is unknown until the hold is removed.
- // Note 2: This value can be provided even when temporary hold is set (so that
- // the user can reason about policy without having to first unset the
- // temporary hold).
- google.protobuf.Timestamp retention_expiration_time = 20;
- // User-provided metadata, in key/value pairs.
- map<string, string> metadata = 21;
- // Whether an object is under event-based hold. Event-based hold is a way to
- // retain objects until an event occurs, which is signified by the
- // hold's release (i.e. this value is set to false). After being released (set
- // to false), such objects will be subject to bucket-level retention (if any).
- // One sample use case of this flag is for banks to hold loan documents for at
- // least 3 years after loan is paid in full. Here, bucket-level retention is 3
- // years and the event is the loan being paid in full. In this example, these
- // objects will be held intact for any number of years until the event has
- // occurred (event-based hold on the object is released) and then 3 more years
- // after that. That means retention duration of the objects begins from the
- // moment event-based hold transitioned from true to false.
- google.protobuf.BoolValue event_based_hold = 29;
- // The name of the object.
- // Attempting to update this field after the object is created will result in
- // an error.
- string name = 23;
- // The ID of the object, including the bucket name, object name, and
- // generation number.
- // Attempting to update this field after the object is created will result in
- // an error.
- string id = 24;
- // The name of the bucket containing this object.
- // Attempting to update this field after the object is created will result in
- // an error.
- string bucket = 25;
- // The content generation of this object. Used for object versioning.
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- int64 generation = 26;
- // The owner of the object. This will always be the uploader of the object.
- // Attempting to set or update this field will result in a
- // [FieldViolation][google.rpc.BadRequest.FieldViolation].
- Owner owner = 27;
- // Metadata of customer-supplied encryption key, if the object is encrypted by
- // such a key.
- CustomerEncryption customer_encryption = 28;
- // A user-specified timestamp set on an object.
- google.protobuf.Timestamp custom_time = 30;
- }
- // An access-control entry.
- message ObjectAccessControl {
- // The access permission for the entity.
- string role = 1;
- // HTTP 1.1 Entity tag for the access-control entry.
- // See [https://tools.ietf.org/html/rfc7232#section-2.3][RFC 7232 §2.3].
- string etag = 2;
- // The ID of the access-control entry.
- string id = 3;
- // The name of the bucket.
- string bucket = 4;
- // The name of the object, if applied to an object.
- string object = 5;
- // The content generation of the object, if applied to an object.
- int64 generation = 6;
- // The entity holding the permission, in one of the following forms:
- // * `user-{userid}`
- // * `user-{email}`
- // * `group-{groupid}`
- // * `group-{email}`
- // * `domain-{domain}`
- // * `project-{team-projectid}`
- // * `allUsers`
- // * `allAuthenticatedUsers`
- // Examples:
- // * The user `liz@example.com` would be `user-liz@example.com`.
- // * The group `example@googlegroups.com` would be
- // `group-example@googlegroups.com`.
- // * All members of the Google Apps for Business domain `example.com` would be
- // `domain-example.com`.
- string entity = 7;
- // The ID for the entity, if any.
- string entity_id = 8;
- // The email address associated with the entity, if any.
- string email = 9;
- // The domain associated with the entity, if any.
- string domain = 10;
- // The project team associated with the entity, if any.
- ProjectTeam project_team = 11;
- }
- // The result of a call to ObjectAccessControls.ListObjectAccessControls.
- message ListObjectAccessControlsResponse {
- // The list of items.
- repeated ObjectAccessControl items = 1;
- }
- // The result of a call to Objects.ListObjects
- message ListObjectsResponse {
- // The list of prefixes of objects matching-but-not-listed up to and including
- // the requested delimiter.
- repeated string prefixes = 1;
- // The list of items.
- repeated Object items = 2;
- // The continuation token, used to page through large result sets. Provide
- // this value in a subsequent request to return the next page of results.
- string next_page_token = 3;
- }
- // Represents the Viewers, Editors, or Owners of a given project.
- message ProjectTeam {
- // The project number.
- string project_number = 1;
- // The team.
- string team = 2;
- }
- // A subscription to receive Google PubSub notifications.
- message ServiceAccount {
- // The ID of the notification.
- string email_address = 1;
- }
- // The owner of a specific resource.
- message Owner {
- // The entity, in the form `user-`*userId*.
- string entity = 1;
- // The ID for the entity.
- string entity_id = 2;
- }
|