// Copyright 2024 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.apps.drive.labels.v2beta;

import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/apps/drive/labels/v2beta/common.proto";
import "google/apps/drive/labels/v2beta/field.proto";
import "google/apps/drive/labels/v2beta/label.proto";
import "google/apps/drive/labels/v2beta/label_lock.proto";
import "google/apps/drive/labels/v2beta/label_permission.proto";
import "google/protobuf/field_mask.proto";

option go_package = "google.golang.org/genproto/googleapis/apps/drive/labels/v2beta;labels";
option java_multiple_files = true;
option java_outer_classname = "RequestsProto";
option java_package = "com.google.apps.drive.labels.v2beta";
option objc_class_prefix = "DLBL";

// Resource view that can be applied to label responses. The default value
// `LABEL_VIEW_BASIC` implies the field mask:
 // `name,id,revision_id,label_type,properties.*`\
enum LabelView {
// Implies the field mask:
// `name,id,revision_id,label_type,properties.*`
LABEL_VIEW_BASIC = 0;

// All possible fields.
LABEL_VIEW_FULL = 1;
}

// Provides control over how write requests are executed. When not specified,
// the last write wins.
message WriteControl {
  // Determines the revision of the label to write to and how the request
  // should behave if that revision is not the current revision of the
  // label.
  oneof control {
    // The [revision_id][google.apps.drive.labels.v1.Label.revision_id] of the
    // label that the write request will be applied to. If this is not the
    // latest revision of the label, the request will not be processed and will
    // return a 400 Bad Request error.
    string required_revision_id = 1;
  }
}

// Request to get the capabilities for a user.
message GetUserCapabilitiesRequest {
  // Required. The resource name of the user. Only "users/me/capabilities" is
  // supported.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/UserCapabilities"
    }
  ];

  // The customer to scope this request to.
  // For example: "customers/abcd1234".
  // If unset, will return settings within the current customer.
  string customer = 2 [(google.api.resource_reference) = {
    type: "cloudidentity.googleapis.com/Customer"
  }];
}

// Request to create a Label.
message CreateLabelRequest {
  // Required. The label to create.
  Label label = 1 [(google.api.field_behavior) = REQUIRED];

  // Set to `true` in order to use the user's admin privileges. The server
  // will verify the user is an admin before allowing access.
  bool use_admin_access = 2;

  // The BCP-47 language code to use for evaluating localized Field labels in
  // response. When not specified, values in the default configured language
  // will be used.
  string language_code = 3;
}

// Request to get a label by resource name.
message GetLabelRequest {
  // Required. Label resource name.
  //
  // May be any of:
  //
  // * `labels/{id}` (equivalent to labels/{id}@latest)
  // * `labels/{id}@latest`
  // * `labels/{id}@published`
  // * `labels/{id}@{revision_id}`
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/Label"
    }
  ];

  // Set to `true` in order to use the user's admin credentials. The server
  // verifies that the user is an admin for the label before allowing access.
  bool use_admin_access = 2;

  // The BCP-47 language code to use for evaluating localized field labels.
  // When not specified, values in the default configured language are used.
  string language_code = 3;

  // When specified, only certain fields belonging to the indicated view are
  // returned.
  LabelView view = 4;
}

