blob: 1abedcde71d8b3f94b67c8b91ea2b257a3256fa1 [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto3";
package chromiumos.config.public_replication;
option go_package = "go.chromium.org/chromiumos/config/go/public_replication";
import "google/protobuf/field_mask.proto";
// Configures which fields in a ConfigBundle are made public.
//
// Any message in a ConfigBundle that has a PublicReplication message as a field
// will have the fields specified by the public_fields FieldMask made public.
// For example, consider the ConfigBundle:
//
// software_configs {
// audio_configs {
// card_name: "testcard"
// private_field: "secretA"
// public_replication {
// public_fields {
// paths: "card_name"
// }
// }
// }
// }
//
// "card_name" will be made public, "private_field" will not be.
//
// A few notes:
// - Currently PublicReplication just wraps a FieldMask. This is done so that
// it can be discovered via proto reflection without accidentally using
// FieldMasks that are not meant to control public fields.
// - In FieldMasks a repeated field is only allowed in the last position of a
// path (https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.FieldMask).
// Using a single FieldMask for a ConfigBundle would not be very useful, since
// more granularity is needed (i.e. saying all or none of
// "software_configs" is public is not useful). Thus, FieldMasks to control
// public fields are specified in child messages of ConfigBundle.
message PublicReplication {
google.protobuf.FieldMask public_fields = 1;
}