xref: /aosp_15_r20/external/googleapis/grafeas/v1/grafeas.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker// Copyright 2019 The Grafeas Authors. All rights reserved.
2*d5c09012SAndroid Build Coastguard Worker//
3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*d5c09012SAndroid Build Coastguard Worker//
7*d5c09012SAndroid Build Coastguard Worker//    http://www.apache.org/licenses/LICENSE-2.0
8*d5c09012SAndroid Build Coastguard Worker//
9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*d5c09012SAndroid Build Coastguard Worker// limitations under the License.
14*d5c09012SAndroid Build Coastguard Worker
15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3";
16*d5c09012SAndroid Build Coastguard Worker
17*d5c09012SAndroid Build Coastguard Workerpackage grafeas.v1;
18*d5c09012SAndroid Build Coastguard Worker
19*d5c09012SAndroid Build Coastguard Workerimport "google/api/annotations.proto";
20*d5c09012SAndroid Build Coastguard Workerimport "google/api/client.proto";
21*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto";
22*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto";
23*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/empty.proto";
24*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/field_mask.proto";
25*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto";
26*d5c09012SAndroid Build Coastguard Workerimport "grafeas/v1/attestation.proto";
27*d5c09012SAndroid Build Coastguard Workerimport "grafeas/v1/build.proto";
28*d5c09012SAndroid Build Coastguard Workerimport "grafeas/v1/common.proto";
29*d5c09012SAndroid Build Coastguard Workerimport "grafeas/v1/compliance.proto";
30*d5c09012SAndroid Build Coastguard Workerimport "grafeas/v1/deployment.proto";
31*d5c09012SAndroid Build Coastguard Workerimport "grafeas/v1/discovery.proto";
32*d5c09012SAndroid Build Coastguard Workerimport "grafeas/v1/dsse_attestation.proto";
33*d5c09012SAndroid Build Coastguard Workerimport "grafeas/v1/image.proto";
34*d5c09012SAndroid Build Coastguard Workerimport "grafeas/v1/package.proto";
35*d5c09012SAndroid Build Coastguard Workerimport "grafeas/v1/sbom.proto";
36*d5c09012SAndroid Build Coastguard Workerimport "grafeas/v1/upgrade.proto";
37*d5c09012SAndroid Build Coastguard Workerimport "grafeas/v1/vex.proto";
38*d5c09012SAndroid Build Coastguard Workerimport "grafeas/v1/vulnerability.proto";
39*d5c09012SAndroid Build Coastguard Worker
40*d5c09012SAndroid Build Coastguard Workeroption go_package = "google.golang.org/genproto/googleapis/grafeas/v1;grafeas";
41*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
42*d5c09012SAndroid Build Coastguard Workeroption java_package = "io.grafeas.v1";
43*d5c09012SAndroid Build Coastguard Workeroption objc_class_prefix = "GRA";
44*d5c09012SAndroid Build Coastguard Workeroption (google.api.resource_definition) = {
45*d5c09012SAndroid Build Coastguard Worker  type: "grafeas.io/Project"
46*d5c09012SAndroid Build Coastguard Worker  pattern: "projects/{project}"
47*d5c09012SAndroid Build Coastguard Worker};
48*d5c09012SAndroid Build Coastguard Worker
49*d5c09012SAndroid Build Coastguard Worker// [Grafeas](https://grafeas.io) API.
50*d5c09012SAndroid Build Coastguard Worker//
51*d5c09012SAndroid Build Coastguard Worker// Retrieves analysis results of Cloud components such as Docker container
52*d5c09012SAndroid Build Coastguard Worker// images.
53*d5c09012SAndroid Build Coastguard Worker//
54*d5c09012SAndroid Build Coastguard Worker// Analysis results are stored as a series of occurrences. An `Occurrence`
55*d5c09012SAndroid Build Coastguard Worker// contains information about a specific analysis instance on a resource. An
56*d5c09012SAndroid Build Coastguard Worker// occurrence refers to a `Note`. A note contains details describing the
57*d5c09012SAndroid Build Coastguard Worker// analysis and is generally stored in a separate project, called a `Provider`.
58*d5c09012SAndroid Build Coastguard Worker// Multiple occurrences can refer to the same note.
59*d5c09012SAndroid Build Coastguard Worker//
60*d5c09012SAndroid Build Coastguard Worker// For example, an SSL vulnerability could affect multiple images. In this case,
61*d5c09012SAndroid Build Coastguard Worker// there would be one note for the vulnerability and an occurrence for each
62*d5c09012SAndroid Build Coastguard Worker// image with the vulnerability referring to that note.
63*d5c09012SAndroid Build Coastguard Workerservice Grafeas {
64*d5c09012SAndroid Build Coastguard Worker  option (google.api.default_host) = "containeranalysis.googleapis.com";
65*d5c09012SAndroid Build Coastguard Worker
66*d5c09012SAndroid Build Coastguard Worker  // Gets the specified occurrence.
67*d5c09012SAndroid Build Coastguard Worker  rpc GetOccurrence(GetOccurrenceRequest) returns (Occurrence) {
68*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
69*d5c09012SAndroid Build Coastguard Worker      get: "/v1/{name=projects/*/occurrences/*}"
70*d5c09012SAndroid Build Coastguard Worker      additional_bindings {
71*d5c09012SAndroid Build Coastguard Worker        get: "/v1/{name=projects/*/locations/*/occurrences/*}"
72*d5c09012SAndroid Build Coastguard Worker      }
73*d5c09012SAndroid Build Coastguard Worker    };
74*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name";
75*d5c09012SAndroid Build Coastguard Worker  }
76*d5c09012SAndroid Build Coastguard Worker
77*d5c09012SAndroid Build Coastguard Worker  // Lists occurrences for the specified project.
78*d5c09012SAndroid Build Coastguard Worker  rpc ListOccurrences(ListOccurrencesRequest)
79*d5c09012SAndroid Build Coastguard Worker      returns (ListOccurrencesResponse) {
80*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
81*d5c09012SAndroid Build Coastguard Worker      get: "/v1/{parent=projects/*}/occurrences"
82*d5c09012SAndroid Build Coastguard Worker      additional_bindings {
83*d5c09012SAndroid Build Coastguard Worker        get: "/v1/{parent=projects/*/locations/*}/occurrences"
84*d5c09012SAndroid Build Coastguard Worker      }
85*d5c09012SAndroid Build Coastguard Worker    };
86*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "parent,filter";
87*d5c09012SAndroid Build Coastguard Worker  }
88*d5c09012SAndroid Build Coastguard Worker
89*d5c09012SAndroid Build Coastguard Worker  // Deletes the specified occurrence. For example, use this method to delete an
90*d5c09012SAndroid Build Coastguard Worker  // occurrence when the occurrence is no longer applicable for the given
91*d5c09012SAndroid Build Coastguard Worker  // resource.
92*d5c09012SAndroid Build Coastguard Worker  rpc DeleteOccurrence(DeleteOccurrenceRequest)
93*d5c09012SAndroid Build Coastguard Worker      returns (google.protobuf.Empty) {
94*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
95*d5c09012SAndroid Build Coastguard Worker      delete: "/v1/{name=projects/*/occurrences/*}"
96*d5c09012SAndroid Build Coastguard Worker    };
97*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name";
98*d5c09012SAndroid Build Coastguard Worker  }
99*d5c09012SAndroid Build Coastguard Worker
100*d5c09012SAndroid Build Coastguard Worker  // Creates a new occurrence.
101*d5c09012SAndroid Build Coastguard Worker  rpc CreateOccurrence(CreateOccurrenceRequest) returns (Occurrence) {
102*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
103*d5c09012SAndroid Build Coastguard Worker      post: "/v1/{parent=projects/*}/occurrences"
104*d5c09012SAndroid Build Coastguard Worker      body: "occurrence"
105*d5c09012SAndroid Build Coastguard Worker    };
106*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "parent,occurrence";
107*d5c09012SAndroid Build Coastguard Worker  }
108*d5c09012SAndroid Build Coastguard Worker
109*d5c09012SAndroid Build Coastguard Worker  // Creates new occurrences in batch.
110*d5c09012SAndroid Build Coastguard Worker  rpc BatchCreateOccurrences(BatchCreateOccurrencesRequest)
111*d5c09012SAndroid Build Coastguard Worker      returns (BatchCreateOccurrencesResponse) {
112*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
113*d5c09012SAndroid Build Coastguard Worker      post: "/v1/{parent=projects/*}/occurrences:batchCreate"
114*d5c09012SAndroid Build Coastguard Worker      body: "*"
115*d5c09012SAndroid Build Coastguard Worker    };
116*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "parent,occurrences";
117*d5c09012SAndroid Build Coastguard Worker  }
118*d5c09012SAndroid Build Coastguard Worker
119*d5c09012SAndroid Build Coastguard Worker  // Updates the specified occurrence.
120*d5c09012SAndroid Build Coastguard Worker  rpc UpdateOccurrence(UpdateOccurrenceRequest) returns (Occurrence) {
121*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
122*d5c09012SAndroid Build Coastguard Worker      patch: "/v1/{name=projects/*/occurrences/*}"
123*d5c09012SAndroid Build Coastguard Worker      body: "occurrence"
124*d5c09012SAndroid Build Coastguard Worker    };
125*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name,occurrence,update_mask";
126*d5c09012SAndroid Build Coastguard Worker  }
127*d5c09012SAndroid Build Coastguard Worker
128*d5c09012SAndroid Build Coastguard Worker  // Gets the note attached to the specified occurrence. Consumer projects can
129*d5c09012SAndroid Build Coastguard Worker  // use this method to get a note that belongs to a provider project.
130*d5c09012SAndroid Build Coastguard Worker  rpc GetOccurrenceNote(GetOccurrenceNoteRequest) returns (Note) {
131*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
132*d5c09012SAndroid Build Coastguard Worker      get: "/v1/{name=projects/*/occurrences/*}/notes"
133*d5c09012SAndroid Build Coastguard Worker      additional_bindings {
134*d5c09012SAndroid Build Coastguard Worker        get: "/v1/{name=projects/*/locations/*/occurrences/*}/notes"
135*d5c09012SAndroid Build Coastguard Worker      }
136*d5c09012SAndroid Build Coastguard Worker    };
137*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name";
138*d5c09012SAndroid Build Coastguard Worker  }
139*d5c09012SAndroid Build Coastguard Worker
140*d5c09012SAndroid Build Coastguard Worker  // Gets the specified note.
141*d5c09012SAndroid Build Coastguard Worker  rpc GetNote(GetNoteRequest) returns (Note) {
142*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
143*d5c09012SAndroid Build Coastguard Worker      get: "/v1/{name=projects/*/notes/*}"
144*d5c09012SAndroid Build Coastguard Worker      additional_bindings { get: "/v1/{name=projects/*/locations/*/notes/*}" }
145*d5c09012SAndroid Build Coastguard Worker    };
146*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name";
147*d5c09012SAndroid Build Coastguard Worker  }
148*d5c09012SAndroid Build Coastguard Worker
149*d5c09012SAndroid Build Coastguard Worker  // Lists notes for the specified project.
150*d5c09012SAndroid Build Coastguard Worker  rpc ListNotes(ListNotesRequest) returns (ListNotesResponse) {
151*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
152*d5c09012SAndroid Build Coastguard Worker      get: "/v1/{parent=projects/*}/notes"
153*d5c09012SAndroid Build Coastguard Worker      additional_bindings { get: "/v1/{parent=projects/*/locations/*}/notes" }
154*d5c09012SAndroid Build Coastguard Worker    };
155*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "parent,filter";
156*d5c09012SAndroid Build Coastguard Worker  }
157*d5c09012SAndroid Build Coastguard Worker
158*d5c09012SAndroid Build Coastguard Worker  // Deletes the specified note.
159*d5c09012SAndroid Build Coastguard Worker  rpc DeleteNote(DeleteNoteRequest) returns (google.protobuf.Empty) {
160*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
161*d5c09012SAndroid Build Coastguard Worker      delete: "/v1/{name=projects/*/notes/*}"
162*d5c09012SAndroid Build Coastguard Worker    };
163*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name";
164*d5c09012SAndroid Build Coastguard Worker  }
165*d5c09012SAndroid Build Coastguard Worker
166*d5c09012SAndroid Build Coastguard Worker  // Creates a new note.
167*d5c09012SAndroid Build Coastguard Worker  rpc CreateNote(CreateNoteRequest) returns (Note) {
168*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
169*d5c09012SAndroid Build Coastguard Worker      post: "/v1/{parent=projects/*}/notes"
170*d5c09012SAndroid Build Coastguard Worker      body: "note"
171*d5c09012SAndroid Build Coastguard Worker    };
172*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "parent,note_id,note";
173*d5c09012SAndroid Build Coastguard Worker  }
174*d5c09012SAndroid Build Coastguard Worker
175*d5c09012SAndroid Build Coastguard Worker  // Creates new notes in batch.
176*d5c09012SAndroid Build Coastguard Worker  rpc BatchCreateNotes(BatchCreateNotesRequest)
177*d5c09012SAndroid Build Coastguard Worker      returns (BatchCreateNotesResponse) {
178*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
179*d5c09012SAndroid Build Coastguard Worker      post: "/v1/{parent=projects/*}/notes:batchCreate"
180*d5c09012SAndroid Build Coastguard Worker      body: "*"
181*d5c09012SAndroid Build Coastguard Worker    };
182*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "parent,notes";
183*d5c09012SAndroid Build Coastguard Worker  }
184*d5c09012SAndroid Build Coastguard Worker
185*d5c09012SAndroid Build Coastguard Worker  // Updates the specified note.
186*d5c09012SAndroid Build Coastguard Worker  rpc UpdateNote(UpdateNoteRequest) returns (Note) {
187*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
188*d5c09012SAndroid Build Coastguard Worker      patch: "/v1/{name=projects/*/notes/*}"
189*d5c09012SAndroid Build Coastguard Worker      body: "note"
190*d5c09012SAndroid Build Coastguard Worker    };
191*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name,note,update_mask";
192*d5c09012SAndroid Build Coastguard Worker  }
193*d5c09012SAndroid Build Coastguard Worker
194*d5c09012SAndroid Build Coastguard Worker  // Lists occurrences referencing the specified note. Provider projects can use
195*d5c09012SAndroid Build Coastguard Worker  // this method to get all occurrences across consumer projects referencing the
196*d5c09012SAndroid Build Coastguard Worker  // specified note.
197*d5c09012SAndroid Build Coastguard Worker  rpc ListNoteOccurrences(ListNoteOccurrencesRequest)
198*d5c09012SAndroid Build Coastguard Worker      returns (ListNoteOccurrencesResponse) {
199*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
200*d5c09012SAndroid Build Coastguard Worker      get: "/v1/{name=projects/*/notes/*}/occurrences"
201*d5c09012SAndroid Build Coastguard Worker      additional_bindings {
202*d5c09012SAndroid Build Coastguard Worker        get: "/v1/{name=projects/*/locations/*/notes/*}/occurrences"
203*d5c09012SAndroid Build Coastguard Worker      }
204*d5c09012SAndroid Build Coastguard Worker    };
205*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name,filter";
206*d5c09012SAndroid Build Coastguard Worker  }
207*d5c09012SAndroid Build Coastguard Worker}
208*d5c09012SAndroid Build Coastguard Worker
209*d5c09012SAndroid Build Coastguard Worker// An instance of an analysis type that has been found on a resource.
210*d5c09012SAndroid Build Coastguard Workermessage Occurrence {
211*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
212*d5c09012SAndroid Build Coastguard Worker    type: "grafeas.io/Occurrence"
213*d5c09012SAndroid Build Coastguard Worker    pattern: "projects/{project}/occurrences/{occurrence}"
214*d5c09012SAndroid Build Coastguard Worker  };
215*d5c09012SAndroid Build Coastguard Worker
216*d5c09012SAndroid Build Coastguard Worker  // Output only. The name of the occurrence in the form of
217*d5c09012SAndroid Build Coastguard Worker  // `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
218*d5c09012SAndroid Build Coastguard Worker  string name = 1;
219*d5c09012SAndroid Build Coastguard Worker
220*d5c09012SAndroid Build Coastguard Worker  // Required. Immutable. A URI that represents the resource for which the
221*d5c09012SAndroid Build Coastguard Worker  // occurrence applies. For example,
222*d5c09012SAndroid Build Coastguard Worker  // `https://gcr.io/project/image@sha256:123abc` for a Docker image.
223*d5c09012SAndroid Build Coastguard Worker  string resource_uri = 2;
224*d5c09012SAndroid Build Coastguard Worker
225*d5c09012SAndroid Build Coastguard Worker  // Required. Immutable. The analysis note associated with this occurrence, in
226*d5c09012SAndroid Build Coastguard Worker  // the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can be
227*d5c09012SAndroid Build Coastguard Worker  // used as a filter in list requests.
228*d5c09012SAndroid Build Coastguard Worker  string note_name = 3;
229*d5c09012SAndroid Build Coastguard Worker
230*d5c09012SAndroid Build Coastguard Worker  // Output only. This explicitly denotes which of the occurrence details are
231*d5c09012SAndroid Build Coastguard Worker  // specified. This field can be used as a filter in list requests.
232*d5c09012SAndroid Build Coastguard Worker  grafeas.v1.NoteKind kind = 4;
233*d5c09012SAndroid Build Coastguard Worker
234*d5c09012SAndroid Build Coastguard Worker  // A description of actions that can be taken to remedy the note.
235*d5c09012SAndroid Build Coastguard Worker  string remediation = 5;
236*d5c09012SAndroid Build Coastguard Worker
237*d5c09012SAndroid Build Coastguard Worker  // Output only. The time this occurrence was created.
238*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp create_time = 6;
239*d5c09012SAndroid Build Coastguard Worker
240*d5c09012SAndroid Build Coastguard Worker  // Output only. The time this occurrence was last updated.
241*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp update_time = 7;
242*d5c09012SAndroid Build Coastguard Worker
243*d5c09012SAndroid Build Coastguard Worker  // Required. Immutable. Describes the details of the note kind found on this
244*d5c09012SAndroid Build Coastguard Worker  // resource.
245*d5c09012SAndroid Build Coastguard Worker  oneof details {
246*d5c09012SAndroid Build Coastguard Worker    // Describes a security vulnerability.
247*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.VulnerabilityOccurrence vulnerability = 8;
248*d5c09012SAndroid Build Coastguard Worker    // Describes a verifiable build.
249*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.BuildOccurrence build = 9;
250*d5c09012SAndroid Build Coastguard Worker    // Describes how this resource derives from the basis in the associated
251*d5c09012SAndroid Build Coastguard Worker    // note.
252*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.ImageOccurrence image = 10;
253*d5c09012SAndroid Build Coastguard Worker    // Describes the installation of a package on the linked resource.
254*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.PackageOccurrence package = 11;
255*d5c09012SAndroid Build Coastguard Worker    // Describes the deployment of an artifact on a runtime.
256*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.DeploymentOccurrence deployment = 12;
257*d5c09012SAndroid Build Coastguard Worker    // Describes when a resource was discovered.
258*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.DiscoveryOccurrence discovery = 13;
259*d5c09012SAndroid Build Coastguard Worker    // Describes an attestation of an artifact.
260*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.AttestationOccurrence attestation = 14;
261*d5c09012SAndroid Build Coastguard Worker    // Describes an available package upgrade on the linked resource.
262*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.UpgradeOccurrence upgrade = 15;
263*d5c09012SAndroid Build Coastguard Worker    // Describes a compliance violation on a linked resource.
264*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.ComplianceOccurrence compliance = 16;
265*d5c09012SAndroid Build Coastguard Worker    // Describes an attestation of an artifact using dsse.
266*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.DSSEAttestationOccurrence dsse_attestation = 17;
267*d5c09012SAndroid Build Coastguard Worker    // Describes a specific SBOM reference occurrences.
268*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.SBOMReferenceOccurrence sbom_reference = 19;
269*d5c09012SAndroid Build Coastguard Worker  }
270*d5c09012SAndroid Build Coastguard Worker
271*d5c09012SAndroid Build Coastguard Worker  // https://github.com/secure-systems-lab/dsse
272*d5c09012SAndroid Build Coastguard Worker  grafeas.v1.Envelope envelope = 18;
273*d5c09012SAndroid Build Coastguard Worker}
274*d5c09012SAndroid Build Coastguard Worker
275*d5c09012SAndroid Build Coastguard Worker// A type of analysis that can be done for a resource.
276*d5c09012SAndroid Build Coastguard Workermessage Note {
277*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
278*d5c09012SAndroid Build Coastguard Worker    type: "grafeas.io/Note"
279*d5c09012SAndroid Build Coastguard Worker    pattern: "projects/{project}/notes/{note}"
280*d5c09012SAndroid Build Coastguard Worker  };
281*d5c09012SAndroid Build Coastguard Worker
282*d5c09012SAndroid Build Coastguard Worker  // Output only. The name of the note in the form of
283*d5c09012SAndroid Build Coastguard Worker  // `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
284*d5c09012SAndroid Build Coastguard Worker  string name = 1;
285*d5c09012SAndroid Build Coastguard Worker
286*d5c09012SAndroid Build Coastguard Worker  // A one sentence description of this note.
287*d5c09012SAndroid Build Coastguard Worker  string short_description = 2;
288*d5c09012SAndroid Build Coastguard Worker
289*d5c09012SAndroid Build Coastguard Worker  // A detailed description of this note.
290*d5c09012SAndroid Build Coastguard Worker  string long_description = 3;
291*d5c09012SAndroid Build Coastguard Worker
292*d5c09012SAndroid Build Coastguard Worker  // Output only. The type of analysis. This field can be used as a filter in
293*d5c09012SAndroid Build Coastguard Worker  // list requests.
294*d5c09012SAndroid Build Coastguard Worker  grafeas.v1.NoteKind kind = 4;
295*d5c09012SAndroid Build Coastguard Worker
296*d5c09012SAndroid Build Coastguard Worker  // URLs associated with this note.
297*d5c09012SAndroid Build Coastguard Worker  repeated grafeas.v1.RelatedUrl related_url = 5;
298*d5c09012SAndroid Build Coastguard Worker
299*d5c09012SAndroid Build Coastguard Worker  // Time of expiration for this note. Empty if note does not expire.
300*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp expiration_time = 6;
301*d5c09012SAndroid Build Coastguard Worker
302*d5c09012SAndroid Build Coastguard Worker  // Output only. The time this note was created. This field can be used as a
303*d5c09012SAndroid Build Coastguard Worker  // filter in list requests.
304*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp create_time = 7;
305*d5c09012SAndroid Build Coastguard Worker
306*d5c09012SAndroid Build Coastguard Worker  // Output only. The time this note was last updated. This field can be used as
307*d5c09012SAndroid Build Coastguard Worker  // a filter in list requests.
308*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp update_time = 8;
309*d5c09012SAndroid Build Coastguard Worker
310*d5c09012SAndroid Build Coastguard Worker  // Other notes related to this note.
311*d5c09012SAndroid Build Coastguard Worker  repeated string related_note_names = 9;
312*d5c09012SAndroid Build Coastguard Worker
313*d5c09012SAndroid Build Coastguard Worker  // Required. Immutable. The type of analysis this note represents.
314*d5c09012SAndroid Build Coastguard Worker  oneof type {
315*d5c09012SAndroid Build Coastguard Worker    // A note describing a package vulnerability.
316*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.VulnerabilityNote vulnerability = 10;
317*d5c09012SAndroid Build Coastguard Worker    // A note describing build provenance for a verifiable build.
318*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.BuildNote build = 11;
319*d5c09012SAndroid Build Coastguard Worker    // A note describing a base image.
320*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.ImageNote image = 12;
321*d5c09012SAndroid Build Coastguard Worker    // A note describing a package hosted by various package managers.
322*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.PackageNote package = 13;
323*d5c09012SAndroid Build Coastguard Worker    // A note describing something that can be deployed.
324*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.DeploymentNote deployment = 14;
325*d5c09012SAndroid Build Coastguard Worker    // A note describing the initial analysis of a resource.
326*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.DiscoveryNote discovery = 15;
327*d5c09012SAndroid Build Coastguard Worker    // A note describing an attestation role.
328*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.AttestationNote attestation = 16;
329*d5c09012SAndroid Build Coastguard Worker    // A note describing available package upgrades.
330*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.UpgradeNote upgrade = 17;
331*d5c09012SAndroid Build Coastguard Worker    // A note describing a compliance check.
332*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.ComplianceNote compliance = 18;
333*d5c09012SAndroid Build Coastguard Worker    // A note describing a dsse attestation note.
334*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.DSSEAttestationNote dsse_attestation = 19;
335*d5c09012SAndroid Build Coastguard Worker    // A note describing a vulnerability assessment.
336*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.VulnerabilityAssessmentNote vulnerability_assessment = 20;
337*d5c09012SAndroid Build Coastguard Worker    // A note describing an SBOM reference.
338*d5c09012SAndroid Build Coastguard Worker    grafeas.v1.SBOMReferenceNote sbom_reference = 21;
339*d5c09012SAndroid Build Coastguard Worker  }
340*d5c09012SAndroid Build Coastguard Worker}
341*d5c09012SAndroid Build Coastguard Worker
342*d5c09012SAndroid Build Coastguard Worker// Request to get an occurrence.
343*d5c09012SAndroid Build Coastguard Workermessage GetOccurrenceRequest {
344*d5c09012SAndroid Build Coastguard Worker  // The name of the occurrence in the form of
345*d5c09012SAndroid Build Coastguard Worker  // `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
346*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
347*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
348*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference).type = "grafeas.io/Occurrence"
349*d5c09012SAndroid Build Coastguard Worker  ];
350*d5c09012SAndroid Build Coastguard Worker}
351*d5c09012SAndroid Build Coastguard Worker
352*d5c09012SAndroid Build Coastguard Worker// Request to list occurrences.
353*d5c09012SAndroid Build Coastguard Workermessage ListOccurrencesRequest {
354*d5c09012SAndroid Build Coastguard Worker  // The name of the project to list occurrences for in the form of
355*d5c09012SAndroid Build Coastguard Worker  // `projects/[PROJECT_ID]`.
356*d5c09012SAndroid Build Coastguard Worker  string parent = 1 [
357*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
358*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference).type = "grafeas.io/Project"
359*d5c09012SAndroid Build Coastguard Worker  ];
360*d5c09012SAndroid Build Coastguard Worker
361*d5c09012SAndroid Build Coastguard Worker  // The filter expression.
362*d5c09012SAndroid Build Coastguard Worker  string filter = 2;
363*d5c09012SAndroid Build Coastguard Worker
364*d5c09012SAndroid Build Coastguard Worker  // Number of occurrences to return in the list. Must be positive. Max allowed
365*d5c09012SAndroid Build Coastguard Worker  // page size is 1000. If not specified, page size defaults to 20.
366*d5c09012SAndroid Build Coastguard Worker  int32 page_size = 3;
367*d5c09012SAndroid Build Coastguard Worker
368*d5c09012SAndroid Build Coastguard Worker  // Token to provide to skip to a particular spot in the list.
369*d5c09012SAndroid Build Coastguard Worker  string page_token = 4;
370*d5c09012SAndroid Build Coastguard Worker}
371*d5c09012SAndroid Build Coastguard Worker
372*d5c09012SAndroid Build Coastguard Worker// Response for listing occurrences.
373*d5c09012SAndroid Build Coastguard Workermessage ListOccurrencesResponse {
374*d5c09012SAndroid Build Coastguard Worker  // The occurrences requested.
375*d5c09012SAndroid Build Coastguard Worker  repeated Occurrence occurrences = 1;
376*d5c09012SAndroid Build Coastguard Worker  // The next pagination token in the list response. It should be used as
377*d5c09012SAndroid Build Coastguard Worker  // `page_token` for the following request. An empty value means no more
378*d5c09012SAndroid Build Coastguard Worker  // results.
379*d5c09012SAndroid Build Coastguard Worker  string next_page_token = 2;
380*d5c09012SAndroid Build Coastguard Worker}
381*d5c09012SAndroid Build Coastguard Worker
382*d5c09012SAndroid Build Coastguard Worker// Request to delete an occurrence.
383*d5c09012SAndroid Build Coastguard Workermessage DeleteOccurrenceRequest {
384*d5c09012SAndroid Build Coastguard Worker  // The name of the occurrence in the form of
385*d5c09012SAndroid Build Coastguard Worker  // `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
386*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
387*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
388*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference).type = "grafeas.io/Occurrence"
389*d5c09012SAndroid Build Coastguard Worker  ];
390*d5c09012SAndroid Build Coastguard Worker}
391*d5c09012SAndroid Build Coastguard Worker
392*d5c09012SAndroid Build Coastguard Worker// Request to create a new occurrence.
393*d5c09012SAndroid Build Coastguard Workermessage CreateOccurrenceRequest {
394*d5c09012SAndroid Build Coastguard Worker  // The name of the project in the form of `projects/[PROJECT_ID]`, under which
395*d5c09012SAndroid Build Coastguard Worker  // the occurrence is to be created.
396*d5c09012SAndroid Build Coastguard Worker  string parent = 1 [
397*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
398*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference).type = "grafeas.io/Project"
399*d5c09012SAndroid Build Coastguard Worker  ];
400*d5c09012SAndroid Build Coastguard Worker  // The occurrence to create.
401*d5c09012SAndroid Build Coastguard Worker  Occurrence occurrence = 2 [(google.api.field_behavior) = REQUIRED];
402*d5c09012SAndroid Build Coastguard Worker}
403*d5c09012SAndroid Build Coastguard Worker
404*d5c09012SAndroid Build Coastguard Worker// Request to update an occurrence.
405*d5c09012SAndroid Build Coastguard Workermessage UpdateOccurrenceRequest {
406*d5c09012SAndroid Build Coastguard Worker  // The name of the occurrence in the form of
407*d5c09012SAndroid Build Coastguard Worker  // `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
408*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
409*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
410*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference).type = "grafeas.io/Occurrence"
411*d5c09012SAndroid Build Coastguard Worker  ];
412*d5c09012SAndroid Build Coastguard Worker  // The updated occurrence.
413*d5c09012SAndroid Build Coastguard Worker  Occurrence occurrence = 2 [(google.api.field_behavior) = REQUIRED];
414*d5c09012SAndroid Build Coastguard Worker  // The fields to update.
415*d5c09012SAndroid Build Coastguard Worker  google.protobuf.FieldMask update_mask = 3;
416*d5c09012SAndroid Build Coastguard Worker}
417*d5c09012SAndroid Build Coastguard Worker
418*d5c09012SAndroid Build Coastguard Worker// Request to get a note.
419*d5c09012SAndroid Build Coastguard Workermessage GetNoteRequest {
420*d5c09012SAndroid Build Coastguard Worker  // The name of the note in the form of
421*d5c09012SAndroid Build Coastguard Worker  // `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
422*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
423*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
424*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference).type = "grafeas.io/Note"
425*d5c09012SAndroid Build Coastguard Worker  ];
426*d5c09012SAndroid Build Coastguard Worker}
427*d5c09012SAndroid Build Coastguard Worker
428*d5c09012SAndroid Build Coastguard Worker// Request to get the note to which the specified occurrence is attached.
429*d5c09012SAndroid Build Coastguard Workermessage GetOccurrenceNoteRequest {
430*d5c09012SAndroid Build Coastguard Worker  // The name of the occurrence in the form of
431*d5c09012SAndroid Build Coastguard Worker  // `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
432*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
433*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
434*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference).type = "grafeas.io/Occurrence"
435*d5c09012SAndroid Build Coastguard Worker  ];
436*d5c09012SAndroid Build Coastguard Worker}
437*d5c09012SAndroid Build Coastguard Worker
438*d5c09012SAndroid Build Coastguard Worker// Request to list notes.
439*d5c09012SAndroid Build Coastguard Workermessage ListNotesRequest {
440*d5c09012SAndroid Build Coastguard Worker  // The name of the project to list notes for in the form of
441*d5c09012SAndroid Build Coastguard Worker  // `projects/[PROJECT_ID]`.
442*d5c09012SAndroid Build Coastguard Worker  string parent = 1 [
443*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
444*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference).type = "grafeas.io/Project"
445*d5c09012SAndroid Build Coastguard Worker  ];
446*d5c09012SAndroid Build Coastguard Worker
447*d5c09012SAndroid Build Coastguard Worker  // The filter expression.
448*d5c09012SAndroid Build Coastguard Worker  string filter = 2;
449*d5c09012SAndroid Build Coastguard Worker
450*d5c09012SAndroid Build Coastguard Worker  // Number of notes to return in the list. Must be positive. Max allowed page
451*d5c09012SAndroid Build Coastguard Worker  // size is 1000. If not specified, page size defaults to 20.
452*d5c09012SAndroid Build Coastguard Worker  int32 page_size = 3;
453*d5c09012SAndroid Build Coastguard Worker
454*d5c09012SAndroid Build Coastguard Worker  // Token to provide to skip to a particular spot in the list.
455*d5c09012SAndroid Build Coastguard Worker  string page_token = 4;
456*d5c09012SAndroid Build Coastguard Worker}
457*d5c09012SAndroid Build Coastguard Worker
458*d5c09012SAndroid Build Coastguard Worker// Response for listing notes.
459*d5c09012SAndroid Build Coastguard Workermessage ListNotesResponse {
460*d5c09012SAndroid Build Coastguard Worker  // The notes requested.
461*d5c09012SAndroid Build Coastguard Worker  repeated Note notes = 1;
462*d5c09012SAndroid Build Coastguard Worker  // The next pagination token in the list response. It should be used as
463*d5c09012SAndroid Build Coastguard Worker  // `page_token` for the following request. An empty value means no more
464*d5c09012SAndroid Build Coastguard Worker  // results.
465*d5c09012SAndroid Build Coastguard Worker  string next_page_token = 2;
466*d5c09012SAndroid Build Coastguard Worker}
467*d5c09012SAndroid Build Coastguard Worker
468*d5c09012SAndroid Build Coastguard Worker// Request to delete a note.
469*d5c09012SAndroid Build Coastguard Workermessage DeleteNoteRequest {
470*d5c09012SAndroid Build Coastguard Worker  // The name of the note in the form of
471*d5c09012SAndroid Build Coastguard Worker  // `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
472*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
473*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
474*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference).type = "grafeas.io/Note"
475*d5c09012SAndroid Build Coastguard Worker  ];
476*d5c09012SAndroid Build Coastguard Worker}
477*d5c09012SAndroid Build Coastguard Worker
478*d5c09012SAndroid Build Coastguard Worker// Request to create a new note.
479*d5c09012SAndroid Build Coastguard Workermessage CreateNoteRequest {
480*d5c09012SAndroid Build Coastguard Worker  // The name of the project in the form of `projects/[PROJECT_ID]`, under which
481*d5c09012SAndroid Build Coastguard Worker  // the note is to be created.
482*d5c09012SAndroid Build Coastguard Worker  string parent = 1 [
483*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
484*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference).type = "grafeas.io/Project"
485*d5c09012SAndroid Build Coastguard Worker  ];
486*d5c09012SAndroid Build Coastguard Worker  // The ID to use for this note.
487*d5c09012SAndroid Build Coastguard Worker  string note_id = 2 [(google.api.field_behavior) = REQUIRED];
488*d5c09012SAndroid Build Coastguard Worker  // The note to create.
489*d5c09012SAndroid Build Coastguard Worker  Note note = 3 [(google.api.field_behavior) = REQUIRED];
490*d5c09012SAndroid Build Coastguard Worker}
491*d5c09012SAndroid Build Coastguard Worker
492*d5c09012SAndroid Build Coastguard Worker// Request to update a note.
493*d5c09012SAndroid Build Coastguard Workermessage UpdateNoteRequest {
494*d5c09012SAndroid Build Coastguard Worker  // The name of the note in the form of
495*d5c09012SAndroid Build Coastguard Worker  // `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
496*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
497*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
498*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference).type = "grafeas.io/Note"
499*d5c09012SAndroid Build Coastguard Worker  ];
500*d5c09012SAndroid Build Coastguard Worker  // The updated note.
501*d5c09012SAndroid Build Coastguard Worker  Note note = 2 [(google.api.field_behavior) = REQUIRED];
502*d5c09012SAndroid Build Coastguard Worker  // The fields to update.
503*d5c09012SAndroid Build Coastguard Worker  google.protobuf.FieldMask update_mask = 3;
504*d5c09012SAndroid Build Coastguard Worker}
505*d5c09012SAndroid Build Coastguard Worker
506*d5c09012SAndroid Build Coastguard Worker// Request to list occurrences for a note.
507*d5c09012SAndroid Build Coastguard Workermessage ListNoteOccurrencesRequest {
508*d5c09012SAndroid Build Coastguard Worker  // The name of the note to list occurrences for in the form of
509*d5c09012SAndroid Build Coastguard Worker  // `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
510*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
511*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
512*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference).type = "grafeas.io/Note"
513*d5c09012SAndroid Build Coastguard Worker  ];
514*d5c09012SAndroid Build Coastguard Worker  // The filter expression.
515*d5c09012SAndroid Build Coastguard Worker  string filter = 2;
516*d5c09012SAndroid Build Coastguard Worker  // Number of occurrences to return in the list.
517*d5c09012SAndroid Build Coastguard Worker  int32 page_size = 3;
518*d5c09012SAndroid Build Coastguard Worker  // Token to provide to skip to a particular spot in the list.
519*d5c09012SAndroid Build Coastguard Worker  string page_token = 4;
520*d5c09012SAndroid Build Coastguard Worker}
521*d5c09012SAndroid Build Coastguard Worker
522*d5c09012SAndroid Build Coastguard Worker// Response for listing occurrences for a note.
523*d5c09012SAndroid Build Coastguard Workermessage ListNoteOccurrencesResponse {
524*d5c09012SAndroid Build Coastguard Worker  // The occurrences attached to the specified note.
525*d5c09012SAndroid Build Coastguard Worker  repeated Occurrence occurrences = 1;
526*d5c09012SAndroid Build Coastguard Worker  // Token to provide to skip to a particular spot in the list.
527*d5c09012SAndroid Build Coastguard Worker  string next_page_token = 2;
528*d5c09012SAndroid Build Coastguard Worker}
529*d5c09012SAndroid Build Coastguard Worker
530*d5c09012SAndroid Build Coastguard Worker// Request to create notes in batch.
531*d5c09012SAndroid Build Coastguard Workermessage BatchCreateNotesRequest {
532*d5c09012SAndroid Build Coastguard Worker  // The name of the project in the form of `projects/[PROJECT_ID]`, under which
533*d5c09012SAndroid Build Coastguard Worker  // the notes are to be created.
534*d5c09012SAndroid Build Coastguard Worker  string parent = 1 [
535*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
536*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference).type = "grafeas.io/Project"
537*d5c09012SAndroid Build Coastguard Worker  ];
538*d5c09012SAndroid Build Coastguard Worker
539*d5c09012SAndroid Build Coastguard Worker  // The notes to create. Max allowed length is 1000.
540*d5c09012SAndroid Build Coastguard Worker  map<string, Note> notes = 2 [(google.api.field_behavior) = REQUIRED];
541*d5c09012SAndroid Build Coastguard Worker}
542*d5c09012SAndroid Build Coastguard Worker
543*d5c09012SAndroid Build Coastguard Worker// Response for creating notes in batch.
544*d5c09012SAndroid Build Coastguard Workermessage BatchCreateNotesResponse {
545*d5c09012SAndroid Build Coastguard Worker  // The notes that were created.
546*d5c09012SAndroid Build Coastguard Worker  repeated Note notes = 1;
547*d5c09012SAndroid Build Coastguard Worker}
548*d5c09012SAndroid Build Coastguard Worker
549*d5c09012SAndroid Build Coastguard Worker// Request to create occurrences in batch.
550*d5c09012SAndroid Build Coastguard Workermessage BatchCreateOccurrencesRequest {
551*d5c09012SAndroid Build Coastguard Worker  // The name of the project in the form of `projects/[PROJECT_ID]`, under which
552*d5c09012SAndroid Build Coastguard Worker  // the occurrences are to be created.
553*d5c09012SAndroid Build Coastguard Worker  string parent = 1 [
554*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
555*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference).type = "grafeas.io/Project"
556*d5c09012SAndroid Build Coastguard Worker  ];
557*d5c09012SAndroid Build Coastguard Worker
558*d5c09012SAndroid Build Coastguard Worker  // The occurrences to create. Max allowed length is 1000.
559*d5c09012SAndroid Build Coastguard Worker  repeated Occurrence occurrences = 2 [(google.api.field_behavior) = REQUIRED];
560*d5c09012SAndroid Build Coastguard Worker}
561*d5c09012SAndroid Build Coastguard Worker
562*d5c09012SAndroid Build Coastguard Worker// Response for creating occurrences in batch.
563*d5c09012SAndroid Build Coastguard Workermessage BatchCreateOccurrencesResponse {
564*d5c09012SAndroid Build Coastguard Worker  // The occurrences that were created.
565*d5c09012SAndroid Build Coastguard Worker  repeated Occurrence occurrences = 1;
566*d5c09012SAndroid Build Coastguard Worker}
567