// The set of requests for updating aspects of a Label. If any request is not
// valid, no requests will be applied.
message DeltaUpdateLabelRequest {
  // A single kind of update to apply to a Label.
  message Request {
    // The kind of update. Exactly one Field is required.
    oneof kind {
      // Updates the Label properties.
      UpdateLabelPropertiesRequest update_label = 1;

      // Creates a new Field.
      CreateFieldRequest create_field = 2;

      // Updates basic properties of a Field.
      UpdateFieldPropertiesRequest update_field = 3;

      // Update Field type and/or type options.
      UpdateFieldTypeRequest update_field_type = 4;

      // Enables the Field.
      EnableFieldRequest enable_field = 5;

      // Disables the Field.
      DisableFieldRequest disable_field = 6;

      // Deletes a Field from the label.
      DeleteFieldRequest delete_field = 7;

      // Creates Choice within a Selection field.
      CreateSelectionChoiceRequest create_selection_choice = 8;

      // Update a Choice properties within a Selection Field.
      UpdateSelectionChoicePropertiesRequest
          update_selection_choice_properties = 9;

      // Enable a Choice within a Selection Field.
      EnableSelectionChoiceRequest enable_selection_choice = 10;

      // Disable a Choice within a Selection Field.
      DisableSelectionChoiceRequest disable_selection_choice = 11;

      // Delete a Choice within a Selection Field.
      DeleteSelectionChoiceRequest delete_selection_choice = 12;
    }
  }

  // Updates basic properties of a Label.
  message UpdateLabelPropertiesRequest {
    // The fields that should be updated. At least one field must be specified.
    // The root `label_properties` is implied and should not be specified. A
    // single `*` can be used as short-hand for updating every field.
    google.protobuf.FieldMask update_mask = 1;

    // Required. Label properties to update.
    Label.Properties properties = 2 [(google.api.field_behavior) = REQUIRED];
  }

  // Request to disable the Field.
  message DisableFieldRequest {
    // The fields that should be updated. At least one field must be specified.
    // The root `disabled_policy` is implied and should not be specified. A
    // single `*` can be used as short-hand for updating every field.
    google.protobuf.FieldMask update_mask = 1;

    // Required. Key of the Field to disable.
    string id = 2 [(google.api.field_behavior) = REQUIRED];

    // Required. Field Disabled Policy.
    Lifecycle.DisabledPolicy disabled_policy = 3
        [(google.api.field_behavior) = REQUIRED];
  }

  // Request to enable the Field.
  message EnableFieldRequest {
    // Required. ID of the Field to enable.
    string id = 1 [(google.api.field_behavior) = REQUIRED];
  }

  // Request to delete the Field.
  message DeleteFieldRequest {
    // Required. ID of the Field to delete.
    string id = 1 [(google.api.field_behavior) = REQUIRED];
  }

  // Request to create a Field within a Label.
  message CreateFieldRequest {
    // Required. Field to create.
    Field field = 1 [(google.api.field_behavior) = REQUIRED];
  }

  // Request to update Field properties.
  message UpdateFieldPropertiesRequest {
    // The fields that should be updated. At least one field must be specified.
    // The root `properties` is implied and should not be specified. A single
    // `*` can be used as short-hand for updating every field.
    google.protobuf.FieldMask update_mask = 1;

    // Required. The Field to update.
    string id = 2 [(google.api.field_behavior) = REQUIRED];

    // Required. Basic Field properties.
    Field.Properties properties = 3 [(google.api.field_behavior) = REQUIRED];
  }

  // Request to change the type of a Field.
  message UpdateFieldTypeRequest {
    oneof type_options {
      // Update field to Text.
      Field.TextOptions text_options = 3;

      // Update field to Integer.
      Field.IntegerOptions integer_options = 5;

      // Update field to Date.
      Field.DateOptions date_options = 6;

      // Update field to Selection.
      Field.SelectionOptions selection_options = 7;

      // Update field to User.
      Field.UserOptions user_options = 8;
    }

    // The fields that should be updated. At least one field must be specified.
    // The root of `type_options` is implied and should not be specified. A
    // single `*` can be used as short-hand for updating every field.
    google.protobuf.FieldMask update_mask = 1;

    // Required. The Field to update.
    string id = 2 [(google.api.field_behavior) = REQUIRED];
  }

  // Request to create a Selection Choice.
  message CreateSelectionChoiceRequest {
    // Required. The Selection Field in which a Choice will be created.
    string field_id = 1 [(google.api.field_behavior) = REQUIRED];

    // Required. The Choice to create.
    Field.SelectionOptions.Choice choice = 2
        [(google.api.field_behavior) = REQUIRED];
  }

  // Request to update a Choice properties.
  message UpdateSelectionChoicePropertiesRequest {
    // The fields that should be updated. At least one field must be specified.
    // The root `properties` is implied and should not be specified. A single
    // `*` can be used as short-hand for updating every field.
    google.protobuf.FieldMask update_mask = 1;

    // Required. The Selection Field to update.
    string field_id = 2 [(google.api.field_behavior) = REQUIRED];

    // Required. The Choice to update.
    string id = 3 [(google.api.field_behavior) = REQUIRED];

    // Required. The Choice properties to update.
    Field.SelectionOptions.Choice.Properties properties = 4
        [(google.api.field_behavior) = REQUIRED];
  }

  // Request to delete a Choice.
  message DeleteSelectionChoiceRequest {
    // Required. The Selection Field from which a Choice will be deleted.
    string field_id = 1 [(google.api.field_behavior) = REQUIRED];

    // Required. Choice to delete.
    string id = 2 [(google.api.field_behavior) = REQUIRED];
  }

  // Request to disable a Choice.
  message DisableSelectionChoiceRequest {
    // The fields that should be updated. At least one field must be specified.
    // The root `disabled_policy` is implied and should not be specified. A
    // single `*` can be used as short-hand for updating every field.
    google.protobuf.FieldMask update_mask = 1;

    // Required. The Selection Field in which a Choice will be disabled.
    string field_id = 2 [(google.api.field_behavior) = REQUIRED];

    // Required. Choice to disable.
    string id = 3 [(google.api.field_behavior) = REQUIRED];

    // Required. The disabled policy to update.
    Lifecycle.DisabledPolicy disabled_policy = 4
        [(google.api.field_behavior) = REQUIRED];
  }

  // Request to enable a Choice.
  message EnableSelectionChoiceRequest {
    // Required. The Selection Field in which a Choice will be enabled.
    string field_id = 1 [(google.api.field_behavior) = REQUIRED];

    // Required. Choice to enable.
    string id = 2 [(google.api.field_behavior) = REQUIRED];
  }

  // Required. The resource name of the Label to update.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/Label"
    }
  ];

  // Provides control over how write requests are executed.
  WriteControl write_control = 2;

  // A list of updates to apply to the Label.
  // Requests will be applied in the order they are specified.
  repeated Request requests = 3;

  // Set to `true` in order to use the user's admin credentials. The server
  // will verify the user is an admin for the Label before allowing access.
  bool use_admin_access = 4;

  // When specified, only certain fields belonging to the indicated view will be
  // returned.
  LabelView view = 5;

  // The BCP-47 language code to use for evaluating localized Field labels when
  // `include_label_in_response` is `true`.
  string language_code = 6;
}

