<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></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="datalabeling_v1beta1.projects.datasets.annotatedDatasets.dataItems.html">dataItems()</a></code>
</p>
<p class="firstline">Returns the dataItems Resource.</p>

<p class="toc_element">
  <code><a href="datalabeling_v1beta1.projects.datasets.annotatedDatasets.examples.html">examples()</a></code>
</p>
<p class="firstline">Returns the examples Resource.</p>

<p class="toc_element">
  <code><a href="datalabeling_v1beta1.projects.datasets.annotatedDatasets.feedbackThreads.html">feedbackThreads()</a></code>
</p>
<p class="firstline">Returns the feedbackThreads Resource.</p>

<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="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an annotated dataset by resource name.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets an annotated dataset by resource name.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageToken=None, pageSize=None, filter=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists annotated datasets for a 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="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes an annotated dataset by resource name.

Args:
  name: string, Required. Name of the annotated dataset to delete, format: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/ {annotated_dataset_id} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets an annotated dataset by resource name.

Args:
  name: string, Required. Name of the annotated dataset to get, format: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/ {annotated_dataset_id} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # AnnotatedDataset is a set holding annotations for data in a Dataset. Each labeling task will generate an AnnotatedDataset under the Dataset that the task is requested for.
    &quot;name&quot;: &quot;A String&quot;, # Output only. AnnotatedDataset resource name in format of: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/ {annotated_dataset_id}
    &quot;blockingResources&quot;: [ # Output only. The names of any related resources that are blocking changes to the annotated dataset.
      &quot;A String&quot;,
    ],
    &quot;annotationType&quot;: &quot;A String&quot;, # Output only. Type of the annotation. It is specified when starting labeling task.
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time the AnnotatedDataset was created.
    &quot;labelStats&quot;: { # Statistics about annotation specs. # Output only. Per label statistics.
      &quot;exampleCount&quot;: { # Map of each annotation spec&#x27;s example count. Key is the annotation spec name and value is the number of examples for that annotation spec. If the annotated dataset does not have annotation spec, the map will return a pair where the key is empty string and value is the total number of annotations.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;metadata&quot;: { # Metadata on AnnotatedDataset. # Output only. Additional information about AnnotatedDataset.
      &quot;segmentationConfig&quot;: { # Config for image segmentation # Configuration for image segmentation task.
        &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name. format: projects/{project_id}/annotationSpecSets/{annotation_spec_set_id}
        &quot;instructionMessage&quot;: &quot;A String&quot;, # Instruction message showed on labelers UI.
      },
      &quot;videoClassificationConfig&quot;: { # Config for video classification human labeling task. Currently two types of video classification are supported: 1. Assign labels on the entire video. 2. Split the video into multiple video clips based on camera shot, and assign labels on each video clip. # Configuration for video classification task.
        &quot;annotationSpecSetConfigs&quot;: [ # Required. The list of annotation spec set configs. Since watching a video clip takes much longer time than an image, we support label with multiple AnnotationSpecSet at the same time. Labels in each AnnotationSpecSet will be shown in a group to contributors. Contributors can select one or more (depending on whether to allow multi label) from each group.
          { # Annotation spec set with the setting of allowing multi labels or not.
            &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
            &quot;allowMultiLabel&quot;: True or False, # Optional. If allow_multi_label is true, contributors are able to choose multiple labels from one annotation spec set.
          },
        ],
        &quot;applyShotDetection&quot;: True or False, # Optional. Option to apply shot detection on the video.
      },
      &quot;objectDetectionConfig&quot;: { # Config for video object detection human labeling task. Object detection will be conducted on the images extracted from the video, and those objects will be labeled with bounding boxes. User need to specify the number of images to be extracted per second as the extraction frame rate. # Configuration for video object detection task.
        &quot;extractionFrameRate&quot;: 3.14, # Required. Number of frames per second to be extracted from the video.
        &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
      },
      &quot;imageClassificationConfig&quot;: { # Config for image classification human labeling task. # Configuration for image classification task.
        &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
        &quot;allowMultiLabel&quot;: True or False, # Optional. If allow_multi_label is true, contributors are able to choose multiple labels for one image.
        &quot;answerAggregationType&quot;: &quot;A String&quot;, # Optional. The type of how to aggregate answers.
      },
      &quot;textClassificationConfig&quot;: { # Config for text classification human labeling task. # Configuration for text classification task.
        &quot;sentimentConfig&quot;: { # Config for setting up sentiments. # Optional. Configs for sentiment selection.
          &quot;enableLabelSentimentSelection&quot;: True or False, # If set to true, contributors will have the option to select sentiment of the label they selected, to mark it as negative or positive label. Default is false.
        },
        &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
        &quot;allowMultiLabel&quot;: True or False, # Optional. If allow_multi_label is true, contributors are able to choose multiple labels for one text segment.
      },
      &quot;eventConfig&quot;: { # Config for video event human labeling task. # Configuration for video event labeling task.
        &quot;clipLength&quot;: 42, # Videos will be cut to smaller clips to make it easier for labelers to work on. Users can configure is field in seconds, if not set, default value is 60s.
        &quot;overlapLength&quot;: 42, # The overlap length between different video clips. Users can configure is field in seconds, if not set, default value is 1s.
        &quot;annotationSpecSets&quot;: [ # Required. The list of annotation spec set resource name. Similar to video classification, we support selecting event from multiple AnnotationSpecSet at the same time.
          &quot;A String&quot;,
        ],
      },
      &quot;textEntityExtractionConfig&quot;: { # Config for text entity extraction human labeling task. # Configuration for text entity extraction task.
        &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
      },
      &quot;humanAnnotationConfig&quot;: { # Configuration for how human labeling task should be done. # HumanAnnotationConfig used when requesting the human labeling task for this AnnotatedDataset.
        &quot;replicaCount&quot;: 42, # Optional. Replication of questions. Each question will be sent to up to this number of contributors to label. Aggregated answers will be returned. Default is set to 1. For image related labeling, valid values are 1, 3, 5.
        &quot;instruction&quot;: &quot;A String&quot;, # Required. Instruction resource name.
        &quot;questionDuration&quot;: &quot;A String&quot;, # Optional. Maximum duration for contributors to answer a question. Maximum is 3600 seconds. Default is 3600 seconds.
        &quot;annotatedDatasetDescription&quot;: &quot;A String&quot;, # Optional. A human-readable description for AnnotatedDataset. The description can be up to 10000 characters long.
        &quot;labelGroup&quot;: &quot;A String&quot;, # Optional. A human-readable label used to logically group labeling tasks. This string must match the regular expression `[a-zA-Z\\d_-]{0,128}`.
        &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The Language of this question, as a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). Default value is en-US. Only need to set this when task is language related. For example, French text classification.
        &quot;userEmailAddress&quot;: &quot;A String&quot;, # Email of the user who started the labeling task and should be notified by email. If empty no notification will be sent.
        &quot;annotatedDatasetDisplayName&quot;: &quot;A String&quot;, # Required. A human-readable name for AnnotatedDataset defined by users. Maximum of 64 characters .
        &quot;contributorEmails&quot;: [ # Optional. If you want your own labeling contributors to manage and work on this labeling request, you can set these contributors here. We will give them access to the question types in crowdcompute. Note that these emails must be registered in crowdcompute worker UI: https://crowd-compute.appspot.com/
          &quot;A String&quot;,
        ],
      },
      &quot;boundingPolyConfig&quot;: { # Config for image bounding poly (and bounding box) human labeling task. # Configuration for image bounding box and bounding poly task.
        &quot;instructionMessage&quot;: &quot;A String&quot;, # Optional. Instruction message showed on contributors UI.
        &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
      },
      &quot;polylineConfig&quot;: { # Config for image polyline human labeling task. # Configuration for image polyline task.
        &quot;instructionMessage&quot;: &quot;A String&quot;, # Optional. Instruction message showed on contributors UI.
        &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
      },
      &quot;objectTrackingConfig&quot;: { # Config for video object tracking human labeling task. # Configuration for video object tracking task.
        &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
        &quot;clipLength&quot;: 42, # Videos will be cut to smaller clips to make it easier for labelers to work on. Users can configure is field in seconds, if not set, default value is 20s.
        &quot;overlapLength&quot;: 42, # The overlap length between different video clips. Users can configure is field in seconds, if not set, default value is 0.3s.
      },
    },
    &quot;annotationSource&quot;: &quot;A String&quot;, # Output only. Source of the annotation.
    &quot;exampleCount&quot;: &quot;A String&quot;, # Output only. Number of examples in the annotated dataset.
    &quot;completedExampleCount&quot;: &quot;A String&quot;, # Output only. Number of examples that have annotation in the annotated dataset.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the AnnotatedDataset. It is specified in HumanAnnotationConfig when user starts a labeling task. Maximum of 64 characters.
    &quot;description&quot;: &quot;A String&quot;, # Output only. The description of the AnnotatedDataset. It is specified in HumanAnnotationConfig when user starts a labeling task. Maximum of 10000 characters.
  }</pre>
