<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="healthcare_v1beta1.html">Cloud Healthcare API</a> . <a href="healthcare_v1beta1.projects.html">projects</a> . <a href="healthcare_v1beta1.projects.locations.html">locations</a> . <a href="healthcare_v1beta1.projects.locations.datasets.html">datasets</a> . <a href="healthcare_v1beta1.projects.locations.datasets.annotationStores.html">annotationStores</a> . <a href="healthcare_v1beta1.projects.locations.datasets.annotationStores.annotations.html">annotations</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="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new Annotation record. It is valid to create Annotation objects for the same source more than once since a unique ID is assigned to each record by this service.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an Annotation or returns NOT_FOUND if it does not exist.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets an Annotation.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the Annotations in the given Annotation store for a source resource.</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>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the Annotation.</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="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a new Annotation record. It is valid to create Annotation objects for the same source more than once since a unique ID is assigned to each record by this service.

Args:
  parent: string, The name of the Annotation store this annotation belongs to. For example, `projects/my-project/locations/us-central1/datasets/mydataset/annotationStores/myannotationstore`. (required)
  body: object, The request body.
    The object takes the form of:

{ # An annotation record.
  &quot;annotationSource&quot;: { # AnnotationSource holds the source information of the annotation. # Details of the source.
    &quot;cloudHealthcareSource&quot;: { # Cloud Healthcare API resource. # Cloud Healthcare API resource.
      &quot;name&quot;: &quot;A String&quot;, # Full path of a Cloud Healthcare API resource.
    },
  },
  &quot;customData&quot;: { # Additional information for this annotation record, such as annotator and verifier information or study campaign.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;imageAnnotation&quot;: { # Image annotation. # Annotations for images. For example, bounding polygons.
    &quot;boundingPolys&quot;: [ # The list of polygons outlining the sensitive regions in the image.
      { # A bounding polygon for the detected image annotation.
        &quot;label&quot;: &quot;A String&quot;, # A description of this polygon.
        &quot;vertices&quot;: [ # List of the vertices of this polygon.
          { # A 2D coordinate in an image. The origin is the top-left.
            &quot;x&quot;: 3.14, # X coordinate.
            &quot;y&quot;: 3.14, # Y coordinate.
          },
        ],
      },
    ],
    &quot;frameIndex&quot;: 42, # 0-based index of the image frame. For example, an image frame in a DICOM instance.
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name of the Annotation, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`.
  &quot;resourceAnnotation&quot;: { # Resource level annotation. # Annotations for resource. For example, classification tags.
    &quot;label&quot;: &quot;A String&quot;, # A description of the annotation record.
  },
  &quot;textAnnotation&quot;: { # A TextAnnotation specifies a text range that includes sensitive information. # Annotations for sensitive texts. For example, a range that describes the location of sensitive text.
    &quot;details&quot;: { # Maps from a resource slice. For example, FHIR resource field path to a set of sensitive text findings. For example, Appointment.Narrative text1 --&gt; {findings_1, findings_2, findings_3}
      &quot;a_key&quot;: { # Contains multiple sensitive information findings for each resource slice.
        &quot;findings&quot;: [
          {
            &quot;end&quot;: &quot;A String&quot;, # Zero-based ending index of the found text, exclusively.
            &quot;infoType&quot;: &quot;A String&quot;, # The type of information stored in this text range. For example, HumanName, BirthDate, or Address.
            &quot;quote&quot;: &quot;A String&quot;, # The snippet of the sensitive text. This field is only populated during deidentification if `store_quote` is set to true in DeidentifyConfig.
            &quot;start&quot;: &quot;A String&quot;, # Zero-based starting index of the found text, inclusively.
          },
        ],
      },
    },
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An annotation record.
  &quot;annotationSource&quot;: { # AnnotationSource holds the source information of the annotation. # Details of the source.
    &quot;cloudHealthcareSource&quot;: { # Cloud Healthcare API resource. # Cloud Healthcare API resource.
      &quot;name&quot;: &quot;A String&quot;, # Full path of a Cloud Healthcare API resource.
    },
  },
  &quot;customData&quot;: { # Additional information for this annotation record, such as annotator and verifier information or study campaign.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;imageAnnotation&quot;: { # Image annotation. # Annotations for images. For example, bounding polygons.
    &quot;boundingPolys&quot;: [ # The list of polygons outlining the sensitive regions in the image.
      { # A bounding polygon for the detected image annotation.
        &quot;label&quot;: &quot;A String&quot;, # A description of this polygon.
        &quot;vertices&quot;: [ # List of the vertices of this polygon.
          { # A 2D coordinate in an image. The origin is the top-left.
            &quot;x&quot;: 3.14, # X coordinate.
            &quot;y&quot;: 3.14, # Y coordinate.
          },
        ],
      },
    ],
    &quot;frameIndex&quot;: 42, # 0-based index of the image frame. For example, an image frame in a DICOM instance.
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name of the Annotation, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`.
  &quot;resourceAnnotation&quot;: { # Resource level annotation. # Annotations for resource. For example, classification tags.
    &quot;label&quot;: &quot;A String&quot;, # A description of the annotation record.
  },
  &quot;textAnnotation&quot;: { # A TextAnnotation specifies a text range that includes sensitive information. # Annotations for sensitive texts. For example, a range that describes the location of sensitive text.
    &quot;details&quot;: { # Maps from a resource slice. For example, FHIR resource field path to a set of sensitive text findings. For example, Appointment.Narrative text1 --&gt; {findings_1, findings_2, findings_3}
      &quot;a_key&quot;: { # Contains multiple sensitive information findings for each resource slice.
        &quot;findings&quot;: [
          {
            &quot;end&quot;: &quot;A String&quot;, # Zero-based ending index of the found text, exclusively.
            &quot;infoType&quot;: &quot;A String&quot;, # The type of information stored in this text range. For example, HumanName, BirthDate, or Address.
            &quot;quote&quot;: &quot;A String&quot;, # The snippet of the sensitive text. This field is only populated during deidentification if `store_quote` is set to true in DeidentifyConfig.
            &quot;start&quot;: &quot;A String&quot;, # Zero-based starting index of the found text, inclusively.
          },
        ],
      },
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes an Annotation or returns NOT_FOUND if it does not exist.

Args:
  name: string, The resource name of the Annotation to delete. (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 Annotation.

Args:
  name: string, The resource name of the Annotation to retrieve. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An annotation record.
  &quot;annotationSource&quot;: { # AnnotationSource holds the source information of the annotation. # Details of the source.
    &quot;cloudHealthcareSource&quot;: { # Cloud Healthcare API resource. # Cloud Healthcare API resource.
      &quot;name&quot;: &quot;A String&quot;, # Full path of a Cloud Healthcare API resource.
    },
  },
  &quot;customData&quot;: { # Additional information for this annotation record, such as annotator and verifier information or study campaign.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;imageAnnotation&quot;: { # Image annotation. # Annotations for images. For example, bounding polygons.
    &quot;boundingPolys&quot;: [ # The list of polygons outlining the sensitive regions in the image.
      { # A bounding polygon for the detected image annotation.
        &quot;label&quot;: &quot;A String&quot;, # A description of this polygon.
        &quot;vertices&quot;: [ # List of the vertices of this polygon.
          { # A 2D coordinate in an image. The origin is the top-left.
            &quot;x&quot;: 3.14, # X coordinate.
            &quot;y&quot;: 3.14, # Y coordinate.
          },
        ],
      },
    ],
    &quot;frameIndex&quot;: 42, # 0-based index of the image frame. For example, an image frame in a DICOM instance.
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name of the Annotation, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`.
  &quot;resourceAnnotation&quot;: { # Resource level annotation. # Annotations for resource. For example, classification tags.
    &quot;label&quot;: &quot;A String&quot;, # A description of the annotation record.
  },
  &quot;textAnnotation&quot;: { # A TextAnnotation specifies a text range that includes sensitive information. # Annotations for sensitive texts. For example, a range that describes the location of sensitive text.
    &quot;details&quot;: { # Maps from a resource slice. For example, FHIR resource field path to a set of sensitive text findings. For example, Appointment.Narrative text1 --&gt; {findings_1, findings_2, findings_3}
      &quot;a_key&quot;: { # Contains multiple sensitive information findings for each resource slice.
        &quot;findings&quot;: [
          {
            &quot;end&quot;: &quot;A String&quot;, # Zero-based ending index of the found text, exclusively.
            &quot;infoType&quot;: &quot;A String&quot;, # The type of information stored in this text range. For example, HumanName, BirthDate, or Address.
            &quot;quote&quot;: &quot;A String&quot;, # The snippet of the sensitive text. This field is only populated during deidentification if `store_quote` is set to true in DeidentifyConfig.
            &quot;start&quot;: &quot;A String&quot;, # Zero-based starting index of the found text, inclusively.
          },
        ],
      },
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, view=None, x__xgafv=None)</code>
  <pre>Lists the Annotations in the given Annotation store for a source resource.

Args:
  parent: string, Name of the Annotation store to retrieve Annotations from. (required)
  filter: string, Restricts Annotations returned to those matching a filter. Functions available for filtering are: - `matches(&quot;annotation_source.cloud_healthcare_source.name&quot;, substring)`. Filter on `cloud_healthcare_source.name`. For example: `matches(&quot;annotation_source.cloud_healthcare_source.name&quot;, &quot;some source&quot;)`. - `matches(&quot;annotation&quot;, substring)`. Filter on all fields of annotation. For example: `matches(&quot;annotation&quot;, &quot;some-content&quot;)`. - `type(&quot;text&quot;)`, `type(&quot;image&quot;)`, `type(&quot;resource&quot;)`. Filter on the type of annotation `data`.
  pageSize: integer, Limit on the number of Annotations to return in a single response. If not specified, 100 is used. May not be larger than 1000.
  pageToken: string, The next_page_token value returned from the previous List request, if any.
  view: string, Controls which fields are populated in the response.
    Allowed values
      ANNOTATION_VIEW_UNSPECIFIED - Same as BASIC.
      ANNOTATION_VIEW_BASIC - Only `name`, `annotation_source` and `custom_data` fields are populated.
      ANNOTATION_VIEW_FULL - All fields are populated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Lists the Annotations in the specified Annotation store.
  &quot;annotations&quot;: [ # The returned Annotations. Won&#x27;t be more values than the value of page_size in the request. See `AnnotationView` in the request for populated fields.
    { # An annotation record.
      &quot;annotationSource&quot;: { # AnnotationSource holds the source information of the annotation. # Details of the source.
        &quot;cloudHealthcareSource&quot;: { # Cloud Healthcare API resource. # Cloud Healthcare API resource.
          &quot;name&quot;: &quot;A String&quot;, # Full path of a Cloud Healthcare API resource.
        },
      },
      &quot;customData&quot;: { # Additional information for this annotation record, such as annotator and verifier information or study campaign.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;imageAnnotation&quot;: { # Image annotation. # Annotations for images. For example, bounding polygons.
        &quot;boundingPolys&quot;: [ # The list of polygons outlining the sensitive regions in the image.
          { # A bounding polygon for the detected image annotation.
            &quot;label&quot;: &quot;A String&quot;, # A description of this polygon.
            &quot;vertices&quot;: [ # List of the vertices of this polygon.
              { # A 2D coordinate in an image. The origin is the top-left.
                &quot;x&quot;: 3.14, # X coordinate.
                &quot;y&quot;: 3.14, # Y coordinate.
              },
            ],
          },
        ],
        &quot;frameIndex&quot;: 42, # 0-based index of the image frame. For example, an image frame in a DICOM instance.
      },
      &quot;name&quot;: &quot;A String&quot;, # Resource name of the Annotation, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`.
      &quot;resourceAnnotation&quot;: { # Resource level annotation. # Annotations for resource. For example, classification tags.
        &quot;label&quot;: &quot;A String&quot;, # A description of the annotation record.
      },
      &quot;textAnnotation&quot;: { # A TextAnnotation specifies a text range that includes sensitive information. # Annotations for sensitive texts. For example, a range that describes the location of sensitive text.
        &quot;details&quot;: { # Maps from a resource slice. For example, FHIR resource field path to a set of sensitive text findings. For example, Appointment.Narrative text1 --&gt; {findings_1, findings_2, findings_3}
          &quot;a_key&quot;: { # Contains multiple sensitive information findings for each resource slice.
            &quot;findings&quot;: [
              {
                &quot;end&quot;: &quot;A String&quot;, # Zero-based ending index of the found text, exclusively.
                &quot;infoType&quot;: &quot;A String&quot;, # The type of information stored in this text range. For example, HumanName, BirthDate, or Address.
                &quot;quote&quot;: &quot;A String&quot;, # The snippet of the sensitive text. This field is only populated during deidentification if `store_quote` is set to true in DeidentifyConfig.
                &quot;start&quot;: &quot;A String&quot;, # Zero-based starting index of the found text, inclusively.
              },
            ],
          },
        },
      },
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results or empty if there are no more results in the list.
}</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>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the Annotation.

Args:
  name: string, Resource name of the Annotation, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # An annotation record.
  &quot;annotationSource&quot;: { # AnnotationSource holds the source information of the annotation. # Details of the source.
    &quot;cloudHealthcareSource&quot;: { # Cloud Healthcare API resource. # Cloud Healthcare API resource.
      &quot;name&quot;: &quot;A String&quot;, # Full path of a Cloud Healthcare API resource.
    },
  },
  &quot;customData&quot;: { # Additional information for this annotation record, such as annotator and verifier information or study campaign.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;imageAnnotation&quot;: { # Image annotation. # Annotations for images. For example, bounding polygons.
    &quot;boundingPolys&quot;: [ # The list of polygons outlining the sensitive regions in the image.
      { # A bounding polygon for the detected image annotation.
        &quot;label&quot;: &quot;A String&quot;, # A description of this polygon.
        &quot;vertices&quot;: [ # List of the vertices of this polygon.
          { # A 2D coordinate in an image. The origin is the top-left.
            &quot;x&quot;: 3.14, # X coordinate.
            &quot;y&quot;: 3.14, # Y coordinate.
          },
        ],
      },
    ],
    &quot;frameIndex&quot;: 42, # 0-based index of the image frame. For example, an image frame in a DICOM instance.
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name of the Annotation, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`.
  &quot;resourceAnnotation&quot;: { # Resource level annotation. # Annotations for resource. For example, classification tags.
    &quot;label&quot;: &quot;A String&quot;, # A description of the annotation record.
  },
  &quot;textAnnotation&quot;: { # A TextAnnotation specifies a text range that includes sensitive information. # Annotations for sensitive texts. For example, a range that describes the location of sensitive text.
    &quot;details&quot;: { # Maps from a resource slice. For example, FHIR resource field path to a set of sensitive text findings. For example, Appointment.Narrative text1 --&gt; {findings_1, findings_2, findings_3}
      &quot;a_key&quot;: { # Contains multiple sensitive information findings for each resource slice.
        &quot;findings&quot;: [
          {
            &quot;end&quot;: &quot;A String&quot;, # Zero-based ending index of the found text, exclusively.
            &quot;infoType&quot;: &quot;A String&quot;, # The type of information stored in this text range. For example, HumanName, BirthDate, or Address.
            &quot;quote&quot;: &quot;A String&quot;, # The snippet of the sensitive text. This field is only populated during deidentification if `store_quote` is set to true in DeidentifyConfig.
            &quot;start&quot;: &quot;A String&quot;, # Zero-based starting index of the found text, inclusively.
          },
        ],
      },
    },
  },
}

  updateMask: string, The update mask applies to the resource. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An annotation record.
  &quot;annotationSource&quot;: { # AnnotationSource holds the source information of the annotation. # Details of the source.
    &quot;cloudHealthcareSource&quot;: { # Cloud Healthcare API resource. # Cloud Healthcare API resource.
      &quot;name&quot;: &quot;A String&quot;, # Full path of a Cloud Healthcare API resource.
    },
  },
  &quot;customData&quot;: { # Additional information for this annotation record, such as annotator and verifier information or study campaign.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;imageAnnotation&quot;: { # Image annotation. # Annotations for images. For example, bounding polygons.
    &quot;boundingPolys&quot;: [ # The list of polygons outlining the sensitive regions in the image.
      { # A bounding polygon for the detected image annotation.
        &quot;label&quot;: &quot;A String&quot;, # A description of this polygon.
        &quot;vertices&quot;: [ # List of the vertices of this polygon.
          { # A 2D coordinate in an image. The origin is the top-left.
            &quot;x&quot;: 3.14, # X coordinate.
            &quot;y&quot;: 3.14, # Y coordinate.
          },
        ],
      },
    ],
    &quot;frameIndex&quot;: 42, # 0-based index of the image frame. For example, an image frame in a DICOM instance.
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name of the Annotation, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`.
  &quot;resourceAnnotation&quot;: { # Resource level annotation. # Annotations for resource. For example, classification tags.
    &quot;label&quot;: &quot;A String&quot;, # A description of the annotation record.
  },
  &quot;textAnnotation&quot;: { # A TextAnnotation specifies a text range that includes sensitive information. # Annotations for sensitive texts. For example, a range that describes the location of sensitive text.
    &quot;details&quot;: { # Maps from a resource slice. For example, FHIR resource field path to a set of sensitive text findings. For example, Appointment.Narrative text1 --&gt; {findings_1, findings_2, findings_3}
      &quot;a_key&quot;: { # Contains multiple sensitive information findings for each resource slice.
        &quot;findings&quot;: [
          {
            &quot;end&quot;: &quot;A String&quot;, # Zero-based ending index of the found text, exclusively.
            &quot;infoType&quot;: &quot;A String&quot;, # The type of information stored in this text range. For example, HumanName, BirthDate, or Address.
            &quot;quote&quot;: &quot;A String&quot;, # The snippet of the sensitive text. This field is only populated during deidentification if `store_quote` is set to true in DeidentifyConfig.
            &quot;start&quot;: &quot;A String&quot;, # Zero-based starting index of the found text, inclusively.
          },
        ],
      },
    },
  },
}</pre>
</div>

</body></html>