// Response for Label update.
message DeltaUpdateLabelResponse {
  // A single response from an update.
  message Response {
    // The response for the corresponding request.
    oneof response {
      // Updated basic properties of a Label.
      UpdateLabelPropertiesResponse update_label = 1;

      // Creates a new Field.
      CreateFieldResponse create_field = 2;

      // Updates basic properties of a Field.
      UpdateFieldPropertiesResponse update_field = 3;

      // Update Field type and/or type options.
      UpdateFieldTypeResponse update_field_type = 4;

      // Enables Field.
      EnableFieldResponse enable_field = 5;

      // Disables Field.
      DisableFieldResponse disable_field = 6;

      // Deletes a Field from the label.
      DeleteFieldResponse delete_field = 7;

      // Creates a new selection list option to add to a Selection Field.
      CreateSelectionChoiceResponse create_selection_choice = 8;

      // Updates a Choice within a Selection Field.
      UpdateSelectionChoicePropertiesResponse
          update_selection_choice_properties = 9;

      // Enables a Choice within a Selection Field.
      EnableSelectionChoiceResponse enable_selection_choice = 10;

      // Disables a Choice within a Selection Field.
      DisableSelectionChoiceResponse disable_selection_choice = 11;

      // Deletes a Choice from a Selection Field.
      DeleteSelectionChoiceResponse delete_selection_choice = 12;
    }
  }

  // Response following update to Label properties.
  message UpdateLabelPropertiesResponse {}

  // Response following Field create.
  message CreateFieldResponse {
    // The field of the created field. When left blank in a create request,
    // a key will be autogenerated and can be identified here.
    string id = 1;

    // The priority of the created field. The priority may change from what
    // was specified to assure contiguous priorities between fields (1-n).
    int32 priority = 2;
  }

  // Response following update to Field properties.
  message UpdateFieldPropertiesResponse {
    // The priority of the updated field. The priority may change from what
    // was specified to assure contiguous priorities between fields (1-n).
    int32 priority = 1;
  }

  // Response following update to Field type.
  message UpdateFieldTypeResponse {}

  // Response following Field enable.
  message EnableFieldResponse {}

  // Response following Field disable.
  message DisableFieldResponse {}

  // Response following Field delete.
  message DeleteFieldResponse {}

  // Response following Selection Choice create.
  message CreateSelectionChoiceResponse {
    // The server-generated id of the field.
    string field_id = 1;

    // The server-generated ID of the created choice within the Field
    string id = 2;
  }

  // Response following update to Selection Choice properties.
  message UpdateSelectionChoicePropertiesResponse {
    // The priority of the updated choice. The priority may change from what
    // was specified to assure contiguous priorities between choices (1-n).
    int32 priority = 1;
  }

  // Response following Choice enable.
  message EnableSelectionChoiceResponse {}

  // Response following Choice disable.
  message DisableSelectionChoiceResponse {}

  // Response following Choice delete.
  message DeleteSelectionChoiceResponse {}

  // The reply of the updates. This maps 1:1 with the updates, although
  // responses to some requests may be empty.
  repeated Response responses = 1;

  // The label after updates were applied. This is only set if
  // [BatchUpdateLabelResponse2.include_label_in_response] is `true` and there
  // were no errors.
  Label updated_label = 6;
}

