<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, filter=None, pageToken=None, pageSize=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;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;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;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;comments&quot;: [ # Comments from contributors.
              &quot;A String&quot;,
            ],
            &quot;labelVotes&quot;: 42, # The total number of contributors that choose this label.
            &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;totalVotes&quot;: 42, # The total number of contributors that answer this question.
          },
        },
        &quot;annotationSentiment&quot;: &quot;A String&quot;, # Output only. Sentiment for this annotation.
        &quot;annotationSource&quot;: &quot;A String&quot;, # Output only. The source of the 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;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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &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;imageBytes&quot;: &quot;A String&quot;, # A byte string of a full image&#x27;s color map.
            &quot;mimeType&quot;: &quot;A String&quot;, # Image format.
            &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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                &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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &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 object tracking applies.
              &quot;endTimeOffset&quot;: &quot;A String&quot;, # End of the time segment (exclusive), represented as the duration since the example start.
              &quot;startTimeOffset&quot;: &quot;A String&quot;, # Start of the time segment (inclusive), represented as the duration since the example start.
            },
            &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;x&quot;: 42, # X coordinate.
                      &quot;y&quot;: 42, # Y coordinate.
                    },
                  ],
                },
                &quot;timeOffset&quot;: &quot;A String&quot;, # The time offset of this frame relative to the beginning of the video.
              },
            ],
          },
          &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;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;x&quot;: 42, # X coordinate.
                  &quot;y&quot;: 42, # Y 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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &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;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;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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &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;videoClassificationAnnotation&quot;: { # Video classification annotation. # Annotation value for video classification 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;endTimeOffset&quot;: &quot;A String&quot;, # End of the time segment (exclusive), represented as the duration since the example start.
              &quot;startTimeOffset&quot;: &quot;A String&quot;, # Start of the time segment (inclusive), 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 segment specified by time_segment.
              &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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &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;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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &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;x&quot;: 42, # X coordinate.
                  &quot;y&quot;: 42, # Y coordinate.
                },
              ],
            },
          },
          &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;endTimeOffset&quot;: &quot;A String&quot;, # End of the time segment (exclusive), represented as the duration since the example start.
              &quot;startTimeOffset&quot;: &quot;A String&quot;, # Start of the time segment (inclusive), 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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
              &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;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;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}
    &quot;imagePayload&quot;: { # Container of information about an image. # The image payload, a container of the image bytes/uri.
      &quot;signedUri&quot;: &quot;A String&quot;, # Signed uri of the image file in the service bucket.
      &quot;imageThumbnail&quot;: &quot;A String&quot;, # A byte string of a thumbnail image.
      &quot;mimeType&quot;: &quot;A String&quot;, # Image format.
      &quot;imageUri&quot;: &quot;A String&quot;, # Image uri from the user bucket.
    },
    &quot;videoPayload&quot;: { # Container of information of a video. # The video payload, a container of the video uri.
      &quot;mimeType&quot;: &quot;A String&quot;, # Video format.
      &quot;videoUri&quot;: &quot;A String&quot;, # Video uri from the user bucket.
      &quot;signedUri&quot;: &quot;A String&quot;, # Signed uri of the video file in the service 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.
    },
  }</pre>
</div>

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

Args:
  parent: string, Required. Example resource parent. (required)
  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.
  pageSize: integer, Optional. Requested page size. Server may return fewer results than requested. Default value is 100.
  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;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;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;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;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;comments&quot;: [ # Comments from contributors.
                  &quot;A String&quot;,
                ],
                &quot;labelVotes&quot;: 42, # The total number of contributors that choose this label.
                &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;totalVotes&quot;: 42, # The total number of contributors that answer this question.
              },
            },
            &quot;annotationSentiment&quot;: &quot;A String&quot;, # Output only. Sentiment for this annotation.
            &quot;annotationSource&quot;: &quot;A String&quot;, # Output only. The source of the 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;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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &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;imageBytes&quot;: &quot;A String&quot;, # A byte string of a full image&#x27;s color map.
                &quot;mimeType&quot;: &quot;A String&quot;, # Image format.
                &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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                    &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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &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 object tracking applies.
                  &quot;endTimeOffset&quot;: &quot;A String&quot;, # End of the time segment (exclusive), represented as the duration since the example start.
                  &quot;startTimeOffset&quot;: &quot;A String&quot;, # Start of the time segment (inclusive), represented as the duration since the example start.
                },
                &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;x&quot;: 42, # X coordinate.
                          &quot;y&quot;: 42, # Y coordinate.
                        },
                      ],
                    },
                    &quot;timeOffset&quot;: &quot;A String&quot;, # The time offset of this frame relative to the beginning of the video.
                  },
                ],
              },
              &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;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;x&quot;: 42, # X coordinate.
                      &quot;y&quot;: 42, # Y 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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &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;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;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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &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;videoClassificationAnnotation&quot;: { # Video classification annotation. # Annotation value for video classification 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;endTimeOffset&quot;: &quot;A String&quot;, # End of the time segment (exclusive), represented as the duration since the example start.
                  &quot;startTimeOffset&quot;: &quot;A String&quot;, # Start of the time segment (inclusive), 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 segment specified by time_segment.
                  &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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &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;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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &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;x&quot;: 42, # X coordinate.
                      &quot;y&quot;: 42, # Y coordinate.
                    },
                  ],
                },
              },
              &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;endTimeOffset&quot;: &quot;A String&quot;, # End of the time segment (exclusive), represented as the duration since the example start.
                  &quot;startTimeOffset&quot;: &quot;A String&quot;, # Start of the time segment (inclusive), 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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the AnnotationSpec. Maximum of 64 characters.
                  &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;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;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}
        &quot;imagePayload&quot;: { # Container of information about an image. # The image payload, a container of the image bytes/uri.
          &quot;signedUri&quot;: &quot;A String&quot;, # Signed uri of the image file in the service bucket.
          &quot;imageThumbnail&quot;: &quot;A String&quot;, # A byte string of a thumbnail image.
          &quot;mimeType&quot;: &quot;A String&quot;, # Image format.
          &quot;imageUri&quot;: &quot;A String&quot;, # Image uri from the user bucket.
        },
        &quot;videoPayload&quot;: { # Container of information of a video. # The video payload, a container of the video uri.
          &quot;mimeType&quot;: &quot;A String&quot;, # Video format.
          &quot;videoUri&quot;: &quot;A String&quot;, # Video uri from the user bucket.
          &quot;signedUri&quot;: &quot;A String&quot;, # Signed uri of the video file in the service 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;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve next page of results.
  }</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>