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.
14syntax = "proto3";
15
16package cobalt;
17
18import "observation_batch.proto";
19
20option java_multiple_files = true;
21option java_package = "com.google.cobalt";
22
23////////////////////////////////////////////////////////////////////////////////
24// NOTE: This file is used by the Cobalt client and the Cobalt servers.
25// The source-of-truth of this file is located in Cobalt's open source code
26// repository, and the file is copied to Android where it is used by the Cobalt
27// client. Do not edit the copy of this file in this Android repo as those edits
28// will be overwritten when the file is next copied.
29////////////////////////////////////////////////////////////////////////////////
30
31// An envelope contains multiple ObservationBatches. An encrypted Envelope
32// is the unit sent from an Encoder client to a Shuffler.
33message Envelope {
34  // We used to put a SystemProfile into an Envelope but we no longer do.
35  // Now we only put SystemProfiles into ObservationBatches.
36  reserved 3;
37  reserved "system_profile";
38
39  repeated ObservationBatch batch = 1;
40
41  // If api_key contains the right secret string, this allows Cobalt to identify
42  // that this envelope comes from a valid Cobalt client.
43  bytes api_key = 4;
44}
45