// Request to update the `CopyMode` of the given Label. Changes to this policy
// are not revisioned, do not require publishing, and take effect immediately.
 // \
message UpdateLabelCopyModeRequest {
// Required. The resource name of the Label to update.
string name = 1 [
  (google.api.field_behavior) = REQUIRED,
  (google.api.resource_reference) = { type: "drivelabels.googleapis.com/Label" }
];

// Required. Indicates how the applied Label, and Field values should be copied
// when a Drive item is copied.
Label.AppliedLabelPolicy.CopyMode copy_mode = 2
    [(google.api.field_behavior) = REQUIRED];

// Set to `true` in order to use the user's admin credentials. The server
// will verify the user is an admin for the Label before allowing access.
bool use_admin_access = 3;

// The BCP-47 language code to use for evaluating localized field labels.
// When not specified, values in the default configured language will be used.
string language_code = 4;

// When specified, only certain fields belonging to the indicated view will be
// returned.
LabelView view = 5;
}

// Request to get the limits for a Label.
message GetLabelLimitsRequest {
  // Required. Label revision resource name
  // Must be: "limits/label"
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/Label"
    }
  ];
}

// Request to list labels available to the current user.
message ListLabelsRequest {
  oneof access {
    // Set to `true` in order to use the user's admin credentials. This will
    // return all Labels within the customer.
    bool use_admin_access = 3;

    // Specifies the level of access the user must have on the returned Labels.
    // The minimum role a user must have on a label.
    // Defaults to `READER`.
    LabelPermission.LabelRole minimum_role = 4;
  }

  // Whether to include only published labels in the results.
  //
  // * When `true`, only the current published label revisions are returned.
  //   Disabled labels are included. Returned label resource names
  //   reference the published revision (`labels/{id}/{revision_id}`).
  // * When `false`, the current label revisions are returned, which might not
  //   be published. Returned label resource names don't reference a specific
  //   revision (`labels/{id}`).
  bool published_only = 1;

  // The customer to scope this list request to.
  // For example: "customers/abcd1234".
  // If unset, will return all labels within the current customer.
  string customer = 2 [(google.api.resource_reference) = {
    type: "cloudidentity.googleapis.com/Customer"
  }];

  // The BCP-47 language code to use for evaluating localized field labels.
  // When not specified, values in the default configured language are used.
  string language_code = 5;

  // Maximum number of labels to return per page. Default: 50. Max: 200.
  int32 page_size = 6;

  // The token of the page to return.
  string page_token = 7;

  // When specified, only certain fields belonging to the indicated view are
  // returned.
  LabelView view = 8;
}

