• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2023 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.cloud.filestore.v1beta1;
18
19import "google/api/annotations.proto";
20import "google/api/client.proto";
21import "google/api/field_behavior.proto";
22import "google/api/resource.proto";
23import "google/cloud/common/operation_metadata.proto";
24import "google/longrunning/operations.proto";
25import "google/protobuf/empty.proto";
26import "google/protobuf/field_mask.proto";
27import "google/protobuf/timestamp.proto";
28import "google/protobuf/wrappers.proto";
29
30option csharp_namespace = "Google.Cloud.Filestore.V1Beta1";
31option go_package = "cloud.google.com/go/filestore/apiv1beta1/filestorepb;filestorepb";
32option java_multiple_files = true;
33option java_outer_classname = "CloudFilestoreServiceProto";
34option java_package = "com.google.cloud.filestore.v1beta1";
35option php_namespace = "Google\\Cloud\\Filestore\\V1beta1";
36
37// Configures and manages Filestore resources.
38//
39// Filestore Manager v1beta1.
40//
41// The `file.googleapis.com` service implements the Filestore API and
42// defines the following model for managing resources:
43// * The service works with a collection of cloud projects, named: `/projects/*`
44// * Each project has a collection of available locations, named: `/locations/*`
45// * Each location has a collection of instances and backups, named:
46// `/instances/*` and `/backups/*` respectively.
47// * As such, Filestore instances are resources of the form:
48//   `/projects/{project_id}/locations/{location_id}/instances/{instance_id}`
49//   backups are resources of the form:
50//   `/projects/{project_id}/locations/{location_id}/backup/{backup_id}`
51//
52// Note that location_id can represent a Google Cloud `zone` or `region`
53// depending on the resource. for example: A zonal Filestore instance:
54// * `projects/my-project/locations/us-central1-c/instances/my-basic-tier-filer`
55// A regional Filestore instance:
56// * `projects/my-project/locations/us-central1/instances/my-enterprise-filer`
57service CloudFilestoreManager {
58  option (google.api.default_host) = "file.googleapis.com";
59  option (google.api.oauth_scopes) =
60      "https://www.googleapis.com/auth/cloud-platform";
61
62  // Lists all instances in a project for either a specified location
63  // or for all locations.
64  rpc ListInstances(ListInstancesRequest) returns (ListInstancesResponse) {
65    option (google.api.http) = {
66      get: "/v1beta1/{parent=projects/*/locations/*}/instances"
67    };
68    option (google.api.method_signature) = "parent";
69  }
70
71  // Gets the details of a specific instance.
72  rpc GetInstance(GetInstanceRequest) returns (Instance) {
73    option (google.api.http) = {
74      get: "/v1beta1/{name=projects/*/locations/*/instances/*}"
75    };
76    option (google.api.method_signature) = "name";
77  }
78
79  // Creates an instance.
80  // When creating from a backup, the capacity of the new instance needs to be
81  // equal to or larger than the capacity of the backup (and also equal to or
82  // larger than the minimum capacity of the tier).
83  rpc CreateInstance(CreateInstanceRequest)
84      returns (google.longrunning.Operation) {
85    option (google.api.http) = {
86      post: "/v1beta1/{parent=projects/*/locations/*}/instances"
87      body: "instance"
88    };
89    option (google.api.method_signature) = "parent,instance,instance_id";
90    option (google.longrunning.operation_info) = {
91      response_type: "Instance"
92      metadata_type: "google.cloud.common.OperationMetadata"
93    };
94  }
95
96  // Updates the settings of a specific instance.
97  rpc UpdateInstance(UpdateInstanceRequest)
98      returns (google.longrunning.Operation) {
99    option (google.api.http) = {
100      patch: "/v1beta1/{instance.name=projects/*/locations/*/instances/*}"
101      body: "instance"
102    };
103    option (google.api.method_signature) = "instance,update_mask";
104    option (google.longrunning.operation_info) = {
105      response_type: "Instance"
106      metadata_type: "google.cloud.common.OperationMetadata"
107    };
108  }
109
110  // Restores an existing instance's file share from a backup.
111  //
112  // The capacity of the instance needs to be equal to or larger than the
113  // capacity of the backup (and also equal to or larger than the minimum
114  // capacity of the tier).
115  rpc RestoreInstance(RestoreInstanceRequest)
116      returns (google.longrunning.Operation) {
117    option (google.api.http) = {
118      post: "/v1beta1/{name=projects/*/locations/*/instances/*}:restore"
119      body: "*"
120    };
121    option (google.longrunning.operation_info) = {
122      response_type: "Instance"
123      metadata_type: "google.cloud.common.OperationMetadata"
124    };
125  }
126
127  // Revert an existing instance's file system to a specified snapshot.
128  rpc RevertInstance(RevertInstanceRequest)
129      returns (google.longrunning.Operation) {
130    option (google.api.http) = {
131      post: "/v1beta1/{name=projects/*/locations/*/instances/*}:revert"
132      body: "*"
133    };
134    option (google.longrunning.operation_info) = {
135      response_type: "Instance"
136      metadata_type: "google.cloud.common.OperationMetadata"
137    };
138  }
139
140  // Deletes an instance.
141  rpc DeleteInstance(DeleteInstanceRequest)
142      returns (google.longrunning.Operation) {
143    option (google.api.http) = {
144      delete: "/v1beta1/{name=projects/*/locations/*/instances/*}"
145    };
146    option (google.api.method_signature) = "name";
147    option (google.longrunning.operation_info) = {
148      response_type: "google.protobuf.Empty"
149      metadata_type: "google.cloud.common.OperationMetadata"
150    };
151  }
152
153  // Lists all snapshots in a project for either a specified location
154  // or for all locations.
155  rpc ListSnapshots(ListSnapshotsRequest) returns (ListSnapshotsResponse) {
156    option (google.api.http) = {
157      get: "/v1beta1/{parent=projects/*/locations/*/instances/*}/snapshots"
158    };
159    option (google.api.method_signature) = "parent";
160  }
161
162  // Gets the details of a specific snapshot.
163  rpc GetSnapshot(GetSnapshotRequest) returns (Snapshot) {
164    option (google.api.http) = {
165      get: "/v1beta1/{name=projects/*/locations/*/instances/*/snapshots/*}"
166    };
167    option (google.api.method_signature) = "name";
168  }
169
170  // Creates a snapshot.
171  rpc CreateSnapshot(CreateSnapshotRequest)
172      returns (google.longrunning.Operation) {
173    option (google.api.http) = {
174      post: "/v1beta1/{parent=projects/*/locations/*/instances/*}/snapshots"
175      body: "snapshot"
176    };
177    option (google.api.method_signature) = "parent,snapshot,snapshot_id";
178    option (google.longrunning.operation_info) = {
179      response_type: "Snapshot"
180      metadata_type: "google.cloud.common.OperationMetadata"
181    };
182  }
183
184  // Deletes a snapshot.
185  rpc DeleteSnapshot(DeleteSnapshotRequest)
186      returns (google.longrunning.Operation) {
187    option (google.api.http) = {
188      delete: "/v1beta1/{name=projects/*/locations/*/instances/*/snapshots/*}"
189    };
190    option (google.api.method_signature) = "name";
191    option (google.longrunning.operation_info) = {
192      response_type: "google.protobuf.Empty"
193      metadata_type: "google.cloud.common.OperationMetadata"
194    };
195  }
196
197  // Updates the settings of a specific snapshot.
198  rpc UpdateSnapshot(UpdateSnapshotRequest)
199      returns (google.longrunning.Operation) {
200    option (google.api.http) = {
201      patch: "/v1beta1/{snapshot.name=projects/*/locations/*/instances/*/snapshots/*}"
202      body: "snapshot"
203    };
204    option (google.api.method_signature) = "snapshot,update_mask";
205    option (google.longrunning.operation_info) = {
206      response_type: "Snapshot"
207      metadata_type: "google.cloud.common.OperationMetadata"
208    };
209  }
210
211  // Lists all backups in a project for either a specified location or for all
212  // locations.
213  rpc ListBackups(ListBackupsRequest) returns (ListBackupsResponse) {
214    option (google.api.http) = {
215      get: "/v1beta1/{parent=projects/*/locations/*}/backups"
216    };
217    option (google.api.method_signature) = "parent";
218  }
219
220  // Gets the details of a specific backup.
221  rpc GetBackup(GetBackupRequest) returns (Backup) {
222    option (google.api.http) = {
223      get: "/v1beta1/{name=projects/*/locations/*/backups/*}"
224    };
225    option (google.api.method_signature) = "name";
226  }
227
228  // Creates a backup.
229  rpc CreateBackup(CreateBackupRequest) returns (google.longrunning.Operation) {
230    option (google.api.http) = {
231      post: "/v1beta1/{parent=projects/*/locations/*}/backups"
232      body: "backup"
233    };
234    option (google.api.method_signature) = "parent,backup,backup_id";
235    option (google.longrunning.operation_info) = {
236      response_type: "Backup"
237      metadata_type: "google.cloud.common.OperationMetadata"
238    };
239  }
240
241  // Deletes a backup.
242  rpc DeleteBackup(DeleteBackupRequest) returns (google.longrunning.Operation) {
243    option (google.api.http) = {
244      delete: "/v1beta1/{name=projects/*/locations/*/backups/*}"
245    };
246    option (google.api.method_signature) = "name";
247    option (google.longrunning.operation_info) = {
248      response_type: "google.protobuf.Empty"
249      metadata_type: "google.cloud.common.OperationMetadata"
250    };
251  }
252
253  // Updates the settings of a specific backup.
254  rpc UpdateBackup(UpdateBackupRequest) returns (google.longrunning.Operation) {
255    option (google.api.http) = {
256      patch: "/v1beta1/{backup.name=projects/*/locations/*/backups/*}"
257      body: "backup"
258    };
259    option (google.api.method_signature) = "backup,update_mask";
260    option (google.longrunning.operation_info) = {
261      response_type: "Backup"
262      metadata_type: "google.cloud.common.OperationMetadata"
263    };
264  }
265
266  // Lists all shares for a specified instance.
267  rpc ListShares(ListSharesRequest) returns (ListSharesResponse) {
268    option (google.api.http) = {
269      get: "/v1beta1/{parent=projects/*/locations/*/instances/*}/shares"
270    };
271    option (google.api.method_signature) = "parent";
272  }
273
274  // Gets the details of a specific share.
275  rpc GetShare(GetShareRequest) returns (Share) {
276    option (google.api.http) = {
277      get: "/v1beta1/{name=projects/*/locations/*/instances/*/shares/*}"
278    };
279    option (google.api.method_signature) = "name";
280  }
281
282  // Creates a share.
283  rpc CreateShare(CreateShareRequest) returns (google.longrunning.Operation) {
284    option (google.api.http) = {
285      post: "/v1beta1/{parent=projects/*/locations/*/instances/*}/shares"
286      body: "share"
287    };
288    option (google.api.method_signature) = "parent,share,share_id";
289    option (google.longrunning.operation_info) = {
290      response_type: "Share"
291      metadata_type: "google.cloud.common.OperationMetadata"
292    };
293  }
294
295  // Deletes a share.
296  rpc DeleteShare(DeleteShareRequest) returns (google.longrunning.Operation) {
297    option (google.api.http) = {
298      delete: "/v1beta1/{name=projects/*/locations/*/instances/*/shares/*}"
299    };
300    option (google.api.method_signature) = "name";
301    option (google.longrunning.operation_info) = {
302      response_type: "google.protobuf.Empty"
303      metadata_type: "google.cloud.common.OperationMetadata"
304    };
305  }
306
307  // Updates the settings of a specific share.
308  rpc UpdateShare(UpdateShareRequest) returns (google.longrunning.Operation) {
309    option (google.api.http) = {
310      patch: "/v1beta1/{share.name=projects/*/locations/*/instances/*/shares/*}"
311      body: "share"
312    };
313    option (google.api.method_signature) = "share,update_mask";
314    option (google.longrunning.operation_info) = {
315      response_type: "Share"
316      metadata_type: "google.cloud.common.OperationMetadata"
317    };
318  }
319}
320
321// Network configuration for the instance.
322message NetworkConfig {
323  // Internet protocol versions supported by Filestore.
324  enum AddressMode {
325    // Internet protocol not set.
326    ADDRESS_MODE_UNSPECIFIED = 0;
327
328    // Use the IPv4 internet protocol.
329    MODE_IPV4 = 1;
330  }
331
332  // Available connection modes.
333  enum ConnectMode {
334    // ConnectMode not set.
335    CONNECT_MODE_UNSPECIFIED = 0;
336
337    // Connect via direct peering to the Filestore service.
338    DIRECT_PEERING = 1;
339
340    // Connect to your Filestore instance using Private Service
341    // Access. Private services access provides an IP address range for multiple
342    // Google Cloud services, including Filestore.
343    PRIVATE_SERVICE_ACCESS = 2;
344  }
345
346  // The name of the Google Compute Engine
347  // [VPC network](https://cloud.google.com/vpc/docs/vpc) to which the
348  // instance is connected.
349  string network = 1;
350
351  // Internet protocol versions for which the instance has IP addresses
352  // assigned. For this version, only MODE_IPV4 is supported.
353  repeated AddressMode modes = 3;
354
355  // Optional, reserved_ip_range can have one of the following two types of
356  // values.
357  //
358  // * CIDR range value when using DIRECT_PEERING connect mode.
359  // * [Allocated IP address
360  // range](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-internal-ip-address)
361  // when using PRIVATE_SERVICE_ACCESS connect mode.
362  //
363  // When the name of an allocated IP address range is specified, it must be one
364  // of the ranges associated with the private service access connection.
365  // When specified as a direct CIDR value, it must be a /29 CIDR block for
366  // Basic tier, a /24 CIDR block for High Scale tier, or a /26 CIDR block for
367  // Enterprise tier in one of the [internal IP address
368  // ranges](https://www.arin.net/reference/research/statistics/address_filters/)
369  // that identifies the range of IP addresses reserved for this instance. For
370  // example, 10.0.0.0/29, 192.168.0.0/24, or 192.168.0.0/26, respectively. The
371  // range you specify can't overlap with either existing subnets or assigned IP
372  // address ranges for other Filestore instances in the selected VPC
373  // network.
374  string reserved_ip_range = 4;
375
376  // Output only. IPv4 addresses in the format
377  // `{octet1}.{octet2}.{octet3}.{octet4}` or IPv6 addresses in the format
378  // `{block1}:{block2}:{block3}:{block4}:{block5}:{block6}:{block7}:{block8}`.
379  repeated string ip_addresses = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
380
381  // The network connect mode of the Filestore instance.
382  // If not provided, the connect mode defaults to DIRECT_PEERING.
383  ConnectMode connect_mode = 6;
384}
385
386// File share configuration for the instance.
387message FileShareConfig {
388  // Required. The name of the file share. Must use 1-16 characters for the
389  // basic service tier and 1-63 characters for all other service tiers.
390  // Must use lowercase letters, numbers, or underscores `[a-z0-9_]`. Must
391  // start with a letter. Immutable.
392  string name = 1;
393
394  // File share capacity in gigabytes (GB).
395  // Filestore defines 1 GB as 1024^3 bytes.
396  int64 capacity_gb = 2;
397
398  // The source that this file share has been restored from. Empty if the file
399  // share is created from scratch.
400  oneof source {
401    // The resource name of the backup, in the format
402    // `projects/{project_id}/locations/{location_id}/backups/{backup_id}`, that
403    // this file share has been restored from.
404    string source_backup = 9 [
405      (google.api.resource_reference) = { type: "file.googleapis.com/Backup" }
406    ];
407  }
408
409  // Nfs Export Options.
410  // There is a limit of 10 export options per file share.
411  repeated NfsExportOptions nfs_export_options = 8;
412}
413
414// NFS export options specifications.
415message NfsExportOptions {
416  // The access mode.
417  enum AccessMode {
418    // AccessMode not set.
419    ACCESS_MODE_UNSPECIFIED = 0;
420
421    // The client can only read the file share.
422    READ_ONLY = 1;
423
424    // The client can read and write the file share (default).
425    READ_WRITE = 2;
426  }
427
428  // The squash mode.
429  enum SquashMode {
430    // SquashMode not set.
431    SQUASH_MODE_UNSPECIFIED = 0;
432
433    // The Root user has root access to the file share (default).
434    NO_ROOT_SQUASH = 1;
435
436    // The Root user has squashed access to the anonymous uid/gid.
437    ROOT_SQUASH = 2;
438  }
439
440  // The security flavor. In general, a "flavor" represents a designed process
441  // or system. A "security flavor" is a system designed for the purpose of
442  // authenticating a data originator (client), recipient (server), and the data
443  // they transmit between one another.
444  enum SecurityFlavor {
445    // SecurityFlavor not set.
446    SECURITY_FLAVOR_UNSPECIFIED = 0;
447
448    // The user's UNIX user-id and group-ids are transferred "in the clear" (not
449    // encrypted) on the network, unauthenticated by the NFS server (default).
450    AUTH_SYS = 1;
451
452    // End-user authentication through Kerberos V5.
453    KRB5 = 2;
454
455    // krb5 plus integrity protection (data packets are tamper proof).
456    KRB5I = 3;
457
458    // krb5i plus privacy protection (data packets are tamper proof and
459    // encrypted).
460    KRB5P = 4;
461  }
462
463  // List of either an IPv4 addresses in the format
464  // `{octet1}.{octet2}.{octet3}.{octet4}` or CIDR ranges in the format
465  // `{octet1}.{octet2}.{octet3}.{octet4}/{mask size}` which may mount the
466  // file share.
467  // Overlapping IP ranges are not allowed, both within and across
468  // NfsExportOptions. An error will be returned.
469  // The limit is 64 IP ranges/addresses for each FileShareConfig among all
470  // NfsExportOptions.
471  repeated string ip_ranges = 1;
472
473  // Either READ_ONLY, for allowing only read requests on the exported
474  // directory, or READ_WRITE, for allowing both read and write requests.
475  // The default is READ_WRITE.
476  AccessMode access_mode = 2;
477
478  // Either NO_ROOT_SQUASH, for allowing root access on the exported directory,
479  // or ROOT_SQUASH, for not allowing root access. The default is
480  // NO_ROOT_SQUASH.
481  SquashMode squash_mode = 3;
482
483  // An integer representing the anonymous user id with a default value of
484  // 65534.
485  // Anon_uid may only be set with squash_mode of ROOT_SQUASH.  An error will be
486  // returned if this field is specified for other squash_mode settings.
487  int64 anon_uid = 4;
488
489  // An integer representing the anonymous group id with a default value of
490  // 65534.
491  // Anon_gid may only be set with squash_mode of ROOT_SQUASH.  An error will be
492  // returned if this field is specified for other squash_mode settings.
493  int64 anon_gid = 5;
494
495  // The security flavors allowed for mount operations.
496  // The default is AUTH_SYS.
497  repeated SecurityFlavor security_flavors = 6;
498}
499
500// ManagedActiveDirectoryConfig contains all the parameters for connecting
501// to Managed Active Directory.
502message ManagedActiveDirectoryConfig {
503  // Fully qualified domain name.
504  string domain = 1;
505
506  // The computer name is used as a prefix to the mount remote target.
507  // Example: if the computer_name is `my-computer`, the mount command will
508  // look like: `$mount -o vers=4,sec=krb5
509  // my-computer.filestore.<domain>:<share>`.
510  string computer = 2;
511}
512
513// Directory Services configuration for Kerberos-based authentication.
514message DirectoryServicesConfig {
515  oneof config {
516    // Configuration for Managed Service for Microsoft Active Directory.
517    ManagedActiveDirectoryConfig managed_active_directory = 1;
518  }
519}
520
521// A Filestore instance.
522message Instance {
523  option (google.api.resource) = {
524    type: "file.googleapis.com/Instance"
525    pattern: "projects/{project}/locations/{location}/instances/{instance}"
526  };
527
528  // The instance state.
529  enum State {
530    // State not set.
531    STATE_UNSPECIFIED = 0;
532
533    // The instance is being created.
534    CREATING = 1;
535
536    // The instance is available for use.
537    READY = 2;
538
539    // Work is being done on the instance. You can get further details from the
540    // `statusMessage` field of the `Instance` resource.
541    REPAIRING = 3;
542
543    // The instance is shutting down.
544    DELETING = 4;
545
546    // The instance is experiencing an issue and might be unusable. You can get
547    // further details from the `statusMessage` field of the `Instance`
548    // resource.
549    ERROR = 6;
550
551    // The instance is restoring a snapshot or backup to an existing file share
552    // and may be unusable during this time.
553    RESTORING = 7;
554
555    // The instance is suspended. You can get further details from
556    // the `suspension_reasons` field of the `Instance` resource.
557    SUSPENDED = 8;
558
559    // The instance is reverting to a snapshot.
560    REVERTING = 9;
561
562    // The instance is in the process of becoming suspended.
563    SUSPENDING = 10;
564
565    // The instance is in the process of becoming active.
566    RESUMING = 11;
567  }
568
569  // Available service tiers.
570  enum Tier {
571    // Not set.
572    TIER_UNSPECIFIED = 0;
573
574    // STANDARD tier. BASIC_HDD is the preferred term for this tier.
575    STANDARD = 1;
576
577    // PREMIUM tier. BASIC_SSD is the preferred term for this tier.
578    PREMIUM = 2;
579
580    // BASIC instances offer a maximum capacity of 63.9 TB.
581    // BASIC_HDD is an alias for STANDARD Tier, offering economical
582    // performance backed by HDD.
583    BASIC_HDD = 3;
584
585    // BASIC instances offer a maximum capacity of 63.9 TB.
586    // BASIC_SSD is an alias for PREMIUM Tier, and offers improved
587    // performance backed by SSD.
588    BASIC_SSD = 4;
589
590    // HIGH_SCALE instances offer expanded capacity and performance scaling
591    // capabilities.
592    HIGH_SCALE_SSD = 6;
593
594    // ENTERPRISE instances offer the features and availability needed for
595    // mission-critical workloads.
596    ENTERPRISE = 7;
597
598    // ZONAL instances offer expanded capacity and performance scaling
599    // capabilities.
600    ZONAL = 8;
601
602    // REGIONAL instances offer the features and availability needed for
603    // mission-critical workloads.
604    REGIONAL = 9;
605  }
606
607  // SuspensionReason contains the possible reasons for a suspension.
608  enum SuspensionReason {
609    // Not set.
610    SUSPENSION_REASON_UNSPECIFIED = 0;
611
612    // The KMS key used by the instance is either revoked or denied access to.
613    KMS_KEY_ISSUE = 1;
614  }
615
616  // File access protocol.
617  enum FileProtocol {
618    // FILE_PROTOCOL_UNSPECIFIED serves a "not set" default value when
619    // a FileProtocol is a separate field in a message.
620    FILE_PROTOCOL_UNSPECIFIED = 0;
621
622    // NFS 3.0.
623    NFS_V3 = 1;
624
625    // NFS 4.1.
626    NFS_V4_1 = 2;
627  }
628
629  // Output only. The resource name of the instance, in the format
630  // `projects/{project_id}/locations/{location_id}/instances/{instance_id}`.
631  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
632
633  // The description of the instance (2048 characters or less).
634  string description = 2;
635
636  // Output only. The instance state.
637  State state = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
638
639  // Output only. Additional information about the instance state, if available.
640  string status_message = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
641
642  // Output only. The time when the instance was created.
643  google.protobuf.Timestamp create_time = 7
644      [(google.api.field_behavior) = OUTPUT_ONLY];
645
646  // The service tier of the instance.
647  Tier tier = 8;
648
649  // Resource labels to represent user provided metadata.
650  map<string, string> labels = 9;
651
652  // File system shares on the instance.
653  // For this version, only a single file share is supported.
654  repeated FileShareConfig file_shares = 10;
655
656  // VPC networks to which the instance is connected.
657  // For this version, only a single network is supported.
658  repeated NetworkConfig networks = 11;
659
660  // Server-specified ETag for the instance resource to prevent simultaneous
661  // updates from overwriting each other.
662  string etag = 12;
663
664  // Output only. Reserved for future use.
665  google.protobuf.BoolValue satisfies_pzs = 13
666      [(google.api.field_behavior) = OUTPUT_ONLY];
667
668  // Output only. Reserved for future use.
669  bool satisfies_pzi = 26 [(google.api.field_behavior) = OUTPUT_ONLY];
670
671  // KMS key name used for data encryption.
672  string kms_key_name = 14;
673
674  // Output only. Field indicates all the reasons the instance is in "SUSPENDED"
675  // state.
676  repeated SuspensionReason suspension_reasons = 15
677      [(google.api.field_behavior) = OUTPUT_ONLY];
678
679  // Output only. The max capacity of the instance.
680  int64 max_capacity_gb = 16 [(google.api.field_behavior) = OUTPUT_ONLY];
681
682  // Output only. The increase/decrease capacity step size.
683  int64 capacity_step_size_gb = 17 [(google.api.field_behavior) = OUTPUT_ONLY];
684
685  // The max number of shares allowed.
686  int64 max_share_count = 18;
687
688  // The storage capacity of the instance in gigabytes (GB = 1024^3 bytes).
689  // This capacity can be increased up to `max_capacity_gb` GB in multipliers
690  // of `capacity_step_size_gb` GB.
691  int64 capacity_gb = 19;
692
693  // Indicates whether this instance uses a multi-share configuration with which
694  // it can have more than one file-share or none at all. File-shares are added,
695  // updated and removed through the separate file-share APIs.
696  bool multi_share_enabled = 20;
697
698  // Immutable. The protocol indicates the access protocol for all shares in the
699  // instance. This field is immutable and it cannot be changed after the
700  // instance has been created. Default value: `NFS_V3`.
701  FileProtocol protocol = 21 [(google.api.field_behavior) = IMMUTABLE];
702
703  // Directory Services configuration for Kerberos-based authentication.
704  // Should only be set if protocol is "NFS_V4_1".
705  DirectoryServicesConfig directory_services = 24;
706}
707
708// CreateInstanceRequest creates an instance.
709message CreateInstanceRequest {
710  // Required. The instance's project and location, in the format
711  // `projects/{project_id}/locations/{location}`. In Filestore,
712  // locations map to Google Cloud zones, for example **us-west1-b**.
713  string parent = 1 [
714    (google.api.field_behavior) = REQUIRED,
715    (google.api.resource_reference) = {
716      type: "locations.googleapis.com/Location"
717    }
718  ];
719
720  // Required. The ID of the instance to create.
721  // The ID must be unique within the specified project and location.
722  //
723  // This value must start with a lowercase letter followed by up to 62
724  // lowercase letters, numbers, or hyphens, and cannot end with a hyphen.
725  string instance_id = 2 [(google.api.field_behavior) = REQUIRED];
726
727  // Required. An [instance resource][google.cloud.filestore.v1beta1.Instance]
728  Instance instance = 3 [(google.api.field_behavior) = REQUIRED];
729}
730
731// GetInstanceRequest gets the state of an instance.
732message GetInstanceRequest {
733  // Required. The instance resource name, in the format
734  // `projects/{project_id}/locations/{location}/instances/{instance_id}`.
735  string name = 1 [
736    (google.api.field_behavior) = REQUIRED,
737    (google.api.resource_reference) = { type: "file.googleapis.com/Instance" }
738  ];
739}
740
741// UpdateInstanceRequest updates the settings of an instance.
742message UpdateInstanceRequest {
743  // Required. Mask of fields to update.  At least one path must be supplied in
744  // this field.  The elements of the repeated paths field may only include
745  // these fields:
746  //
747  // * "description"
748  // * "file_shares"
749  // * "labels"
750  google.protobuf.FieldMask update_mask = 1
751      [(google.api.field_behavior) = REQUIRED];
752
753  // Required. Only fields specified in update_mask are updated.
754  Instance instance = 2 [(google.api.field_behavior) = REQUIRED];
755}
756
757// RestoreInstanceRequest restores an existing instance's file share from a
758// backup.
759message RestoreInstanceRequest {
760  // Required. The resource name of the instance, in the format
761  // `projects/{project_id}/locations/{location_id}/instances/{instance_id}`.
762  string name = 1 [
763    (google.api.field_behavior) = REQUIRED,
764    (google.api.resource_reference) = { type: "file.googleapis.com/Instance" }
765  ];
766
767  // Required. Name of the file share in the Filestore instance that the backup
768  // is being restored to.
769  string file_share = 2 [(google.api.field_behavior) = REQUIRED];
770
771  oneof source {
772    // The resource name of the snapshot, in the format
773    // `projects/{project_id}/locations/{location_id}/snapshots/{snapshot_id}`.
774    string source_snapshot = 3 [
775      deprecated = true,
776      (google.api.resource_reference) = { type: "file.googleapis.com/Snapshot" }
777    ];
778
779    // The resource name of the backup, in the format
780    // `projects/{project_id}/locations/{location_id}/backups/{backup_id}`.
781    string source_backup = 4 [
782      (google.api.resource_reference) = { type: "file.googleapis.com/Backup" }
783    ];
784  }
785}
786
787// RevertInstanceRequest reverts the given instance's file share to the
788// specified snapshot.
789message RevertInstanceRequest {
790  // Required.
791  // `projects/{project_id}/locations/{location_id}/instances/{instance_id}`.
792  // The resource name of the instance, in the format
793  string name = 1 [
794    (google.api.field_behavior) = REQUIRED,
795    (google.api.resource_reference) = { type: "file.googleapis.com/Instance" }
796  ];
797
798  // Required. The snapshot resource ID, in the format 'my-snapshot', where the
799  // specified ID is the {snapshot_id} of the fully qualified name like
800  // `projects/{project_id}/locations/{location_id}/instances/{instance_id}/snapshots/{snapshot_id}`
801  string target_snapshot_id = 2 [(google.api.field_behavior) = REQUIRED];
802}
803
804// DeleteInstanceRequest deletes an instance.
805message DeleteInstanceRequest {
806  // Required. The instance resource name, in the format
807  // `projects/{project_id}/locations/{location}/instances/{instance_id}`
808  string name = 1 [
809    (google.api.field_behavior) = REQUIRED,
810    (google.api.resource_reference) = { type: "file.googleapis.com/Instance" }
811  ];
812
813  // If set to true, any snapshots of the instance will also be deleted.
814  // (Otherwise, the request will only work if the instance has no snapshots.)
815  bool force = 2;
816}
817
818// ListInstancesRequest lists instances.
819message ListInstancesRequest {
820  // Required. The project and location for which to retrieve instance
821  // information, in the format `projects/{project_id}/locations/{location}`. In
822  // Cloud Filestore, locations map to Google Cloud zones, for example
823  // **us-west1-b**. To retrieve instance information for all locations, use "-"
824  // for the
825  // `{location}` value.
826  string parent = 1 [
827    (google.api.field_behavior) = REQUIRED,
828    (google.api.resource_reference) = {
829      type: "locations.googleapis.com/Location"
830    }
831  ];
832
833  // The maximum number of items to return.
834  int32 page_size = 2;
835
836  // The next_page_token value to use if there are additional
837  // results to retrieve for this list request.
838  string page_token = 3;
839
840  // Sort results. Supported values are "name", "name desc" or "" (unsorted).
841  string order_by = 4;
842
843  // List filter.
844  string filter = 5;
845}
846
847// ListInstancesResponse is the result of ListInstancesRequest.
848message ListInstancesResponse {
849  // A list of instances in the project for the specified location.
850  //
851  // If the `{location}` value in the request is "-", the response contains a
852  // list of instances from all locations. If any location is unreachable, the
853  // response will only return instances in reachable locations and the
854  // "unreachable" field will be populated with a list of unreachable locations.
855  repeated Instance instances = 1;
856
857  // The token you can use to retrieve the next page of results. Not returned
858  // if there are no more results in the list.
859  string next_page_token = 2;
860
861  // Locations that could not be reached.
862  repeated string unreachable = 3;
863}
864
865// A Filestore snapshot.
866message Snapshot {
867  option (google.api.resource) = {
868    type: "file.googleapis.com/Snapshot"
869    pattern: "projects/{project}/locations/{location}/instances/{instance}/snapshots/{snapshot}"
870  };
871
872  // The snapshot state.
873  enum State {
874    // State not set.
875    STATE_UNSPECIFIED = 0;
876
877    // Snapshot is being created.
878    CREATING = 1;
879
880    // Snapshot is available for use.
881    READY = 3;
882
883    // Snapshot is being deleted.
884    DELETING = 4;
885  }
886
887  // Output only. The resource name of the snapshot, in the format
888  // `projects/{project_id}/locations/{location_id}/instances/{instance_id}/snapshots/{snapshot_id}`.
889  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
890
891  // A description of the snapshot with 2048 characters or less.
892  // Requests with longer descriptions will be rejected.
893  string description = 2;
894
895  // Output only. The snapshot state.
896  State state = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
897
898  // Output only. The time when the snapshot was created.
899  google.protobuf.Timestamp create_time = 4
900      [(google.api.field_behavior) = OUTPUT_ONLY];
901
902  // Resource labels to represent user provided metadata.
903  map<string, string> labels = 5;
904
905  // Output only. The amount of bytes needed to allocate a full copy of the
906  // snapshot content
907  int64 filesystem_used_bytes = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
908}
909
910// CreateSnapshotRequest creates a snapshot.
911message CreateSnapshotRequest {
912  // Required. The Filestore Instance to create the snapshots of, in the format
913  // `projects/{project_id}/locations/{location}/instances/{instance_id}`
914  string parent = 1 [
915    (google.api.field_behavior) = REQUIRED,
916    (google.api.resource_reference) = { type: "file.googleapis.com/Instance" }
917  ];
918
919  // Required. The ID to use for the snapshot.
920  // The ID must be unique within the specified instance.
921  //
922  // This value must start with a lowercase letter followed by up to 62
923  // lowercase letters, numbers, or hyphens, and cannot end with a hyphen.
924  string snapshot_id = 2 [(google.api.field_behavior) = REQUIRED];
925
926  // Required. A snapshot resource
927  Snapshot snapshot = 3 [(google.api.field_behavior) = REQUIRED];
928}
929
930// GetSnapshotRequest gets the state of a snapshot.
931message GetSnapshotRequest {
932  // Required. The snapshot resource name, in the format
933  // `projects/{project_id}/locations/{location}/instances/{instance_id}/snapshots/{snapshot_id}`
934  string name = 1 [
935    (google.api.field_behavior) = REQUIRED,
936    (google.api.resource_reference) = { type: "file.googleapis.com/Snapshot" }
937  ];
938}
939
940// DeleteSnapshotRequest deletes a snapshot.
941message DeleteSnapshotRequest {
942  // Required. The snapshot resource name, in the format
943  // `projects/{project_id}/locations/{location}/instances/{instance_id}/snapshots/{snapshot_id}`
944  string name = 1 [
945    (google.api.field_behavior) = REQUIRED,
946    (google.api.resource_reference) = { type: "file.googleapis.com/Snapshot" }
947  ];
948}
949
950// UpdateSnapshotRequest updates description and/or labels for a snapshot.
951message UpdateSnapshotRequest {
952  // Required. Mask of fields to update.  At least one path must be supplied in
953  // this field.
954  google.protobuf.FieldMask update_mask = 1
955      [(google.api.field_behavior) = REQUIRED];
956
957  // Required. A snapshot resource
958  Snapshot snapshot = 2 [(google.api.field_behavior) = REQUIRED];
959}
960
961// ListSnapshotsRequest lists snapshots.
962message ListSnapshotsRequest {
963  // Required. The instance for which to retrieve snapshot information,
964  // in the format
965  // `projects/{project_id}/locations/{location}/instances/{instance_id}`.
966  string parent = 1 [
967    (google.api.field_behavior) = REQUIRED,
968    (google.api.resource_reference) = { type: "file.googleapis.com/Instance" }
969  ];
970
971  // The maximum number of items to return.
972  int32 page_size = 2;
973
974  // The next_page_token value to use if there are additional
975  // results to retrieve for this list request.
976  string page_token = 3;
977
978  // Sort results. Supported values are "name", "name desc" or "" (unsorted).
979  string order_by = 4;
980
981  // List filter.
982  string filter = 5;
983}
984
985// ListSnapshotsResponse is the result of ListSnapshotsRequest.
986message ListSnapshotsResponse {
987  // A list of snapshots in the project for the specified instance.
988  repeated Snapshot snapshots = 1;
989
990  // The token you can use to retrieve the next page of results. Not returned
991  // if there are no more results in the list.
992  string next_page_token = 2;
993}
994
995// A Filestore backup.
996message Backup {
997  option (google.api.resource) = {
998    type: "file.googleapis.com/Backup"
999    pattern: "projects/{project}/locations/{location}/backups/{backup}"
1000  };
1001
1002  // The backup state.
1003  enum State {
1004    // State not set.
1005    STATE_UNSPECIFIED = 0;
1006
1007    // Backup is being created.
1008    CREATING = 1;
1009
1010    // Backup has been taken and the operation is being finalized. At this
1011    // point, changes to the file share will not be reflected in the backup.
1012    FINALIZING = 2;
1013
1014    // Backup is available for use.
1015    READY = 3;
1016
1017    // Backup is being deleted.
1018    DELETING = 4;
1019
1020    // Backup is not valid and cannot be used for creating new instances or
1021    // restoring existing instances.
1022    INVALID = 5;
1023  }
1024
1025  // Output only. The resource name of the backup, in the format
1026  // `projects/{project_id}/locations/{location_id}/backups/{backup_id}`.
1027  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1028
1029  // A description of the backup with 2048 characters or less.
1030  // Requests with longer descriptions will be rejected.
1031  string description = 2;
1032
1033  // Output only. The backup state.
1034  State state = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
1035
1036  // Output only. The time when the backup was created.
1037  google.protobuf.Timestamp create_time = 4
1038      [(google.api.field_behavior) = OUTPUT_ONLY];
1039
1040  // Resource labels to represent user provided metadata.
1041  map<string, string> labels = 5;
1042
1043  // Output only. Capacity of the source file share when the backup was created.
1044  int64 capacity_gb = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
1045
1046  // Output only. The size of the storage used by the backup. As backups share
1047  // storage, this number is expected to change with backup creation/deletion.
1048  int64 storage_bytes = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
1049
1050  // The resource name of the source Filestore instance, in the format
1051  // `projects/{project_id}/locations/{location_id}/instances/{instance_id}`,
1052  // used to create this backup.
1053  string source_instance = 8 [
1054    (google.api.resource_reference) = { type: "file.googleapis.com/Instance" }
1055  ];
1056
1057  // Name of the file share in the source Filestore instance that the
1058  // backup is created from.
1059  string source_file_share = 9;
1060
1061  // Output only. The service tier of the source Filestore instance that this
1062  // backup is created from.
1063  Instance.Tier source_instance_tier = 10
1064      [(google.api.field_behavior) = OUTPUT_ONLY];
1065
1066  // Output only. Amount of bytes that will be downloaded if the backup is
1067  // restored
1068  int64 download_bytes = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
1069
1070  // Output only. Reserved for future use.
1071  google.protobuf.BoolValue satisfies_pzs = 12
1072      [(google.api.field_behavior) = OUTPUT_ONLY];
1073
1074  // Output only. Reserved for future use.
1075  bool satisfies_pzi = 14 [(google.api.field_behavior) = OUTPUT_ONLY];
1076
1077  // Immutable. KMS key name used for data encryption.
1078  string kms_key_name = 13 [(google.api.field_behavior) = IMMUTABLE];
1079}
1080
1081// CreateBackupRequest creates a backup.
1082message CreateBackupRequest {
1083  // Required. The backup's project and location, in the format
1084  // `projects/{project_id}/locations/{location}`. In Filestore,
1085  // backup locations map to Google Cloud regions, for example **us-west1**.
1086  string parent = 1 [
1087    (google.api.field_behavior) = REQUIRED,
1088    (google.api.resource_reference) = {
1089      type: "locations.googleapis.com/Location"
1090    }
1091  ];
1092
1093  // Required. A [backup resource][google.cloud.filestore.v1beta1.Backup]
1094  Backup backup = 2 [(google.api.field_behavior) = REQUIRED];
1095
1096  // Required. The ID to use for the backup.
1097  // The ID must be unique within the specified project and location.
1098  //
1099  // This value must start with a lowercase letter followed by up to 62
1100  // lowercase letters, numbers, or hyphens, and cannot end with a hyphen.
1101  string backup_id = 3 [(google.api.field_behavior) = REQUIRED];
1102}
1103
1104// DeleteBackupRequest deletes a backup.
1105message DeleteBackupRequest {
1106  // Required. The backup resource name, in the format
1107  // `projects/{project_id}/locations/{location}/backups/{backup_id}`
1108  string name = 1 [
1109    (google.api.field_behavior) = REQUIRED,
1110    (google.api.resource_reference) = { type: "file.googleapis.com/Backup" }
1111  ];
1112}
1113
1114// UpdateBackupRequest updates description and/or labels for a backup.
1115message UpdateBackupRequest {
1116  // Required. A [backup resource][google.cloud.filestore.v1beta1.Backup]
1117  Backup backup = 1 [(google.api.field_behavior) = REQUIRED];
1118
1119  // Required. Mask of fields to update.  At least one path must be supplied in
1120  // this field.
1121  google.protobuf.FieldMask update_mask = 2
1122      [(google.api.field_behavior) = REQUIRED];
1123}
1124
1125// GetBackupRequest gets the state of a backup.
1126message GetBackupRequest {
1127  // Required. The backup resource name, in the format
1128  // `projects/{project_id}/locations/{location}/backups/{backup_id}`.
1129  string name = 1 [
1130    (google.api.field_behavior) = REQUIRED,
1131    (google.api.resource_reference) = { type: "file.googleapis.com/Backup" }
1132  ];
1133}
1134
1135// ListBackupsRequest lists backups.
1136message ListBackupsRequest {
1137  // Required. The project and location for which to retrieve backup
1138  // information, in the format `projects/{project_id}/locations/{location}`. In
1139  // Filestore, backup locations map to Google Cloud regions, for example
1140  // **us-west1**. To retrieve backup information for all locations, use "-" for
1141  // the
1142  // `{location}` value.
1143  string parent = 1 [
1144    (google.api.field_behavior) = REQUIRED,
1145    (google.api.resource_reference) = {
1146      type: "locations.googleapis.com/Location"
1147    }
1148  ];
1149
1150  // The maximum number of items to return.
1151  int32 page_size = 2;
1152
1153  // The next_page_token value to use if there are additional
1154  // results to retrieve for this list request.
1155  string page_token = 3;
1156
1157  // Sort results. Supported values are "name", "name desc" or "" (unsorted).
1158  string order_by = 4;
1159
1160  // List filter.
1161  string filter = 5;
1162}
1163
1164// ListBackupsResponse is the result of ListBackupsRequest.
1165message ListBackupsResponse {
1166  // A list of backups in the project for the specified location.
1167  //
1168  // If the `{location}` value in the request is "-", the response contains a
1169  // list of backups from all locations. If any location is unreachable, the
1170  // response will only return backups in reachable locations and the
1171  // "unreachable" field will be populated with a list of unreachable
1172  // locations.
1173  repeated Backup backups = 1;
1174
1175  // The token you can use to retrieve the next page of results. Not returned
1176  // if there are no more results in the list.
1177  string next_page_token = 2;
1178
1179  // Locations that could not be reached.
1180  repeated string unreachable = 3;
1181}
1182
1183// A Filestore share.
1184message Share {
1185  option (google.api.resource) = {
1186    type: "file.googleapis.com/Share"
1187    pattern: "projects/{project}/locations/{location}/instances/{instance}/shares/{share}"
1188  };
1189
1190  // The share state.
1191  enum State {
1192    // State not set.
1193    STATE_UNSPECIFIED = 0;
1194
1195    // Share is being created.
1196    CREATING = 1;
1197
1198    // Share is ready for use.
1199    READY = 3;
1200
1201    // Share is being deleted.
1202    DELETING = 4;
1203  }
1204
1205  // Output only. The resource name of the share, in the format
1206  // `projects/{project_id}/locations/{location_id}/instances/{instance_id}/shares/{share_id}`.
1207  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1208
1209  // The mount name of the share. Must be 63 characters or less and consist of
1210  // uppercase or lowercase letters, numbers, and underscores.
1211  string mount_name = 2;
1212
1213  // A description of the share with 2048 characters or less. Requests with
1214  // longer descriptions will be rejected.
1215  string description = 3;
1216
1217  // File share capacity in gigabytes (GB). Filestore defines 1 GB as
1218  // 1024^3 bytes. Must be greater than 0.
1219  int64 capacity_gb = 4;
1220
1221  // Nfs Export Options.
1222  // There is a limit of 10 export options per file share.
1223  repeated NfsExportOptions nfs_export_options = 5;
1224
1225  // Output only. The share state.
1226  State state = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
1227
1228  // Output only. The time when the share was created.
1229  google.protobuf.Timestamp create_time = 7
1230      [(google.api.field_behavior) = OUTPUT_ONLY];
1231
1232  // Resource labels to represent user provided metadata.
1233  map<string, string> labels = 8;
1234
1235  // The source that this Share has been restored from. Empty if the Share is
1236  // created from scratch.
1237  oneof source {
1238    // Immutable. Full name of the Cloud Filestore Backup resource that this
1239    // Share is restored from, in the format of
1240    // projects/{project_id}/locations/{location_id}/backups/{backup_id}.
1241    // Empty, if the Share is created from scratch and not restored from a
1242    // backup.
1243    string backup = 9 [
1244      (google.api.field_behavior) = IMMUTABLE,
1245      (google.api.resource_reference) = { type: "file.googleapis.com/Backup" }
1246    ];
1247  }
1248}
1249
1250// CreateShareRequest creates a share.
1251message CreateShareRequest {
1252  // Required. The Filestore Instance to create the share for, in the format
1253  // `projects/{project_id}/locations/{location}/instances/{instance_id}`
1254  string parent = 1 [
1255    (google.api.field_behavior) = REQUIRED,
1256    (google.api.resource_reference) = { type: "file.googleapis.com/Instance" }
1257  ];
1258
1259  // Required. The ID to use for the share.
1260  // The ID must be unique within the specified instance.
1261  //
1262  // This value must start with a lowercase letter followed by up to 62
1263  // lowercase letters, numbers, or hyphens, and cannot end with a hyphen.
1264  string share_id = 2 [(google.api.field_behavior) = REQUIRED];
1265
1266  // Required. A share resource
1267  Share share = 3 [(google.api.field_behavior) = REQUIRED];
1268}
1269
1270// GetShareRequest gets the state of a share.
1271message GetShareRequest {
1272  // Required. The share resource name, in the format
1273  // `projects/{project_id}/locations/{location}/instances/{instance_id}/shares/{share_id}`
1274  string name = 1 [
1275    (google.api.field_behavior) = REQUIRED,
1276    (google.api.resource_reference) = { type: "file.googleapis.com/Share" }
1277  ];
1278}
1279
1280// DeleteShareRequest deletes a share.
1281message DeleteShareRequest {
1282  // Required. The share resource name, in the format
1283  // `projects/{project_id}/locations/{location}/instances/{instance_id}/share/{share_id}`
1284  string name = 1 [
1285    (google.api.field_behavior) = REQUIRED,
1286    (google.api.resource_reference) = { type: "file.googleapis.com/Share" }
1287  ];
1288}
1289
1290// ListSharesRequest lists shares.
1291message ListSharesRequest {
1292  // Required. The instance for which to retrieve share information,
1293  // in the format
1294  // `projects/{project_id}/locations/{location}/instances/{instance_id}`.
1295  string parent = 1 [
1296    (google.api.field_behavior) = REQUIRED,
1297    (google.api.resource_reference) = { type: "file.googleapis.com/Instance" }
1298  ];
1299
1300  // The maximum number of items to return.
1301  int32 page_size = 2;
1302
1303  // The next_page_token value to use if there are additional
1304  // results to retrieve for this list request.
1305  string page_token = 3;
1306
1307  // Sort results. Supported values are "name", "name desc" or "" (unsorted).
1308  string order_by = 4;
1309
1310  // List filter.
1311  string filter = 5;
1312}
1313
1314// ListSharesResponse is the result of ListSharesRequest.
1315message ListSharesResponse {
1316  // A list of shares in the project for the specified instance.
1317  repeated Share shares = 1;
1318
1319  // The token you can use to retrieve the next page of results. Not returned
1320  // if there are no more results in the list.
1321  string next_page_token = 2;
1322
1323  // Locations that could not be reached.
1324  repeated string unreachable = 3;
1325}
1326
1327// UpdateShareRequest updates the settings of a share.
1328message UpdateShareRequest {
1329  // Required. A share resource.
1330  // Only fields specified in update_mask are updated.
1331  Share share = 1 [(google.api.field_behavior) = REQUIRED];
1332
1333  // Required. Mask of fields to update. At least one path must be supplied in
1334  // this field. The elements of the repeated paths field may only include these
1335  // fields:
1336  //
1337  // * "description"
1338  // * "capacity_gb"
1339  // * "labels"
1340  // * "nfs_export_options"
1341  google.protobuf.FieldMask update_mask = 2
1342      [(google.api.field_behavior) = REQUIRED];
1343}
1344