Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / google-proto-files / google / genomics / v1 / annotations.proto
1 // Copyright 2016 Google Inc.
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
15 syntax = "proto3";
16
17 package google.genomics.v1;
18
19 import "google/api/annotations.proto";
20 import "google/protobuf/empty.proto";
21 import "google/protobuf/field_mask.proto";
22 import "google/protobuf/struct.proto";
23 import "google/protobuf/wrappers.proto";
24 import "google/rpc/status.proto";
25
26 option cc_enable_arenas = true;
27 option go_package = "google.golang.org/genproto/googleapis/genomics/v1;genomics";
28 option java_multiple_files = true;
29 option java_outer_classname = "AnnotationsProto";
30 option java_package = "com.google.genomics.v1";
31
32 // This service provides storage and positional retrieval of genomic
33 // reference annotations, including variant annotations.
34 service AnnotationServiceV1 {
35   // Creates a new annotation set. Caller must have WRITE permission for the
36   // associated dataset.
37   //
38   // The following fields are required:
39   //
40   //   * [datasetId][google.genomics.v1.AnnotationSet.dataset_id]
41   //   * [referenceSetId][google.genomics.v1.AnnotationSet.reference_set_id]
42   //
43   // All other fields may be optionally specified, unless documented as being
44   // server-generated (for example, the `id` field).
45   rpc CreateAnnotationSet(CreateAnnotationSetRequest) returns (AnnotationSet) {
46     option (google.api.http) = {
47       post: "/v1/annotationsets"
48       body: "annotation_set"
49     };
50   }
51
52   // Gets an annotation set. Caller must have READ permission for
53   // the associated dataset.
54   rpc GetAnnotationSet(GetAnnotationSetRequest) returns (AnnotationSet) {
55     option (google.api.http) = {
56       get: "/v1/annotationsets/{annotation_set_id}"
57     };
58   }
59
60   // Updates an annotation set. The update must respect all mutability
61   // restrictions and other invariants described on the annotation set resource.
62   // Caller must have WRITE permission for the associated dataset.
63   rpc UpdateAnnotationSet(UpdateAnnotationSetRequest) returns (AnnotationSet) {
64     option (google.api.http) = {
65       put: "/v1/annotationsets/{annotation_set_id}"
66       body: "annotation_set"
67     };
68   }
69
70   // Deletes an annotation set. Caller must have WRITE permission
71   // for the associated annotation set.
72   rpc DeleteAnnotationSet(DeleteAnnotationSetRequest)
73       returns (google.protobuf.Empty) {
74     option (google.api.http) = {
75       delete: "/v1/annotationsets/{annotation_set_id}"
76     };
77   }
78
79   // Searches for annotation sets that match the given criteria. Annotation sets
80   // are returned in an unspecified order. This order is consistent, such that
81   // two queries for the same content (regardless of page size) yield annotation
82   // sets in the same order across their respective streams of paginated
83   // responses. Caller must have READ permission for the queried datasets.
84   rpc SearchAnnotationSets(SearchAnnotationSetsRequest)
85       returns (SearchAnnotationSetsResponse) {
86     option (google.api.http) = {
87       post: "/v1/annotationsets/search"
88       body: "*"
89     };
90   }
91
92   // Creates a new annotation. Caller must have WRITE permission
93   // for the associated annotation set.
94   //
95   // The following fields are required:
96   //
97   // * [annotationSetId][google.genomics.v1.Annotation.annotation_set_id]
98   // * [referenceName][google.genomics.v1.Annotation.reference_name] or
99   //   [referenceId][google.genomics.v1.Annotation.reference_id]
100   //
101   // ### Transcripts
102   //
103   // For annotations of type TRANSCRIPT, the following fields of
104   // [transcript][google.genomics.v1.Annotation.transcript] must be provided:
105   //
106   // * [exons.start][google.genomics.v1.Transcript.Exon.start]
107   // * [exons.end][google.genomics.v1.Transcript.Exon.end]
108   //
109   // All other fields may be optionally specified, unless documented as being
110   // server-generated (for example, the `id` field). The annotated
111   // range must be no longer than 100Mbp (mega base pairs). See the
112   // [Annotation resource][google.genomics.v1.Annotation]
113   // for additional restrictions on each field.
114   rpc CreateAnnotation(CreateAnnotationRequest) returns (Annotation) {
115     option (google.api.http) = {
116       post: "/v1/annotations"
117       body: "annotation"
118     };
119   }
120
121   // Creates one or more new annotations atomically. All annotations must
122   // belong to the same annotation set. Caller must have WRITE
123   // permission for this annotation set. For optimal performance, batch
124   // positionally adjacent annotations together.
125   //
126   // If the request has a systemic issue, such as an attempt to write to
127   // an inaccessible annotation set, the entire RPC will fail accordingly. For
128   // lesser data issues, when possible an error will be isolated to the
129   // corresponding batch entry in the response; the remaining well formed
130   // annotations will be created normally.
131   //
132   // For details on the requirements for each individual annotation resource,
133   // see
134   // [CreateAnnotation][google.genomics.v1.AnnotationServiceV1.CreateAnnotation].
135   rpc BatchCreateAnnotations(BatchCreateAnnotationsRequest)
136       returns (BatchCreateAnnotationsResponse) {
137     option (google.api.http) = {
138       post: "/v1/annotations:batchCreate"
139       body: "*"
140     };
141   }
142
143   // Gets an annotation. Caller must have READ permission
144   // for the associated annotation set.
145   rpc GetAnnotation(GetAnnotationRequest) returns (Annotation) {
146     option (google.api.http) = {
147       get: "/v1/annotations/{annotation_id}"
148     };
149   }
150
151   // Updates an annotation. Caller must have
152   // WRITE permission for the associated dataset.
153   rpc UpdateAnnotation(UpdateAnnotationRequest) returns (Annotation) {
154     option (google.api.http) = {
155       put: "/v1/annotations/{annotation_id}"
156       body: "annotation"
157     };
158   }
159
160   // Deletes an annotation. Caller must have WRITE permission for
161   // the associated annotation set.
162   rpc DeleteAnnotation(DeleteAnnotationRequest)
163       returns (google.protobuf.Empty) {
164     option (google.api.http) = {
165       delete: "/v1/annotations/{annotation_id}"
166     };
167   }
168
169   // Searches for annotations that match the given criteria. Results are
170   // ordered by genomic coordinate (by reference sequence, then position).
171   // Annotations with equivalent genomic coordinates are returned in an
172   // unspecified order. This order is consistent, such that two queries for the
173   // same content (regardless of page size) yield annotations in the same order
174   // across their respective streams of paginated responses. Caller must have
175   // READ permission for the queried annotation sets.
176   rpc SearchAnnotations(SearchAnnotationsRequest)
177       returns (SearchAnnotationsResponse) {
178     option (google.api.http) = {
179       post: "/v1/annotations/search"
180       body: "*"
181     };
182   }
183 }
184
185 // An annotation set is a logical grouping of annotations that share consistent
186 // type information and provenance. Examples of annotation sets include 'all
187 // genes from refseq', and 'all variant annotations from ClinVar'.
188 message AnnotationSet {
189   // The server-generated annotation set ID, unique across all annotation sets.
190   string id = 1;
191
192   // The dataset to which this annotation set belongs.
193   string dataset_id = 2;
194
195   // The ID of the reference set that defines the coordinate space for this
196   // set's annotations.
197   string reference_set_id = 3;
198
199   // The display name for this annotation set.
200   string name = 4;
201
202   // The source URI describing the file from which this annotation set was
203   // generated, if any.
204   string source_uri = 5;
205
206   // The type of annotations contained within this set.
207   AnnotationType type = 6;
208
209   // A map of additional read alignment information. This must be of the form
210   // map<string, string[]> (string key mapping to a list of string values).
211   map<string, google.protobuf.ListValue> info = 17;
212 }
213
214 // An annotation describes a region of reference genome. The value of an
215 // annotation may be one of several canonical types, supplemented by arbitrary
216 // info tags. An annotation is not inherently associated with a specific
217 // sample or individual (though a client could choose to use annotations in
218 // this way). Example canonical annotation types are `GENE` and
219 // `VARIANT`.
220 message Annotation {
221   // The server-generated annotation ID, unique across all annotations.
222   string id = 1;
223
224   // The annotation set to which this annotation belongs.
225   string annotation_set_id = 2;
226
227   // The display name of this annotation.
228   string name = 3;
229
230   // The ID of the Google Genomics reference associated with this range.
231   string reference_id = 4;
232
233   // The display name corresponding to the reference specified by
234   // `referenceId`, for example `chr1`, `1`, or `chrX`.
235   string reference_name = 5;
236
237   // The start position of the range on the reference, 0-based inclusive.
238   int64 start = 6;
239
240   // The end position of the range on the reference, 0-based exclusive.
241   int64 end = 7;
242
243   // Whether this range refers to the reverse strand, as opposed to the forward
244   // strand. Note that regardless of this field, the start/end position of the
245   // range always refer to the forward strand.
246   bool reverse_strand = 8;
247
248   // The data type for this annotation. Must match the containing annotation
249   // set's type.
250   AnnotationType type = 9;
251
252   oneof value {
253     // A variant annotation, which describes the effect of a variant on the
254     // genome, the coding sequence, and/or higher level consequences at the
255     // organism level e.g. pathogenicity. This field is only set for annotations
256     // of type `VARIANT`.
257     VariantAnnotation variant = 10;
258
259     // A transcript value represents the assertion that a particular region of
260     // the reference genome may be transcribed as RNA. An alternative splicing
261     // pattern would be represented as a separate transcript object. This field
262     // is only set for annotations of type `TRANSCRIPT`.
263     Transcript transcript = 11;
264   }
265
266   // A map of additional read alignment information. This must be of the form
267   // map<string, string[]> (string key mapping to a list of string values).
268   map<string, google.protobuf.ListValue> info = 12;
269 }
270
271 message VariantAnnotation {
272   message ClinicalCondition {
273     // A set of names for the condition.
274     repeated string names = 1;
275
276     // The set of external IDs for this condition.
277     repeated ExternalId external_ids = 2;
278
279     // The MedGen concept id associated with this gene.
280     // Search for these IDs at http://www.ncbi.nlm.nih.gov/medgen/
281     string concept_id = 3;
282
283     // The OMIM id for this condition.
284     // Search for these IDs at http://omim.org/
285     string omim_id = 4;
286   }
287
288   enum Type {
289     TYPE_UNSPECIFIED = 0;
290
291     // `TYPE_OTHER` should be used when no other Type will suffice.
292     // Further explanation of the variant type may be included in the
293     // [info][google.genomics.v1.Annotation.info] field.
294     TYPE_OTHER = 1;
295
296     // `INSERTION` indicates an insertion.
297     INSERTION = 2;
298
299     // `DELETION` indicates a deletion.
300     DELETION = 3;
301
302     // `SUBSTITUTION` indicates a block substitution of
303     // two or more nucleotides.
304     SUBSTITUTION = 4;
305
306     // `SNP` indicates a single nucleotide polymorphism.
307     SNP = 5;
308
309     // `STRUCTURAL` indicates a large structural variant,
310     // including chromosomal fusions, inversions, etc.
311     STRUCTURAL = 6;
312
313     // `CNV` indicates a variation in copy number.
314     CNV = 7;
315   }
316
317   enum Effect {
318     EFFECT_UNSPECIFIED = 0;
319
320     // `EFFECT_OTHER` should be used when no other Effect
321     // will suffice.
322     EFFECT_OTHER = 1;
323
324     // `FRAMESHIFT` indicates a mutation in which the insertion or
325     // deletion of nucleotides resulted in a frameshift change.
326     FRAMESHIFT = 2;
327
328     // `FRAME_PRESERVING_INDEL` indicates a mutation in which a
329     // multiple of three nucleotides has been inserted or deleted, resulting
330     // in no change to the reading frame of the coding sequence.
331     FRAME_PRESERVING_INDEL = 3;
332
333     // `SYNONYMOUS_SNP` indicates a single nucleotide polymorphism
334     // mutation that results in no amino acid change.
335     SYNONYMOUS_SNP = 4;
336
337     // `NONSYNONYMOUS_SNP` indicates a single nucleotide
338     // polymorphism mutation that results in an amino acid change.
339     NONSYNONYMOUS_SNP = 5;
340
341     // `STOP_GAIN` indicates a mutation that leads to the creation
342     // of a stop codon at the variant site. Frameshift mutations creating
343     // downstream stop codons do not count as `STOP_GAIN`.
344     STOP_GAIN = 6;
345
346     // `STOP_LOSS` indicates a mutation that eliminates a
347     // stop codon at the variant site.
348     STOP_LOSS = 7;
349
350     // `SPLICE_SITE_DISRUPTION` indicates that this variant is
351     // found in a splice site for the associated transcript, and alters the
352     // normal splicing pattern.
353     SPLICE_SITE_DISRUPTION = 8;
354   }
355
356   enum ClinicalSignificance {
357     CLINICAL_SIGNIFICANCE_UNSPECIFIED = 0;
358
359     // `OTHER` should be used when no other clinical significance
360     // value will suffice.
361     CLINICAL_SIGNIFICANCE_OTHER = 1;
362
363     UNCERTAIN = 2;
364
365     BENIGN = 3;
366
367     LIKELY_BENIGN = 4;
368
369     LIKELY_PATHOGENIC = 5;
370
371     PATHOGENIC = 6;
372
373     DRUG_RESPONSE = 7;
374
375     HISTOCOMPATIBILITY = 8;
376
377     CONFERS_SENSITIVITY = 9;
378
379     RISK_FACTOR = 10;
380
381     ASSOCIATION = 11;
382
383     PROTECTIVE = 12;
384
385     // `MULTIPLE_REPORTED` should be used when multiple clinical
386     // signficances are reported for a variant. The original clinical
387     // significance values may be provided in the `info` field.
388     MULTIPLE_REPORTED = 13;
389   }
390
391   // Type has been adapted from ClinVar's list of variant types.
392   Type type = 1;
393
394   // Effect of the variant on the coding sequence.
395   Effect effect = 2;
396
397   // The alternate allele for this variant. If multiple alternate alleles
398   // exist at this location, create a separate variant for each one, as they
399   // may represent distinct conditions.
400   string alternate_bases = 3;
401
402   // Google annotation ID of the gene affected by this variant. This should
403   // be provided when the variant is created.
404   string gene_id = 4;
405
406   // Google annotation IDs of the transcripts affected by this variant. These
407   // should be provided when the variant is created.
408   repeated string transcript_ids = 5;
409
410   // The set of conditions associated with this variant.
411   // A condition describes the way a variant influences human health.
412   repeated ClinicalCondition conditions = 6;
413
414   // Describes the clinical significance of a variant.
415   // It is adapted from the ClinVar controlled vocabulary for clinical
416   // significance described at:
417   // http://www.ncbi.nlm.nih.gov/clinvar/docs/clinsig/
418   ClinicalSignificance clinical_significance = 7;
419 }
420
421 // A transcript represents the assertion that a particular region of the
422 // reference genome may be transcribed as RNA.
423 message Transcript {
424   message Exon {
425     // The start position of the exon on this annotation's reference sequence,
426     // 0-based inclusive. Note that this is relative to the reference start, and
427     // **not** the containing annotation start.
428     int64 start = 1;
429
430     // The end position of the exon on this annotation's reference sequence,
431     // 0-based exclusive. Note that this is relative to the reference start, and
432     // *not* the containing annotation start.
433     int64 end = 2;
434
435     // The frame of this exon. Contains a value of 0, 1, or 2, which indicates
436     // the offset of the first coding base of the exon within the reading frame
437     // of the coding DNA sequence, if any. This field is dependent on the
438     // strandedness of this annotation (see
439     // [Annotation.reverse_strand][google.genomics.v1.Annotation.reverse_strand]).
440     // For forward stranded annotations, this offset is relative to the
441     // [exon.start][google.genomics.v1.Transcript.Exon.start]. For reverse
442     // strand annotations, this offset is relative to the
443     // [exon.end][google.genomics.v1.Transcript.Exon.end] `- 1`.
444     //
445     // Unset if this exon does not intersect the coding sequence. Upon creation
446     // of a transcript, the frame must be populated for all or none of the
447     // coding exons.
448     google.protobuf.Int32Value frame = 3;
449   }
450
451   message CodingSequence {
452     // The start of the coding sequence on this annotation's reference sequence,
453     // 0-based inclusive. Note that this position is relative to the reference
454     // start, and *not* the containing annotation start.
455     int64 start = 1;
456
457     // The end of the coding sequence on this annotation's reference sequence,
458     // 0-based exclusive. Note that this position is relative to the reference
459     // start, and *not* the containing annotation start.
460     int64 end = 2;
461   }
462
463   // The annotation ID of the gene from which this transcript is transcribed.
464   string gene_id = 1;
465
466   // The <a href="http://en.wikipedia.org/wiki/Exon">exons</a> that compose
467   // this transcript. This field should be unset for genomes where transcript
468   // splicing does not occur, for example prokaryotes.
469   //
470   // Introns are regions of the transcript that are not included in the
471   // spliced RNA product. Though not explicitly modeled here, intron ranges can
472   // be deduced; all regions of this transcript that are not exons are introns.
473   //
474   // Exonic sequences do not necessarily code for a translational product
475   // (amino acids). Only the regions of exons bounded by the
476   // [codingSequence][google.genomics.v1.Transcript.coding_sequence] correspond
477   // to coding DNA sequence.
478   //
479   // Exons are ordered by start position and may not overlap.
480   repeated Exon exons = 2;
481
482   // The range of the coding sequence for this transcript, if any. To determine
483   // the exact ranges of coding sequence, intersect this range with those of the
484   // [exons][google.genomics.v1.Transcript.exons], if any. If there are any
485   // [exons][google.genomics.v1.Transcript.exons], the
486   // [codingSequence][google.genomics.v1.Transcript.coding_sequence] must start
487   // and end within them.
488   //
489   // Note that in some cases, the reference genome will not exactly match the
490   // observed mRNA transcript e.g. due to variance in the source genome from
491   // reference. In these cases,
492   // [exon.frame][google.genomics.v1.Transcript.Exon.frame] will not necessarily
493   // match the expected reference reading frame and coding exon reference bases
494   // cannot necessarily be concatenated to produce the original transcript mRNA.
495   CodingSequence coding_sequence = 3;
496 }
497
498 message ExternalId {
499   // The name of the source of this data.
500   string source_name = 1;
501
502   // The id used by the source of this data.
503   string id = 2;
504 }
505
506 message CreateAnnotationSetRequest {
507   // The annotation set to create.
508   AnnotationSet annotation_set = 1;
509 }
510
511 message GetAnnotationSetRequest {
512   // The ID of the annotation set to be retrieved.
513   string annotation_set_id = 1;
514 }
515
516 message UpdateAnnotationSetRequest {
517   // The ID of the annotation set to be updated.
518   string annotation_set_id = 1;
519
520   // The new annotation set.
521   AnnotationSet annotation_set = 2;
522
523   // An optional mask specifying which fields to update. Mutable fields are
524   // [name][google.genomics.v1.AnnotationSet.name],
525   // [source_uri][google.genomics.v1.AnnotationSet.source_uri], and
526   // [info][google.genomics.v1.AnnotationSet.info]. If unspecified, all
527   // mutable fields will be updated.
528   google.protobuf.FieldMask update_mask = 3;
529 }
530
531 message DeleteAnnotationSetRequest {
532   // The ID of the annotation set to be deleted.
533   string annotation_set_id = 1;
534 }
535
536 message SearchAnnotationSetsRequest {
537   // Required. The dataset IDs to search within. Caller must have `READ` access
538   // to these datasets.
539   repeated string dataset_ids = 1;
540
541   // If specified, only annotation sets associated with the given reference set
542   // are returned.
543   string reference_set_id = 2;
544
545   // Only return annotations sets for which a substring of the name matches this
546   // string (case insensitive).
547   string name = 3;
548
549   // If specified, only annotation sets that have any of these types are
550   // returned.
551   repeated AnnotationType types = 4;
552
553   // The continuation token, which is used to page through large result sets.
554   // To get the next page of results, set this parameter to the value of
555   // `nextPageToken` from the previous response.
556   string page_token = 5;
557
558   // The maximum number of results to return in a single page. If unspecified,
559   // defaults to 128. The maximum value is 1024.
560   int32 page_size = 6;
561 }
562
563 message SearchAnnotationSetsResponse {
564   // The matching annotation sets.
565   repeated AnnotationSet annotation_sets = 1;
566
567   // The continuation token, which is used to page through large result sets.
568   // Provide this value in a subsequent request to return the next page of
569   // results. This field will be empty if there aren't any additional results.
570   string next_page_token = 2;
571 }
572
573 message CreateAnnotationRequest {
574   // The annotation to be created.
575   Annotation annotation = 1;
576 }
577
578 message BatchCreateAnnotationsRequest {
579   // The annotations to be created. At most 4096 can be specified in a single
580   // request.
581   repeated Annotation annotations = 1;
582
583   // A unique request ID which enables the server to detect duplicated requests.
584   // If provided, duplicated requests will result in the same response; if not
585   // provided, duplicated requests may result in duplicated data. For a given
586   // annotation set, callers should not reuse `request_id`s when writing
587   // different batches of annotations - behavior in this case is undefined.
588   // A common approach is to use a UUID. For batch jobs where worker crashes are
589   // a possibility, consider using some unique variant of a worker or run ID.
590   string request_id = 2;
591 }
592
593 message BatchCreateAnnotationsResponse {
594   message Entry {
595     // The creation status.
596     google.rpc.Status status = 1;
597
598     // The created annotation, if creation was successful.
599     Annotation annotation = 2;
600   }
601
602   // The resulting per-annotation entries, ordered consistently with the
603   // original request.
604   repeated Entry entries = 1;
605 }
606
607 message GetAnnotationRequest {
608   // The ID of the annotation to be retrieved.
609   string annotation_id = 1;
610 }
611
612 message UpdateAnnotationRequest {
613   // The ID of the annotation to be updated.
614   string annotation_id = 1;
615
616   // The new annotation.
617   Annotation annotation = 2;
618
619   // An optional mask specifying which fields to update. Mutable fields are
620   // [name][google.genomics.v1.Annotation.name],
621   // [variant][google.genomics.v1.Annotation.variant],
622   // [transcript][google.genomics.v1.Annotation.transcript], and
623   // [info][google.genomics.v1.Annotation.info]. If unspecified, all mutable
624   // fields will be updated.
625   google.protobuf.FieldMask update_mask = 3;
626 }
627
628 message DeleteAnnotationRequest {
629   // The ID of the annotation to be deleted.
630   string annotation_id = 1;
631 }
632
633 message SearchAnnotationsRequest {
634   // Required. The annotation sets to search within. The caller must have
635   // `READ` access to these annotation sets.
636   // All queried annotation sets must have the same type.
637   repeated string annotation_set_ids = 1;
638
639   // Required. `reference_id` or `reference_name` must be set.
640   oneof reference {
641     // The ID of the reference to query.
642     string reference_id = 2;
643
644     // The name of the reference to query, within the reference set associated
645     // with this query.
646     string reference_name = 3;
647   }
648
649   // The start position of the range on the reference, 0-based inclusive. If
650   // specified,
651   // [referenceId][google.genomics.v1.SearchAnnotationsRequest.reference_id] or
652   // [referenceName][google.genomics.v1.SearchAnnotationsRequest.reference_name]
653   // must be specified. Defaults to 0.
654   int64 start = 4;
655
656   // The end position of the range on the reference, 0-based exclusive. If
657   // [referenceId][google.genomics.v1.SearchAnnotationsRequest.reference_id] or
658   // [referenceName][google.genomics.v1.SearchAnnotationsRequest.reference_name]
659   // must be specified, Defaults to the length of the reference.
660   int64 end = 5;
661
662   // The continuation token, which is used to page through large result sets.
663   // To get the next page of results, set this parameter to the value of
664   // `nextPageToken` from the previous response.
665   string page_token = 6;
666
667   // The maximum number of results to return in a single page. If unspecified,
668   // defaults to 256. The maximum value is 2048.
669   int32 page_size = 7;
670 }
671
672 message SearchAnnotationsResponse {
673   // The matching annotations.
674   repeated Annotation annotations = 1;
675
676   // The continuation token, which is used to page through large result sets.
677   // Provide this value in a subsequent request to return the next page of
678   // results. This field will be empty if there aren't any additional results.
679   string next_page_token = 2;
680 }
681
682 // When an [Annotation][google.genomics.v1.Annotation] or
683 // [AnnotationSet][google.genomics.v1.AnnotationSet] is created, if `type` is
684 // not specified it will be set to `GENERIC`.
685 enum AnnotationType {
686   ANNOTATION_TYPE_UNSPECIFIED = 0;
687
688   // A `GENERIC` annotation type should be used when no other annotation
689   // type will suffice. This represents an untyped annotation of the reference
690   // genome.
691   GENERIC = 1;
692
693   // A `VARIANT` annotation type.
694   VARIANT = 2;
695
696   // A `GENE` annotation type represents the existence of a gene at the
697   // associated reference coordinates. The start coordinate is typically the
698   // gene's transcription start site and the end is typically the end of the
699   // gene's last exon.
700   GENE = 3;
701
702   // A `TRANSCRIPT` annotation type represents the assertion that a
703   // particular region of the reference genome may be transcribed as RNA.
704   TRANSCRIPT = 4;
705 }