// Response for listing Labels.
message ListLabelsResponse {
  // Labels.
  repeated Label labels = 1;

  // The token of the next page in the response.
  string next_page_token = 2;
}

// Creates or updates a permission on the Label. Permissions affect the Label
// resource as a whole, are not revisioned, and do not require publishing.
message CreateLabelPermissionRequest {
  // Required. The parent Label resource name on the Label Permission is
  // created. Format: labels/{label}
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/Label"
    }
  ];

  // Required. The permission to create or update on the Label.
  LabelPermission label_permission = 2 [(google.api.field_behavior) = REQUIRED];

  // Set to `true` in order to use the user's admin credentials. The server
  // will verify the user is an admin for the Label before allowing access.
  bool use_admin_access = 3;
}

// Request to list the permissions on a Label.
message ListLabelPermissionsRequest {
  // Required. The parent Label resource name on which Label Permission are
  // listed. Format: labels/{label}
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/Label"
    }
  ];

  // Set to `true` in order to use the user's admin credentials. The server will
  // verify the user is an admin for the Label before allowing access.
  bool use_admin_access = 2;

  // Maximum number of permissions to return per page. Default: 50. Max: 200.
  int32 page_size = 3;

  // The token of the page to return.
  string page_token = 4;
}

// Response for listing the permissions on a Label.
message ListLabelPermissionsResponse {
  // Label permissions.
  repeated LabelPermission label_permissions = 1;

  // The token of the next page in the response.
  string next_page_token = 2;
}

// Updates a Label Permission. Permissions affect the Label resource as a whole,
// are not revisioned, and do not require publishing.
message UpdateLabelPermissionRequest {
  // Required. The parent Label resource name.
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/Label"
    }
  ];

  // Required. The permission to create or update on the Label.
  LabelPermission label_permission = 2 [(google.api.field_behavior) = REQUIRED];

  // Set to `true` in order to use the user's admin credentials. The server
  // will verify the user is an admin for the Label before allowing access.
  bool use_admin_access = 3;
}

// Deletes a Label Permission. Permissions affect the Label resource as a whole,
// are not revisioned, and do not require publishing.
message DeleteLabelPermissionRequest {
  // Required. Label Permission resource name.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/LabelPermission"
    }
  ];

  // Set to `true` in order to use the user's admin credentials. The server
  // will verify the user is an admin for the Label before allowing access.
  bool use_admin_access = 2;
}

// Updates one or more Label Permissions.
message BatchUpdateLabelPermissionsRequest {
  // Required. The parent Label resource name shared by all permissions being
  // updated. Format: labels/{label} If this is set, the parent field in the
  // UpdateLabelPermissionRequest messages must either be empty or match this
  // field.
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/Label"
    }
  ];

  // Required. The request message specifying the resources to update.
  repeated UpdateLabelPermissionRequest requests = 2
      [(google.api.field_behavior) = REQUIRED];

  // Set to `true` in order to use the user's admin credentials. The server
  // will verify the user is an admin for the Label before allowing access.
  // If this is set, the use_admin_access field in the
  // UpdateLabelPermissionRequest messages must either be empty or match this
  // field.
  bool use_admin_access = 3;
}