</div>

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

Args:
  parent: string, Required. Name of the dataset to list annotated datasets, format: projects/{project_id}/datasets/{dataset_id} (required)
  pageToken: string, Optional. A token identifying a page of results for the server to return. Typically obtained by ListAnnotatedDatasetsResponse.next_page_token of the previous [DataLabelingService.ListAnnotatedDatasets] call. Return first page if empty.
  pageSize: integer, Optional. Requested page size. Server may return fewer results than requested. Default value is 100.
  filter: string, Optional. Filter is not supported at this moment.
  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 annotated datasets for a dataset.
    &quot;annotatedDatasets&quot;: [ # The list of annotated datasets to return.
      { # AnnotatedDataset is a set holding annotations for data in a Dataset. Each labeling task will generate an AnnotatedDataset under the Dataset that the task is requested for.
        &quot;name&quot;: &quot;A String&quot;, # Output only. AnnotatedDataset resource name in format of: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/ {annotated_dataset_id}
        &quot;blockingResources&quot;: [ # Output only. The names of any related resources that are blocking changes to the annotated dataset.
          &quot;A String&quot;,
        ],
        &quot;annotationType&quot;: &quot;A String&quot;, # Output only. Type of the annotation. It is specified when starting labeling task.
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time the AnnotatedDataset was created.
        &quot;labelStats&quot;: { # Statistics about annotation specs. # Output only. Per label statistics.
          &quot;exampleCount&quot;: { # Map of each annotation spec&#x27;s example count. Key is the annotation spec name and value is the number of examples for that annotation spec. If the annotated dataset does not have annotation spec, the map will return a pair where the key is empty string and value is the total number of annotations.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;metadata&quot;: { # Metadata on AnnotatedDataset. # Output only. Additional information about AnnotatedDataset.
          &quot;segmentationConfig&quot;: { # Config for image segmentation # Configuration for image segmentation task.
            &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name. format: projects/{project_id}/annotationSpecSets/{annotation_spec_set_id}
            &quot;instructionMessage&quot;: &quot;A String&quot;, # Instruction message showed on labelers UI.
          },
          &quot;videoClassificationConfig&quot;: { # Config for video classification human labeling task. Currently two types of video classification are supported: 1. Assign labels on the entire video. 2. Split the video into multiple video clips based on camera shot, and assign labels on each video clip. # Configuration for video classification task.
            &quot;annotationSpecSetConfigs&quot;: [ # Required. The list of annotation spec set configs. Since watching a video clip takes much longer time than an image, we support label with multiple AnnotationSpecSet at the same time. Labels in each AnnotationSpecSet will be shown in a group to contributors. Contributors can select one or more (depending on whether to allow multi label) from each group.
              { # Annotation spec set with the setting of allowing multi labels or not.
                &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
                &quot;allowMultiLabel&quot;: True or False, # Optional. If allow_multi_label is true, contributors are able to choose multiple labels from one annotation spec set.
              },
            ],
            &quot;applyShotDetection&quot;: True or False, # Optional. Option to apply shot detection on the video.
          },
          &quot;objectDetectionConfig&quot;: { # Config for video object detection human labeling task. Object detection will be conducted on the images extracted from the video, and those objects will be labeled with bounding boxes. User need to specify the number of images to be extracted per second as the extraction frame rate. # Configuration for video object detection task.
            &quot;extractionFrameRate&quot;: 3.14, # Required. Number of frames per second to be extracted from the video.
            &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
          },
          &quot;imageClassificationConfig&quot;: { # Config for image classification human labeling task. # Configuration for image classification task.
            &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
            &quot;allowMultiLabel&quot;: True or False, # Optional. If allow_multi_label is true, contributors are able to choose multiple labels for one image.
            &quot;answerAggregationType&quot;: &quot;A String&quot;, # Optional. The type of how to aggregate answers.
          },
          &quot;textClassificationConfig&quot;: { # Config for text classification human labeling task. # Configuration for text classification task.
            &quot;sentimentConfig&quot;: { # Config for setting up sentiments. # Optional. Configs for sentiment selection.
              &quot;enableLabelSentimentSelection&quot;: True or False, # If set to true, contributors will have the option to select sentiment of the label they selected, to mark it as negative or positive label. Default is false.
            },
            &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
            &quot;allowMultiLabel&quot;: True or False, # Optional. If allow_multi_label is true, contributors are able to choose multiple labels for one text segment.
          },
          &quot;eventConfig&quot;: { # Config for video event human labeling task. # Configuration for video event labeling task.
            &quot;clipLength&quot;: 42, # Videos will be cut to smaller clips to make it easier for labelers to work on. Users can configure is field in seconds, if not set, default value is 60s.
            &quot;overlapLength&quot;: 42, # The overlap length between different video clips. Users can configure is field in seconds, if not set, default value is 1s.
            &quot;annotationSpecSets&quot;: [ # Required. The list of annotation spec set resource name. Similar to video classification, we support selecting event from multiple AnnotationSpecSet at the same time.
              &quot;A String&quot;,
            ],
          },
          &quot;textEntityExtractionConfig&quot;: { # Config for text entity extraction human labeling task. # Configuration for text entity extraction task.
            &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
          },
          &quot;humanAnnotationConfig&quot;: { # Configuration for how human labeling task should be done. # HumanAnnotationConfig used when requesting the human labeling task for this AnnotatedDataset.
            &quot;replicaCount&quot;: 42, # Optional. Replication of questions. Each question will be sent to up to this number of contributors to label. Aggregated answers will be returned. Default is set to 1. For image related labeling, valid values are 1, 3, 5.
            &quot;instruction&quot;: &quot;A String&quot;, # Required. Instruction resource name.
            &quot;questionDuration&quot;: &quot;A String&quot;, # Optional. Maximum duration for contributors to answer a question. Maximum is 3600 seconds. Default is 3600 seconds.
            &quot;annotatedDatasetDescription&quot;: &quot;A String&quot;, # Optional. A human-readable description for AnnotatedDataset. The description can be up to 10000 characters long.
            &quot;labelGroup&quot;: &quot;A String&quot;, # Optional. A human-readable label used to logically group labeling tasks. This string must match the regular expression `[a-zA-Z\\d_-]{0,128}`.
            &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The Language of this question, as a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). Default value is en-US. Only need to set this when task is language related. For example, French text classification.
            &quot;userEmailAddress&quot;: &quot;A String&quot;, # Email of the user who started the labeling task and should be notified by email. If empty no notification will be sent.
            &quot;annotatedDatasetDisplayName&quot;: &quot;A String&quot;, # Required. A human-readable name for AnnotatedDataset defined by users. Maximum of 64 characters .
            &quot;contributorEmails&quot;: [ # Optional. If you want your own labeling contributors to manage and work on this labeling request, you can set these contributors here. We will give them access to the question types in crowdcompute. Note that these emails must be registered in crowdcompute worker UI: https://crowd-compute.appspot.com/
              &quot;A String&quot;,
            ],
          },
          &quot;boundingPolyConfig&quot;: { # Config for image bounding poly (and bounding box) human labeling task. # Configuration for image bounding box and bounding poly task.
            &quot;instructionMessage&quot;: &quot;A String&quot;, # Optional. Instruction message showed on contributors UI.
            &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
          },
          &quot;polylineConfig&quot;: { # Config for image polyline human labeling task. # Configuration for image polyline task.
            &quot;instructionMessage&quot;: &quot;A String&quot;, # Optional. Instruction message showed on contributors UI.
            &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
          },
          &quot;objectTrackingConfig&quot;: { # Config for video object tracking human labeling task. # Configuration for video object tracking task.
            &quot;annotationSpecSet&quot;: &quot;A String&quot;, # Required. Annotation spec set resource name.
            &quot;clipLength&quot;: 42, # Videos will be cut to smaller clips to make it easier for labelers to work on. Users can configure is field in seconds, if not set, default value is 20s.
            &quot;overlapLength&quot;: 42, # The overlap length between different video clips. Users can configure is field in seconds, if not set, default value is 0.3s.
          },
        },
        &quot;annotationSource&quot;: &quot;A String&quot;, # Output only. Source of the annotation.
        &quot;exampleCount&quot;: &quot;A String&quot;, # Output only. Number of examples in the annotated dataset.
        &quot;completedExampleCount&quot;: &quot;A String&quot;, # Output only. Number of examples that have annotation in the annotated dataset.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the AnnotatedDataset. It is specified in HumanAnnotationConfig when user starts a labeling task. Maximum of 64 characters.
        &quot;description&quot;: &quot;A String&quot;, # Output only. The description of the AnnotatedDataset. It is specified in HumanAnnotationConfig when user starts a labeling task. Maximum of 10000 characters.
      },
    ],
    &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>