| // Copyright 2016 Google Inc. | 
 | // | 
 | // 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.genomics.v1; | 
 |  | 
 | import "google/api/annotations.proto"; | 
 | import "google/protobuf/empty.proto"; | 
 | import "google/protobuf/field_mask.proto"; | 
 | import "google/protobuf/struct.proto"; | 
 | import "google/protobuf/wrappers.proto"; | 
 | import "google/rpc/status.proto"; | 
 |  | 
 | option cc_enable_arenas = true; | 
 | option go_package = "google.golang.org/genproto/googleapis/genomics/v1;genomics"; | 
 | option java_multiple_files = true; | 
 | option java_outer_classname = "AnnotationsProto"; | 
 | option java_package = "com.google.genomics.v1"; | 
 |  | 
 |  | 
 | // This service provides storage and positional retrieval of genomic | 
 | // reference annotations, including variant annotations. | 
 | service AnnotationServiceV1 { | 
 |   // Creates a new annotation set. Caller must have WRITE permission for the | 
 |   // associated dataset. | 
 |   // | 
 |   // The following fields are required: | 
 |   // | 
 |   //   * [datasetId][google.genomics.v1.AnnotationSet.dataset_id] | 
 |   //   * [referenceSetId][google.genomics.v1.AnnotationSet.reference_set_id] | 
 |   // | 
 |   // All other fields may be optionally specified, unless documented as being | 
 |   // server-generated (for example, the `id` field). | 
 |   rpc CreateAnnotationSet(CreateAnnotationSetRequest) returns (AnnotationSet) { | 
 |     option (google.api.http) = { post: "/v1/annotationsets" body: "annotation_set" }; | 
 |   } | 
 |  | 
 |   // Gets an annotation set. Caller must have READ permission for | 
 |   // the associated dataset. | 
 |   rpc GetAnnotationSet(GetAnnotationSetRequest) returns (AnnotationSet) { | 
 |     option (google.api.http) = { get: "/v1/annotationsets/{annotation_set_id}" }; | 
 |   } | 
 |  | 
 |   // Updates an annotation set. The update must respect all mutability | 
 |   // restrictions and other invariants described on the annotation set resource. | 
 |   // Caller must have WRITE permission for the associated dataset. | 
 |   rpc UpdateAnnotationSet(UpdateAnnotationSetRequest) returns (AnnotationSet) { | 
 |     option (google.api.http) = { put: "/v1/annotationsets/{annotation_set_id}" body: "annotation_set" }; | 
 |   } | 
 |  | 
 |   // Deletes an annotation set. Caller must have WRITE permission | 
 |   // for the associated annotation set. | 
 |   rpc DeleteAnnotationSet(DeleteAnnotationSetRequest) returns (google.protobuf.Empty) { | 
 |     option (google.api.http) = { delete: "/v1/annotationsets/{annotation_set_id}" }; | 
 |   } | 
 |  | 
 |   // Searches for annotation sets that match the given criteria. Annotation sets | 
 |   // are returned in an unspecified order. This order is consistent, such that | 
 |   // two queries for the same content (regardless of page size) yield annotation | 
 |   // sets in the same order across their respective streams of paginated | 
 |   // responses. Caller must have READ permission for the queried datasets. | 
 |   rpc SearchAnnotationSets(SearchAnnotationSetsRequest) returns (SearchAnnotationSetsResponse) { | 
 |     option (google.api.http) = { post: "/v1/annotationsets/search" body: "*" }; | 
 |   } | 
 |  | 
 |   // Creates a new annotation. Caller must have WRITE permission | 
 |   // for the associated annotation set. | 
 |   // | 
 |   // The following fields are required: | 
 |   // | 
 |   // * [annotationSetId][google.genomics.v1.Annotation.annotation_set_id] | 
 |   // * [referenceName][google.genomics.v1.Annotation.reference_name] or | 
 |   //   [referenceId][google.genomics.v1.Annotation.reference_id] | 
 |   // | 
 |   // ### Transcripts | 
 |   // | 
 |   // For annotations of type TRANSCRIPT, the following fields of | 
 |   // [transcript][google.genomics.v1.Annotation.transcript] must be provided: | 
 |   // | 
 |   // * [exons.start][google.genomics.v1.Transcript.Exon.start] | 
 |   // * [exons.end][google.genomics.v1.Transcript.Exon.end] | 
 |   // | 
 |   // All other fields may be optionally specified, unless documented as being | 
 |   // server-generated (for example, the `id` field). The annotated | 
 |   // range must be no longer than 100Mbp (mega base pairs). See the | 
 |   // [Annotation resource][google.genomics.v1.Annotation] | 
 |   // for additional restrictions on each field. | 
 |   rpc CreateAnnotation(CreateAnnotationRequest) returns (Annotation) { | 
 |     option (google.api.http) = { post: "/v1/annotations" body: "annotation" }; | 
 |   } | 
 |  | 
 |   // Creates one or more new annotations atomically. All annotations must | 
 |   // belong to the same annotation set. Caller must have WRITE | 
 |   // permission for this annotation set. For optimal performance, batch | 
 |   // positionally adjacent annotations together. | 
 |   // | 
 |   // If the request has a systemic issue, such as an attempt to write to | 
 |   // an inaccessible annotation set, the entire RPC will fail accordingly. For | 
 |   // lesser data issues, when possible an error will be isolated to the | 
 |   // corresponding batch entry in the response; the remaining well formed | 
 |   // annotations will be created normally. | 
 |   // | 
 |   // For details on the requirements for each individual annotation resource, | 
 |   // see | 
 |   // [CreateAnnotation][google.genomics.v1.AnnotationServiceV1.CreateAnnotation]. | 
 |   rpc BatchCreateAnnotations(BatchCreateAnnotationsRequest) returns (BatchCreateAnnotationsResponse) { | 
 |     option (google.api.http) = { post: "/v1/annotations:batchCreate" body: "*" }; | 
 |   } | 
 |  | 
 |   // Gets an annotation. Caller must have READ permission | 
 |   // for the associated annotation set. | 
 |   rpc GetAnnotation(GetAnnotationRequest) returns (Annotation) { | 
 |     option (google.api.http) = { get: "/v1/annotations/{annotation_id}" }; | 
 |   } | 
 |  | 
 |   // Updates an annotation. Caller must have | 
 |   // WRITE permission for the associated dataset. | 
 |   rpc UpdateAnnotation(UpdateAnnotationRequest) returns (Annotation) { | 
 |     option (google.api.http) = { put: "/v1/annotations/{annotation_id}" body: "annotation" }; | 
 |   } | 
 |  | 
 |   // Deletes an annotation. Caller must have WRITE permission for | 
 |   // the associated annotation set. | 
 |   rpc DeleteAnnotation(DeleteAnnotationRequest) returns (google.protobuf.Empty) { | 
 |     option (google.api.http) = { delete: "/v1/annotations/{annotation_id}" }; | 
 |   } | 
 |  | 
 |   // Searches for annotations that match the given criteria. Results are | 
 |   // ordered by genomic coordinate (by reference sequence, then position). | 
 |   // Annotations with equivalent genomic coordinates are returned in an | 
 |   // unspecified order. This order is consistent, such that two queries for the | 
 |   // same content (regardless of page size) yield annotations in the same order | 
 |   // across their respective streams of paginated responses. Caller must have | 
 |   // READ permission for the queried annotation sets. | 
 |   rpc SearchAnnotations(SearchAnnotationsRequest) returns (SearchAnnotationsResponse) { | 
 |     option (google.api.http) = { post: "/v1/annotations/search" body: "*" }; | 
 |   } | 
 | } | 
 |  | 
 | // An annotation set is a logical grouping of annotations that share consistent | 
 | // type information and provenance. Examples of annotation sets include 'all | 
 | // genes from refseq', and 'all variant annotations from ClinVar'. | 
 | message AnnotationSet { | 
 |   // The server-generated annotation set ID, unique across all annotation sets. | 
 |   string id = 1; | 
 |  | 
 |   // The dataset to which this annotation set belongs. | 
 |   string dataset_id = 2; | 
 |  | 
 |   // The ID of the reference set that defines the coordinate space for this | 
 |   // set's annotations. | 
 |   string reference_set_id = 3; | 
 |  | 
 |   // The display name for this annotation set. | 
 |   string name = 4; | 
 |  | 
 |   // The source URI describing the file from which this annotation set was | 
 |   // generated, if any. | 
 |   string source_uri = 5; | 
 |  | 
 |   // The type of annotations contained within this set. | 
 |   AnnotationType type = 6; | 
 |  | 
 |   // A map of additional read alignment information. This must be of the form | 
 |   // map<string, string[]> (string key mapping to a list of string values). | 
 |   map<string, google.protobuf.ListValue> info = 17; | 
 | } | 
 |  | 
 | // An annotation describes a region of reference genome. The value of an | 
 | // annotation may be one of several canonical types, supplemented by arbitrary | 
 | // info tags. An annotation is not inherently associated with a specific | 
 | // sample or individual (though a client could choose to use annotations in | 
 | // this way). Example canonical annotation types are `GENE` and | 
 | // `VARIANT`. | 
 | message Annotation { | 
 |   // The server-generated annotation ID, unique across all annotations. | 
 |   string id = 1; | 
 |  | 
 |   // The annotation set to which this annotation belongs. | 
 |   string annotation_set_id = 2; | 
 |  | 
 |   // The display name of this annotation. | 
 |   string name = 3; | 
 |  | 
 |   // The ID of the Google Genomics reference associated with this range. | 
 |   string reference_id = 4; | 
 |  | 
 |   // The display name corresponding to the reference specified by | 
 |   // `referenceId`, for example `chr1`, `1`, or `chrX`. | 
 |   string reference_name = 5; | 
 |  | 
 |   // The start position of the range on the reference, 0-based inclusive. | 
 |   int64 start = 6; | 
 |  | 
 |   // The end position of the range on the reference, 0-based exclusive. | 
 |   int64 end = 7; | 
 |  | 
 |   // Whether this range refers to the reverse strand, as opposed to the forward | 
 |   // strand. Note that regardless of this field, the start/end position of the | 
 |   // range always refer to the forward strand. | 
 |   bool reverse_strand = 8; | 
 |  | 
 |   // The data type for this annotation. Must match the containing annotation | 
 |   // set's type. | 
 |   AnnotationType type = 9; | 
 |  | 
 |   oneof value { | 
 |     // A variant annotation, which describes the effect of a variant on the | 
 |     // genome, the coding sequence, and/or higher level consequences at the | 
 |     // organism level e.g. pathogenicity. This field is only set for annotations | 
 |     // of type `VARIANT`. | 
 |     VariantAnnotation variant = 10; | 
 |  | 
 |     // A transcript value represents the assertion that a particular region of | 
 |     // the reference genome may be transcribed as RNA. An alternative splicing | 
 |     // pattern would be represented as a separate transcript object. This field | 
 |     // is only set for annotations of type `TRANSCRIPT`. | 
 |     Transcript transcript = 11; | 
 |   } | 
 |  | 
 |   // A map of additional read alignment information. This must be of the form | 
 |   // map<string, string[]> (string key mapping to a list of string values). | 
 |   map<string, google.protobuf.ListValue> info = 12; | 
 | } | 
 |  | 
 | message VariantAnnotation { | 
 |   message ClinicalCondition { | 
 |     // A set of names for the condition. | 
 |     repeated string names = 1; | 
 |  | 
 |     // The set of external IDs for this condition. | 
 |     repeated ExternalId external_ids = 2; | 
 |  | 
 |     // The MedGen concept id associated with this gene. | 
 |     // Search for these IDs at http://www.ncbi.nlm.nih.gov/medgen/ | 
 |     string concept_id = 3; | 
 |  | 
 |     // The OMIM id for this condition. | 
 |     // Search for these IDs at http://omim.org/ | 
 |     string omim_id = 4; | 
 |   } | 
 |  | 
 |   enum Type { | 
 |     TYPE_UNSPECIFIED = 0; | 
 |  | 
 |     // `TYPE_OTHER` should be used when no other Type will suffice. | 
 |     // Further explanation of the variant type may be included in the | 
 |     // [info][google.genomics.v1.Annotation.info] field. | 
 |     TYPE_OTHER = 1; | 
 |  | 
 |     // `INSERTION` indicates an insertion. | 
 |     INSERTION = 2; | 
 |  | 
 |     // `DELETION` indicates a deletion. | 
 |     DELETION = 3; | 
 |  | 
 |     // `SUBSTITUTION` indicates a block substitution of | 
 |     // two or more nucleotides. | 
 |     SUBSTITUTION = 4; | 
 |  | 
 |     // `SNP` indicates a single nucleotide polymorphism. | 
 |     SNP = 5; | 
 |  | 
 |     // `STRUCTURAL` indicates a large structural variant, | 
 |     // including chromosomal fusions, inversions, etc. | 
 |     STRUCTURAL = 6; | 
 |  | 
 |     // `CNV` indicates a variation in copy number. | 
 |     CNV = 7; | 
 |   } | 
 |  | 
 |   enum Effect { | 
 |     EFFECT_UNSPECIFIED = 0; | 
 |  | 
 |     // `EFFECT_OTHER` should be used when no other Effect | 
 |     // will suffice. | 
 |     EFFECT_OTHER = 1; | 
 |  | 
 |     // `FRAMESHIFT` indicates a mutation in which the insertion or | 
 |     // deletion of nucleotides resulted in a frameshift change. | 
 |     FRAMESHIFT = 2; | 
 |  | 
 |     // `FRAME_PRESERVING_INDEL` indicates a mutation in which a | 
 |     // multiple of three nucleotides has been inserted or deleted, resulting | 
 |     // in no change to the reading frame of the coding sequence. | 
 |     FRAME_PRESERVING_INDEL = 3; | 
 |  | 
 |     // `SYNONYMOUS_SNP` indicates a single nucleotide polymorphism | 
 |     // mutation that results in no amino acid change. | 
 |     SYNONYMOUS_SNP = 4; | 
 |  | 
 |     // `NONSYNONYMOUS_SNP` indicates a single nucleotide | 
 |     // polymorphism mutation that results in an amino acid change. | 
 |     NONSYNONYMOUS_SNP = 5; | 
 |  | 
 |     // `STOP_GAIN` indicates a mutation that leads to the creation | 
 |     // of a stop codon at the variant site. Frameshift mutations creating | 
 |     // downstream stop codons do not count as `STOP_GAIN`. | 
 |     STOP_GAIN = 6; | 
 |  | 
 |     // `STOP_LOSS` indicates a mutation that eliminates a | 
 |     // stop codon at the variant site. | 
 |     STOP_LOSS = 7; | 
 |  | 
 |     // `SPLICE_SITE_DISRUPTION` indicates that this variant is | 
 |     // found in a splice site for the associated transcript, and alters the | 
 |     // normal splicing pattern. | 
 |     SPLICE_SITE_DISRUPTION = 8; | 
 |   } | 
 |  | 
 |   enum ClinicalSignificance { | 
 |     CLINICAL_SIGNIFICANCE_UNSPECIFIED = 0; | 
 |  | 
 |     // `OTHER` should be used when no other clinical significance | 
 |     // value will suffice. | 
 |     CLINICAL_SIGNIFICANCE_OTHER = 1; | 
 |  | 
 |     UNCERTAIN = 2; | 
 |  | 
 |     BENIGN = 3; | 
 |  | 
 |     LIKELY_BENIGN = 4; | 
 |  | 
 |     LIKELY_PATHOGENIC = 5; | 
 |  | 
 |     PATHOGENIC = 6; | 
 |  | 
 |     DRUG_RESPONSE = 7; | 
 |  | 
 |     HISTOCOMPATIBILITY = 8; | 
 |  | 
 |     CONFERS_SENSITIVITY = 9; | 
 |  | 
 |     RISK_FACTOR = 10; | 
 |  | 
 |     ASSOCIATION = 11; | 
 |  | 
 |     PROTECTIVE = 12; | 
 |  | 
 |     // `MULTIPLE_REPORTED` should be used when multiple clinical | 
 |     // signficances are reported for a variant. The original clinical | 
 |     // significance values may be provided in the `info` field. | 
 |     MULTIPLE_REPORTED = 13; | 
 |   } | 
 |  | 
 |   // Type has been adapted from ClinVar's list of variant types. | 
 |   Type type = 1; | 
 |  | 
 |   // Effect of the variant on the coding sequence. | 
 |   Effect effect = 2; | 
 |  | 
 |   // The alternate allele for this variant. If multiple alternate alleles | 
 |   // exist at this location, create a separate variant for each one, as they | 
 |   // may represent distinct conditions. | 
 |   string alternate_bases = 3; | 
 |  | 
 |   // Google annotation ID of the gene affected by this variant. This should | 
 |   // be provided when the variant is created. | 
 |   string gene_id = 4; | 
 |  | 
 |   // Google annotation IDs of the transcripts affected by this variant. These | 
 |   // should be provided when the variant is created. | 
 |   repeated string transcript_ids = 5; | 
 |  | 
 |   // The set of conditions associated with this variant. | 
 |   // A condition describes the way a variant influences human health. | 
 |   repeated ClinicalCondition conditions = 6; | 
 |  | 
 |   // Describes the clinical significance of a variant. | 
 |   // It is adapted from the ClinVar controlled vocabulary for clinical | 
 |   // significance described at: | 
 |   // http://www.ncbi.nlm.nih.gov/clinvar/docs/clinsig/ | 
 |   ClinicalSignificance clinical_significance = 7; | 
 | } | 
 |  | 
 | // A transcript represents the assertion that a particular region of the | 
 | // reference genome may be transcribed as RNA. | 
 | message Transcript { | 
 |   message Exon { | 
 |     // The start position of the exon on this annotation's reference sequence, | 
 |     // 0-based inclusive. Note that this is relative to the reference start, and | 
 |     // **not** the containing annotation start. | 
 |     int64 start = 1; | 
 |  | 
 |     // The end position of the exon on this annotation's reference sequence, | 
 |     // 0-based exclusive. Note that this is relative to the reference start, and | 
 |     // *not* the containing annotation start. | 
 |     int64 end = 2; | 
 |  | 
 |     // The frame of this exon. Contains a value of 0, 1, or 2, which indicates | 
 |     // the offset of the first coding base of the exon within the reading frame | 
 |     // of the coding DNA sequence, if any. This field is dependent on the | 
 |     // strandedness of this annotation (see | 
 |     // [Annotation.reverse_strand][google.genomics.v1.Annotation.reverse_strand]). | 
 |     // For forward stranded annotations, this offset is relative to the | 
 |     // [exon.start][google.genomics.v1.Transcript.Exon.start]. For reverse | 
 |     // strand annotations, this offset is relative to the | 
 |     // [exon.end][google.genomics.v1.Transcript.Exon.end] `- 1`. | 
 |     // | 
 |     // Unset if this exon does not intersect the coding sequence. Upon creation | 
 |     // of a transcript, the frame must be populated for all or none of the | 
 |     // coding exons. | 
 |     google.protobuf.Int32Value frame = 3; | 
 |   } | 
 |  | 
 |   message CodingSequence { | 
 |     // The start of the coding sequence on this annotation's reference sequence, | 
 |     // 0-based inclusive. Note that this position is relative to the reference | 
 |     // start, and *not* the containing annotation start. | 
 |     int64 start = 1; | 
 |  | 
 |     // The end of the coding sequence on this annotation's reference sequence, | 
 |     // 0-based exclusive. Note that this position is relative to the reference | 
 |     // start, and *not* the containing annotation start. | 
 |     int64 end = 2; | 
 |   } | 
 |  | 
 |   // The annotation ID of the gene from which this transcript is transcribed. | 
 |   string gene_id = 1; | 
 |  | 
 |   // The <a href="http://en.wikipedia.org/wiki/Exon">exons</a> that compose | 
 |   // this transcript. This field should be unset for genomes where transcript | 
 |   // splicing does not occur, for example prokaryotes. | 
 |   // | 
 |   // Introns are regions of the transcript that are not included in the | 
 |   // spliced RNA product. Though not explicitly modeled here, intron ranges can | 
 |   // be deduced; all regions of this transcript that are not exons are introns. | 
 |   // | 
 |   // Exonic sequences do not necessarily code for a translational product | 
 |   // (amino acids). Only the regions of exons bounded by the | 
 |   // [codingSequence][google.genomics.v1.Transcript.coding_sequence] correspond | 
 |   // to coding DNA sequence. | 
 |   // | 
 |   // Exons are ordered by start position and may not overlap. | 
 |   repeated Exon exons = 2; | 
 |  | 
 |   // The range of the coding sequence for this transcript, if any. To determine | 
 |   // the exact ranges of coding sequence, intersect this range with those of the | 
 |   // [exons][google.genomics.v1.Transcript.exons], if any. If there are any | 
 |   // [exons][google.genomics.v1.Transcript.exons], the | 
 |   // [codingSequence][google.genomics.v1.Transcript.coding_sequence] must start | 
 |   // and end within them. | 
 |   // | 
 |   // Note that in some cases, the reference genome will not exactly match the | 
 |   // observed mRNA transcript e.g. due to variance in the source genome from | 
 |   // reference. In these cases, | 
 |   // [exon.frame][google.genomics.v1.Transcript.Exon.frame] will not necessarily | 
 |   // match the expected reference reading frame and coding exon reference bases | 
 |   // cannot necessarily be concatenated to produce the original transcript mRNA. | 
 |   CodingSequence coding_sequence = 3; | 
 | } | 
 |  | 
 | message ExternalId { | 
 |   // The name of the source of this data. | 
 |   string source_name = 1; | 
 |  | 
 |   // The id used by the source of this data. | 
 |   string id = 2; | 
 | } | 
 |  | 
 | message CreateAnnotationSetRequest { | 
 |   // The annotation set to create. | 
 |   AnnotationSet annotation_set = 1; | 
 | } | 
 |  | 
 | message GetAnnotationSetRequest { | 
 |   // The ID of the annotation set to be retrieved. | 
 |   string annotation_set_id = 1; | 
 | } | 
 |  | 
 | message UpdateAnnotationSetRequest { | 
 |   // The ID of the annotation set to be updated. | 
 |   string annotation_set_id = 1; | 
 |  | 
 |   // The new annotation set. | 
 |   AnnotationSet annotation_set = 2; | 
 |  | 
 |   // An optional mask specifying which fields to update. Mutable fields are | 
 |   // [name][google.genomics.v1.AnnotationSet.name], | 
 |   // [source_uri][google.genomics.v1.AnnotationSet.source_uri], and | 
 |   // [info][google.genomics.v1.AnnotationSet.info]. If unspecified, all | 
 |   // mutable fields will be updated. | 
 |   google.protobuf.FieldMask update_mask = 3; | 
 | } | 
 |  | 
 | message DeleteAnnotationSetRequest { | 
 |   // The ID of the annotation set to be deleted. | 
 |   string annotation_set_id = 1; | 
 | } | 
 |  | 
 | message SearchAnnotationSetsRequest { | 
 |   // Required. The dataset IDs to search within. Caller must have `READ` access | 
 |   // to these datasets. | 
 |   repeated string dataset_ids = 1; | 
 |  | 
 |   // If specified, only annotation sets associated with the given reference set | 
 |   // are returned. | 
 |   string reference_set_id = 2; | 
 |  | 
 |   // Only return annotations sets for which a substring of the name matches this | 
 |   // string (case insensitive). | 
 |   string name = 3; | 
 |  | 
 |   // If specified, only annotation sets that have any of these types are | 
 |   // returned. | 
 |   repeated AnnotationType types = 4; | 
 |  | 
 |   // The continuation token, which is used to page through large result sets. | 
 |   // To get the next page of results, set this parameter to the value of | 
 |   // `nextPageToken` from the previous response. | 
 |   string page_token = 5; | 
 |  | 
 |   // The maximum number of results to return in a single page. If unspecified, | 
 |   // defaults to 128. The maximum value is 1024. | 
 |   int32 page_size = 6; | 
 | } | 
 |  | 
 | message SearchAnnotationSetsResponse { | 
 |   // The matching annotation sets. | 
 |   repeated AnnotationSet annotation_sets = 1; | 
 |  | 
 |   // The continuation token, which is used to page through large result sets. | 
 |   // Provide this value in a subsequent request to return the next page of | 
 |   // results. This field will be empty if there aren't any additional results. | 
 |   string next_page_token = 2; | 
 | } | 
 |  | 
 | message CreateAnnotationRequest { | 
 |   // The annotation to be created. | 
 |   Annotation annotation = 1; | 
 | } | 
 |  | 
 | message BatchCreateAnnotationsRequest { | 
 |   // The annotations to be created. At most 4096 can be specified in a single | 
 |   // request. | 
 |   repeated Annotation annotations = 1; | 
 |  | 
 |   // A unique request ID which enables the server to detect duplicated requests. | 
 |   // If provided, duplicated requests will result in the same response; if not | 
 |   // provided, duplicated requests may result in duplicated data. For a given | 
 |   // annotation set, callers should not reuse `request_id`s when writing | 
 |   // different batches of annotations - behavior in this case is undefined. | 
 |   // A common approach is to use a UUID. For batch jobs where worker crashes are | 
 |   // a possibility, consider using some unique variant of a worker or run ID. | 
 |   string request_id = 2; | 
 | } | 
 |  | 
 | message BatchCreateAnnotationsResponse { | 
 |   message Entry { | 
 |     // The creation status. | 
 |     google.rpc.Status status = 1; | 
 |  | 
 |     // The created annotation, if creation was successful. | 
 |     Annotation annotation = 2; | 
 |   } | 
 |  | 
 |   // The resulting per-annotation entries, ordered consistently with the | 
 |   // original request. | 
 |   repeated Entry entries = 1; | 
 | } | 
 |  | 
 | message GetAnnotationRequest { | 
 |   // The ID of the annotation to be retrieved. | 
 |   string annotation_id = 1; | 
 | } | 
 |  | 
 | message UpdateAnnotationRequest { | 
 |   // The ID of the annotation to be updated. | 
 |   string annotation_id = 1; | 
 |  | 
 |   // The new annotation. | 
 |   Annotation annotation = 2; | 
 |  | 
 |   // An optional mask specifying which fields to update. Mutable fields are | 
 |   // [name][google.genomics.v1.Annotation.name], | 
 |   // [variant][google.genomics.v1.Annotation.variant], | 
 |   // [transcript][google.genomics.v1.Annotation.transcript], and | 
 |   // [info][google.genomics.v1.Annotation.info]. If unspecified, all mutable | 
 |   // fields will be updated. | 
 |   google.protobuf.FieldMask update_mask = 3; | 
 | } | 
 |  | 
 | message DeleteAnnotationRequest { | 
 |   // The ID of the annotation to be deleted. | 
 |   string annotation_id = 1; | 
 | } | 
 |  | 
 | message SearchAnnotationsRequest { | 
 |   // Required. The annotation sets to search within. The caller must have | 
 |   // `READ` access to these annotation sets. | 
 |   // All queried annotation sets must have the same type. | 
 |   repeated string annotation_set_ids = 1; | 
 |  | 
 |   // Required. `reference_id` or `reference_name` must be set. | 
 |   oneof reference { | 
 |     // The ID of the reference to query. | 
 |     string reference_id = 2; | 
 |  | 
 |     // The name of the reference to query, within the reference set associated | 
 |     // with this query. | 
 |     string reference_name = 3; | 
 |   } | 
 |  | 
 |   // The start position of the range on the reference, 0-based inclusive. If | 
 |   // specified, | 
 |   // [referenceId][google.genomics.v1.SearchAnnotationsRequest.reference_id] or | 
 |   // [referenceName][google.genomics.v1.SearchAnnotationsRequest.reference_name] | 
 |   // must be specified. Defaults to 0. | 
 |   int64 start = 4; | 
 |  | 
 |   // The end position of the range on the reference, 0-based exclusive. If | 
 |   // [referenceId][google.genomics.v1.SearchAnnotationsRequest.reference_id] or | 
 |   // [referenceName][google.genomics.v1.SearchAnnotationsRequest.reference_name] | 
 |   // must be specified, Defaults to the length of the reference. | 
 |   int64 end = 5; | 
 |  | 
 |   // The continuation token, which is used to page through large result sets. | 
 |   // To get the next page of results, set this parameter to the value of | 
 |   // `nextPageToken` from the previous response. | 
 |   string page_token = 6; | 
 |  | 
 |   // The maximum number of results to return in a single page. If unspecified, | 
 |   // defaults to 256. The maximum value is 2048. | 
 |   int32 page_size = 7; | 
 | } | 
 |  | 
 | message SearchAnnotationsResponse { | 
 |   // The matching annotations. | 
 |   repeated Annotation annotations = 1; | 
 |  | 
 |   // The continuation token, which is used to page through large result sets. | 
 |   // Provide this value in a subsequent request to return the next page of | 
 |   // results. This field will be empty if there aren't any additional results. | 
 |   string next_page_token = 2; | 
 | } | 
 |  | 
 | // When an [Annotation][google.genomics.v1.Annotation] or | 
 | // [AnnotationSet][google.genomics.v1.AnnotationSet] is created, if `type` is | 
 | // not specified it will be set to `GENERIC`. | 
 | enum AnnotationType { | 
 |   ANNOTATION_TYPE_UNSPECIFIED = 0; | 
 |  | 
 |   // A `GENERIC` annotation type should be used when no other annotation | 
 |   // type will suffice. This represents an untyped annotation of the reference | 
 |   // genome. | 
 |   GENERIC = 1; | 
 |  | 
 |   // A `VARIANT` annotation type. | 
 |   VARIANT = 2; | 
 |  | 
 |   // A `GENE` annotation type represents the existence of a gene at the | 
 |   // associated reference coordinates. The start coordinate is typically the | 
 |   // gene's transcription start site and the end is typically the end of the | 
 |   // gene's last exon. | 
 |   GENE = 3; | 
 |  | 
 |   // A `TRANSCRIPT` annotation type represents the assertion that a | 
 |   // particular region of the reference genome may be transcribed as RNA. | 
 |   TRANSCRIPT = 4; | 
 | } |