<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="datalabeling_v1beta1.html">Data Labeling API</a> . <a href="datalabeling_v1beta1.projects.html">projects</a> . <a href="datalabeling_v1beta1.projects.datasets.html">datasets</a> . <a href="datalabeling_v1beta1.projects.datasets.annotatedDatasets.html">annotatedDatasets</a> . <a href="datalabeling_v1beta1.projects.datasets.annotatedDatasets.examples.html">examples</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(name, filter=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets an example by resource name, including both data and annotation.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists examples in an annotated dataset. Pagination is supported.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, filter=None, x__xgafv=None)</code>
  <pre>Gets an example by resource name, including both data and annotation.

Args:
  name: string, Required. Name of example, format: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/ {annotated_dataset_id}/examples/{example_id} (required)
  filter: string, Optional. An expression for filtering Examples. Filter by annotation_spec.display_name is supported. Format &quot;annotation_spec.display_name = {display_name}&quot;
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Example is a piece of data and its annotation. For example, an image with label &quot;house&quot;.
    &quot;imagePayload&quot;: { # Container of information about an image. # The image payload, a container of the image bytes/uri.
      &quot;mimeType&quot;: &quot;A String&quot;, # Image format.
      &quot;imageThumbnail&quot;: &quot;A String&quot;, # A byte string of a thumbnail image.
      &quot;signedUri&quot;: &quot;A String&quot;, # Signed uri of the image file in the service bucket.
      &quot;imageUri&quot;: &quot;A String&quot;, # Image uri from the user bucket.
    },
    &quot;annotations&quot;: [ # Output only. Annotations for the piece of data in Example. One piece of data can have multiple annotations.
      { # Annotation for Example. Each example may have one or more annotations. For example in image classification problem, each image might have one or more labels. We call labels binded with this image an Annotation.
        &quot;annotationSource&quot;: &quot;A String&quot;, # Output only. The source of the annotation.
        &quot;annotationMetadata&quot;: { # Additional information associated with the annotation. # Output only. Annotation metadata, including information like votes for labels.
          &quot;operatorMetadata&quot;: { # General information useful for labels coming from contributors. # Metadata related to human labeling.
            &quot;totalVotes&quot;: 42, # The total number of contributors that answer this question.
            &quot;comments&quot;: [ # Comments from contributors.
              &quot;A String&quot;,
            ],
            &quot;score&quot;: 3.14, # Confidence score corresponding to a label. For examle, if 3 contributors have answered the question and 2 of them agree on the final label, the confidence score will be 0.67 (2/3).
            &quot;labelVotes&quot;: 42, # The total number of contributors that choose this label.
          },
        },
        &quot;name&quot;: &quot;A String&quot;, # Output only. Unique name of this annotation, format is: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset}/examples/{example_id}/annotations/{annotation_id}
        &quot;annotationSentiment&quot;: &quot;A String&quot;, # Output only. Sentiment for this annotation.
        &quot;annotationValue&quot;: { # Annotation value for an example. # Output only. This is the actual annotation value, e.g classification, bounding box values are stored here.
          &quot;videoClassificationAnnotation&quot;: { # Video classification annotation. # Annotation value for video classification case.
            &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of the segment specified by time_segment.
              &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
              &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
            },
            &quot;timeSegment&quot;: { # A time period inside of an example that has a time dimension (e.g. video). # The time segment of the video to which the annotation applies.
              &quot;startTimeOffset&quot;: &quot;A String&quot;, # Start of the time segment (inclusive), represented as the duration since the example start.
              &quot;endTimeOffset&quot;: &quot;A String&quot;, # End of the time segment (exclusive), represented as the duration since the example start.
            },
          },
          &quot;imageClassificationAnnotation&quot;: { # Image classification annotation definition. # Annotation value for image classification case.
            &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of image.
              &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
              &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
            },
          },
          &quot;imageSegmentationAnnotation&quot;: { # Image segmentation annotation. # Annotation value for image segmentation.
            &quot;mimeType&quot;: &quot;A String&quot;, # Image format.
            &quot;imageBytes&quot;: &quot;A String&quot;, # A byte string of a full image&#x27;s color map.
            &quot;annotationColors&quot;: { # The mapping between rgb color and annotation spec. The key is the rgb color represented in format of rgb(0, 0, 0). The value is the AnnotationSpec.
              &quot;a_key&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`.
                &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
                &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
              },
            },
          },
          &quot;videoEventAnnotation&quot;: { # Video event annotation. # Annotation value for video event case.
            &quot;timeSegment&quot;: { # A time period inside of an example that has a time dimension (e.g. video). # The time segment of the video to which the annotation applies.
              &quot;startTimeOffset&quot;: &quot;A String&quot;, # Start of the time segment (inclusive), represented as the duration since the example start.
              &quot;endTimeOffset&quot;: &quot;A String&quot;, # End of the time segment (exclusive), represented as the duration since the example start.
            },
            &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of the event in this annotation.
              &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
              &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
            },
          },
          &quot;videoObjectTrackingAnnotation&quot;: { # Video object tracking annotation. # Annotation value for video object detection and tracking case.
            &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of the object tracked in this annotation.
              &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
              &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
            },
            &quot;objectTrackingFrames&quot;: [ # The list of frames where this object track appears.
              { # Video frame level annotation for object detection and tracking.
                &quot;normalizedBoundingPoly&quot;: { # Normalized bounding polygon.
                  &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                    { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                      &quot;y&quot;: 3.14, # Y coordinate.
                      &quot;x&quot;: 3.14, # X coordinate.
                    },
                  ],
                },
                &quot;boundingPoly&quot;: { # A bounding polygon in the image.
                  &quot;vertices&quot;: [ # The bounding polygon vertices.
                    { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                      &quot;y&quot;: 42, # Y coordinate.
                      &quot;x&quot;: 42, # X coordinate.
                    },
                  ],
                },
                &quot;timeOffset&quot;: &quot;A String&quot;, # The time offset of this frame relative to the beginning of the video.
              },
            ],
            &quot;timeSegment&quot;: { # A time period inside of an example that has a time dimension (e.g. video). # The time segment of the video to which object tracking applies.
              &quot;startTimeOffset&quot;: &quot;A String&quot;, # Start of the time segment (inclusive), represented as the duration since the example start.
              &quot;endTimeOffset&quot;: &quot;A String&quot;, # End of the time segment (exclusive), represented as the duration since the example start.
            },
          },
          &quot;textClassificationAnnotation&quot;: { # Text classification annotation. # Annotation value for text classification case.
            &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of the text.
              &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
              &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
            },
          },
          &quot;imageBoundingPolyAnnotation&quot;: { # Image bounding poly annotation. It represents a polygon including bounding box in the image. # Annotation value for image bounding box, oriented bounding box and polygon cases.
            &quot;normalizedBoundingPoly&quot;: { # Normalized bounding polygon.
              &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                  &quot;y&quot;: 3.14, # Y coordinate.
                  &quot;x&quot;: 3.14, # X coordinate.
                },
              ],
            },
            &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of object in this bounding polygon.
              &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
              &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
            },
            &quot;boundingPoly&quot;: { # A bounding polygon in the image.
              &quot;vertices&quot;: [ # The bounding polygon vertices.
                { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                  &quot;y&quot;: 42, # Y coordinate.
                  &quot;x&quot;: 42, # X coordinate.
                },
              ],
            },
          },
          &quot;textEntityExtractionAnnotation&quot;: { # Text entity extraction annotation. # Annotation value for text entity extraction case.
            &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of the text entities.
              &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
              &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
            },
            &quot;sequentialSegment&quot;: { # Start and end position in a sequence (e.g. text segment). # Position of the entity.
              &quot;end&quot;: 42, # End position (exclusive).
              &quot;start&quot;: 42, # Start position (inclusive).
            },
          },
          &quot;imagePolylineAnnotation&quot;: { # A polyline for the image annotation. # Annotation value for image polyline cases. Polyline here is different from BoundingPoly. It is formed by line segments connected to each other but not closed form(Bounding Poly). The line segments can cross each other.
            &quot;normalizedPolyline&quot;: { # Normalized polyline.
              &quot;normalizedVertices&quot;: [ # The normalized polyline vertices.
                { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                  &quot;y&quot;: 3.14, # Y coordinate.
                  &quot;x&quot;: 3.14, # X coordinate.
                },
              ],
            },
            &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of this polyline.
              &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
              &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
            },
            &quot;polyline&quot;: { # A line with multiple line segments.
              &quot;vertices&quot;: [ # The polyline vertices.
                { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                  &quot;y&quot;: 42, # Y coordinate.
                  &quot;x&quot;: 42, # X coordinate.
                },
              ],
            },
          },
        },
      },
    ],
    &quot;textPayload&quot;: { # Container of information about a piece of text. # The text payload, a container of the text content.
      &quot;textContent&quot;: &quot;A String&quot;, # Text content.
    },
    &quot;videoPayload&quot;: { # Container of information of a video. # The video payload, a container of the video uri.
      &quot;signedUri&quot;: &quot;A String&quot;, # Signed uri of the video file in the service bucket.
      &quot;mimeType&quot;: &quot;A String&quot;, # Video format.
      &quot;videoUri&quot;: &quot;A String&quot;, # Video uri from the user bucket.
      &quot;videoThumbnails&quot;: [ # The list of video thumbnails.
        { # Container of information of a video thumbnail.
          &quot;timeOffset&quot;: &quot;A String&quot;, # Time offset relative to the beginning of the video, corresponding to the video frame where the thumbnail has been extracted from.
          &quot;thumbnail&quot;: &quot;A String&quot;, # A byte string of the video frame.
        },
      ],
      &quot;frameRate&quot;: 3.14, # FPS of the video.
    },
    &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the example, in format of: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/ {annotated_dataset_id}/examples/{example_id}
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists examples in an annotated dataset. Pagination is supported.

Args:
  parent: string, Required. Example resource parent. (required)
  pageSize: integer, Optional. Requested page size. Server may return fewer results than requested. Default value is 100.
  filter: string, Optional. An expression for filtering Examples. For annotated datasets that have annotation spec set, filter by annotation_spec.display_name is supported. Format &quot;annotation_spec.display_name = {display_name}&quot;
  pageToken: string, Optional. A token identifying a page of results for the server to return. Typically obtained by ListExamplesResponse.next_page_token of the previous [DataLabelingService.ListExamples] call. Return first page if empty.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Results of listing Examples in and annotated dataset.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve next page of results.
    &quot;examples&quot;: [ # The list of examples to return.
      { # An Example is a piece of data and its annotation. For example, an image with label &quot;house&quot;.
        &quot;imagePayload&quot;: { # Container of information about an image. # The image payload, a container of the image bytes/uri.
          &quot;mimeType&quot;: &quot;A String&quot;, # Image format.
          &quot;imageThumbnail&quot;: &quot;A String&quot;, # A byte string of a thumbnail image.
          &quot;signedUri&quot;: &quot;A String&quot;, # Signed uri of the image file in the service bucket.
          &quot;imageUri&quot;: &quot;A String&quot;, # Image uri from the user bucket.
        },
        &quot;annotations&quot;: [ # Output only. Annotations for the piece of data in Example. One piece of data can have multiple annotations.
          { # Annotation for Example. Each example may have one or more annotations. For example in image classification problem, each image might have one or more labels. We call labels binded with this image an Annotation.
            &quot;annotationSource&quot;: &quot;A String&quot;, # Output only. The source of the annotation.
            &quot;annotationMetadata&quot;: { # Additional information associated with the annotation. # Output only. Annotation metadata, including information like votes for labels.
              &quot;operatorMetadata&quot;: { # General information useful for labels coming from contributors. # Metadata related to human labeling.
                &quot;totalVotes&quot;: 42, # The total number of contributors that answer this question.
                &quot;comments&quot;: [ # Comments from contributors.
                  &quot;A String&quot;,
                ],
                &quot;score&quot;: 3.14, # Confidence score corresponding to a label. For examle, if 3 contributors have answered the question and 2 of them agree on the final label, the confidence score will be 0.67 (2/3).
                &quot;labelVotes&quot;: 42, # The total number of contributors that choose this label.
              },
            },
            &quot;name&quot;: &quot;A String&quot;, # Output only. Unique name of this annotation, format is: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset}/examples/{example_id}/annotations/{annotation_id}
            &quot;annotationSentiment&quot;: &quot;A String&quot;, # Output only. Sentiment for this annotation.
            &quot;annotationValue&quot;: { # Annotation value for an example. # Output only. This is the actual annotation value, e.g classification, bounding box values are stored here.
              &quot;videoClassificationAnnotation&quot;: { # Video classification annotation. # Annotation value for video classification case.
                &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of the segment specified by time_segment.
                  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
                  &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
                },
                &quot;timeSegment&quot;: { # A time period inside of an example that has a time dimension (e.g. video). # The time segment of the video to which the annotation applies.
                  &quot;startTimeOffset&quot;: &quot;A String&quot;, # Start of the time segment (inclusive), represented as the duration since the example start.
                  &quot;endTimeOffset&quot;: &quot;A String&quot;, # End of the time segment (exclusive), represented as the duration since the example start.
                },
              },
              &quot;imageClassificationAnnotation&quot;: { # Image classification annotation definition. # Annotation value for image classification case.
                &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of image.
                  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
                  &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
                },
              },
              &quot;imageSegmentationAnnotation&quot;: { # Image segmentation annotation. # Annotation value for image segmentation.
                &quot;mimeType&quot;: &quot;A String&quot;, # Image format.
                &quot;imageBytes&quot;: &quot;A String&quot;, # A byte string of a full image&#x27;s color map.
                &quot;annotationColors&quot;: { # The mapping between rgb color and annotation spec. The key is the rgb color represented in format of rgb(0, 0, 0). The value is the AnnotationSpec.
                  &quot;a_key&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`.
                    &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                    &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
                    &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
                  },
                },
              },
              &quot;videoEventAnnotation&quot;: { # Video event annotation. # Annotation value for video event case.
                &quot;timeSegment&quot;: { # A time period inside of an example that has a time dimension (e.g. video). # The time segment of the video to which the annotation applies.
                  &quot;startTimeOffset&quot;: &quot;A String&quot;, # Start of the time segment (inclusive), represented as the duration since the example start.
                  &quot;endTimeOffset&quot;: &quot;A String&quot;, # End of the time segment (exclusive), represented as the duration since the example start.
                },
                &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of the event in this annotation.
                  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
                  &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
                },
              },
              &quot;videoObjectTrackingAnnotation&quot;: { # Video object tracking annotation. # Annotation value for video object detection and tracking case.
                &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of the object tracked in this annotation.
                  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
                  &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
                },
                &quot;objectTrackingFrames&quot;: [ # The list of frames where this object track appears.
                  { # Video frame level annotation for object detection and tracking.
                    &quot;normalizedBoundingPoly&quot;: { # Normalized bounding polygon.
                      &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                        { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                          &quot;y&quot;: 3.14, # Y coordinate.
                          &quot;x&quot;: 3.14, # X coordinate.
                        },
                      ],
                    },
                    &quot;boundingPoly&quot;: { # A bounding polygon in the image.
                      &quot;vertices&quot;: [ # The bounding polygon vertices.
                        { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                          &quot;y&quot;: 42, # Y coordinate.
                          &quot;x&quot;: 42, # X coordinate.
                        },
                      ],
                    },
                    &quot;timeOffset&quot;: &quot;A String&quot;, # The time offset of this frame relative to the beginning of the video.
                  },
                ],
                &quot;timeSegment&quot;: { # A time period inside of an example that has a time dimension (e.g. video). # The time segment of the video to which object tracking applies.
                  &quot;startTimeOffset&quot;: &quot;A String&quot;, # Start of the time segment (inclusive), represented as the duration since the example start.
                  &quot;endTimeOffset&quot;: &quot;A String&quot;, # End of the time segment (exclusive), represented as the duration since the example start.
                },
              },
              &quot;textClassificationAnnotation&quot;: { # Text classification annotation. # Annotation value for text classification case.
                &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of the text.
                  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
                  &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
                },
              },
              &quot;imageBoundingPolyAnnotation&quot;: { # Image bounding poly annotation. It represents a polygon including bounding box in the image. # Annotation value for image bounding box, oriented bounding box and polygon cases.
                &quot;normalizedBoundingPoly&quot;: { # Normalized bounding polygon.
                  &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                    { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                      &quot;y&quot;: 3.14, # Y coordinate.
                      &quot;x&quot;: 3.14, # X coordinate.
                    },
                  ],
                },
                &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of object in this bounding polygon.
                  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
                  &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
                },
                &quot;boundingPoly&quot;: { # A bounding polygon in the image.
                  &quot;vertices&quot;: [ # The bounding polygon vertices.
                    { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                      &quot;y&quot;: 42, # Y coordinate.
                      &quot;x&quot;: 42, # X coordinate.
                    },
                  ],
                },
              },
              &quot;textEntityExtractionAnnotation&quot;: { # Text entity extraction annotation. # Annotation value for text entity extraction case.
                &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of the text entities.
                  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
                  &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
                },
                &quot;sequentialSegment&quot;: { # Start and end position in a sequence (e.g. text segment). # Position of the entity.
                  &quot;end&quot;: 42, # End position (exclusive).
                  &quot;start&quot;: 42, # Start position (inclusive).
                },
              },
              &quot;imagePolylineAnnotation&quot;: { # A polyline for the image annotation. # Annotation value for image polyline cases. Polyline here is different from BoundingPoly. It is formed by line segments connected to each other but not closed form(Bounding Poly). The line segments can cross each other.
                &quot;normalizedPolyline&quot;: { # Normalized polyline.
                  &quot;normalizedVertices&quot;: [ # The normalized polyline vertices.
                    { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                      &quot;y&quot;: 3.14, # Y coordinate.
                      &quot;x&quot;: 3.14, # X coordinate.
                    },
                  ],
                },
                &quot;annotationSpec&quot;: { # Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`. # Label of this polyline.
                  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &quot;description&quot;: &quot;A String&quot;, # Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.
                  &quot;index&quot;: 42, # Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: &quot;dog&quot;, index: 0 }` and one AnnotationSpec with `{ display_name: &quot;cat&quot;, index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.
                },
                &quot;polyline&quot;: { # A line with multiple line segments.
                  &quot;vertices&quot;: [ # The polyline vertices.
                    { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                      &quot;y&quot;: 42, # Y coordinate.
                      &quot;x&quot;: 42, # X coordinate.
                    },
                  ],
                },
              },
            },
          },
        ],
        &quot;textPayload&quot;: { # Container of information about a piece of text. # The text payload, a container of the text content.
          &quot;textContent&quot;: &quot;A String&quot;, # Text content.
        },
        &quot;videoPayload&quot;: { # Container of information of a video. # The video payload, a container of the video uri.
          &quot;signedUri&quot;: &quot;A String&quot;, # Signed uri of the video file in the service bucket.
          &quot;mimeType&quot;: &quot;A String&quot;, # Video format.
          &quot;videoUri&quot;: &quot;A String&quot;, # Video uri from the user bucket.
          &quot;videoThumbnails&quot;: [ # The list of video thumbnails.
            { # Container of information of a video thumbnail.
              &quot;timeOffset&quot;: &quot;A String&quot;, # Time offset relative to the beginning of the video, corresponding to the video frame where the thumbnail has been extracted from.
              &quot;thumbnail&quot;: &quot;A String&quot;, # A byte string of the video frame.
            },
          ],
          &quot;frameRate&quot;: 3.14, # FPS of the video.
        },
        &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the example, in format of: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/ {annotated_dataset_id}/examples/{example_id}
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>