// Response for updating one or more Label Permissions.
message BatchUpdateLabelPermissionsResponse {
  // Required. Permissions updated.
  repeated LabelPermission permissions = 1
      [(google.api.field_behavior) = REQUIRED];
}

// Deletes one of more Label Permissions.
message BatchDeleteLabelPermissionsRequest {
  // Required. The request message specifying the resources to update.
  repeated DeleteLabelPermissionRequest requests = 1
      [(google.api.field_behavior) = REQUIRED];

  // Set to `true` in order to use the user's admin credentials. The server
  // will verify the user is an admin for the Label before allowing access.
  // If this is set, the use_admin_access field in the
  // DeleteLabelPermissionRequest messages must either be empty or match this
  // field.
  bool use_admin_access = 2;

  // Required. The parent Label resource name shared by all permissions being
  // deleted. Format: labels/{label} If this is set, the parent field in the
  // UpdateLabelPermissionRequest messages must either be empty or match this
  // field.
  string parent = 3 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/Label"
    }
  ];
}

// Request to deprecate a published Label.
message DisableLabelRequest {
  // The fields that should be updated. At least one field must be specified.
  // The root `disabled_policy` is implied and should not be specified. A
  // single `*` can be used as short-hand for updating every field.
  google.protobuf.FieldMask update_mask = 1;

  // Required. Label resource name.
  string name = 2 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/Label"
    }
  ];

  // Set to `true` in order to use the user's admin credentials. The server
  // will verify the user is an admin for the Label before allowing access.
  bool use_admin_access = 3;

  // Provides control over how write requests are executed. Defaults to unset,
  // which means last write wins.
  WriteControl write_control = 4;

  // Disabled policy to use.
  Lifecycle.DisabledPolicy disabled_policy = 5;

  // The BCP-47 language code to use for evaluating localized field labels.
  // When not specified, values in the default configured language will be used.
  string language_code = 6;
}

// Request to publish a label.
message PublishLabelRequest {
  // Required. Label resource name.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/Label"
    }
  ];

  // Set to `true` in order to use the user's admin credentials. The server
  // will verify the user is an admin for the Label before allowing access.
  bool use_admin_access = 2;

  // Provides control over how write requests are executed. Defaults to unset,
  // which means last write wins.
  WriteControl write_control = 3;

  // The BCP-47 language code to use for evaluating localized field labels.
  // When not specified, values in the default configured language will be used.
  string language_code = 4;
}

// Request to enable a label.
message EnableLabelRequest {
  // Required. Label resource name.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/Label"
    }
  ];

  // Set to `true` in order to use the user's admin credentials. The server
  // will verify the user is an admin for the Label before allowing access.
  bool use_admin_access = 2;

  // Provides control over how write requests are executed. Defaults to unset,
  // which means last write wins.
  WriteControl write_control = 3;

  // The BCP-47 language code to use for evaluating localized field labels.
  // When not specified, values in the default configured language will be used.
  string language_code = 4;
}

// Request to delete a label.
message DeleteLabelRequest {
  // Required. Label resource name.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/Label"
    }
  ];

  // Set to `true` in order to use the user's admin credentials. The server
  // will verify the user is an admin for the Label before allowing access.
  bool use_admin_access = 2;

  // Provides control over how write requests are executed. Defaults to unset,
  // which means last write wins.
  WriteControl write_control = 3;
}

// A request to list the LabelLocks on a Label.
message ListLabelLocksRequest {
  // Required. Label on which Locks are applied.
  // Format: labels/{label}
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "drivelabels.googleapis.com/Label"
    }
  ];

  // Maximum number of Locks to return per page. Default: 100. Max: 200.
  int32 page_size = 2;

  // The token of the page to return.
  string page_token = 3;
}

// The response to a ListLabelLocksRequest.
message ListLabelLocksResponse {
  // LabelLocks.
  repeated LabelLock label_locks = 1;

  // The token of the next page in the response.
  string next_page_token = 2;
}
