<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_v1alpha2.html">Cloud Healthcare API</a> . <a href="healthcare_v1alpha2.projects.html">projects</a> . <a href="healthcare_v1alpha2.projects.locations.html">locations</a> . <a href="healthcare_v1alpha2.projects.locations.datasets.html">datasets</a> . <a href="healthcare_v1alpha2.projects.locations.datasets.annotationStores.html">annotationStores</a> . <a href="healthcare_v1alpha2.projects.locations.datasets.annotationStores.annotations.html">annotations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(parent, body, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new Annotation record. It is</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</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, pageToken=None, x__xgafv=None, pageSize=None, filter=None)</a></code></p>
<p class="firstline">Lists the Annotations in the given</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, 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="create">create(parent, body, 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. (required)
    The object takes the form of:

{ # An annotation record.
    "annotationSource": { # AnnotationSource holds the source information of the annotation. # Details of the source.
      "cloudHealthcareSource": { # Cloud Healthcare API resource. # Cloud Healthcare API resource.
        "name": "A String", # Full path of a Cloud Healthcare API resource.
      },
    },
    "resourceAnnotation": { # Resource level annotation. # Annotations for resource, e.g., classification tags.
      "label": "A String",
    },
    "textAnnotation": { # A TextAnnotation specifies a text range that includes sensitive information. # Annotations for sentitive texts, e.g., range of such texts.
      "details": { # Maps from a resource slice (e.g. FHIR resource field path) to a set of
          # sensitive text findings. For example,
          # Appointment.Narrative text1 --> {findings_1, findings_2, findings_3}
        "a_key": { # Contains multiple sensitive information findings for each resource slice.
          "findings": [
            {
              "start": "A String", # Zero-based starting index of the found text, inclusively.
              "end": "A String", # Zero-based ending index of the found text, exclusively.
              "infoType": "A String", # The type of information stored in this text range (e.g. HumanName,
                  # BirthDate, Address, etc.)
            },
          ],
        },
      },
    },
    "name": "A String", # Output only. Resource name of the Annotation, of the form
        # `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`.
    "imageAnnotation": { # Image annotation. # Annnotations for images, e.g., bounding polygons.
      "boundingPolys": [ # The list of polygons outlining the sensitive regions in the image.
        { # A bounding polygon for the detected image annotation.
          "vertices": [
            { # A 2D coordinate in an image. The origin is the top-left.
              "y": 3.14, # Y coordinate.
              "x": 3.14, # X coordinate.
            },
          ],
          "label": "A String",
        },
      ],
    },
  }

  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.
      "annotationSource": { # AnnotationSource holds the source information of the annotation. # Details of the source.
        "cloudHealthcareSource": { # Cloud Healthcare API resource. # Cloud Healthcare API resource.
          "name": "A String", # Full path of a Cloud Healthcare API resource.
        },
      },
      "resourceAnnotation": { # Resource level annotation. # Annotations for resource, e.g., classification tags.
        "label": "A String",
      },
      "textAnnotation": { # A TextAnnotation specifies a text range that includes sensitive information. # Annotations for sentitive texts, e.g., range of such texts.
        "details": { # Maps from a resource slice (e.g. FHIR resource field path) to a set of
            # sensitive text findings. For example,
            # Appointment.Narrative text1 --> {findings_1, findings_2, findings_3}
          "a_key": { # Contains multiple sensitive information findings for each resource slice.
            "findings": [
              {
                "start": "A String", # Zero-based starting index of the found text, inclusively.
                "end": "A String", # Zero-based ending index of the found text, exclusively.
                "infoType": "A String", # The type of information stored in this text range (e.g. HumanName,
                    # BirthDate, Address, etc.)
              },
            ],
          },
        },
      },
      "name": "A String", # Output only. Resource name of the Annotation, of the form
          # `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`.
      "imageAnnotation": { # Image annotation. # Annnotations for images, e.g., bounding polygons.
        "boundingPolys": [ # The list of polygons outlining the sensitive regions in the image.
          { # A bounding polygon for the detected image annotation.
            "vertices": [
              { # A 2D coordinate in an image. The origin is the top-left.
                "y": 3.14, # Y coordinate.
                "x": 3.14, # X coordinate.
              },
            ],
            "label": "A String",
          },
        ],
      },
    }</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.
      "annotationSource": { # AnnotationSource holds the source information of the annotation. # Details of the source.
        "cloudHealthcareSource": { # Cloud Healthcare API resource. # Cloud Healthcare API resource.
          "name": "A String", # Full path of a Cloud Healthcare API resource.
        },
      },
      "resourceAnnotation": { # Resource level annotation. # Annotations for resource, e.g., classification tags.
        "label": "A String",
      },
      "textAnnotation": { # A TextAnnotation specifies a text range that includes sensitive information. # Annotations for sentitive texts, e.g., range of such texts.
        "details": { # Maps from a resource slice (e.g. FHIR resource field path) to a set of
            # sensitive text findings. For example,
            # Appointment.Narrative text1 --> {findings_1, findings_2, findings_3}
          "a_key": { # Contains multiple sensitive information findings for each resource slice.
            "findings": [
              {
                "start": "A String", # Zero-based starting index of the found text, inclusively.
                "end": "A String", # Zero-based ending index of the found text, exclusively.
                "infoType": "A String", # The type of information stored in this text range (e.g. HumanName,
                    # BirthDate, Address, etc.)
              },
            ],
          },
        },
      },
      "name": "A String", # Output only. Resource name of the Annotation, of the form
          # `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`.
      "imageAnnotation": { # Image annotation. # Annnotations for images, e.g., bounding polygons.
        "boundingPolys": [ # The list of polygons outlining the sensitive regions in the image.
          { # A bounding polygon for the detected image annotation.
            "vertices": [
              { # A 2D coordinate in an image. The origin is the top-left.
                "y": 3.14, # Y coordinate.
                "x": 3.14, # X coordinate.
              },
            ],
            "label": "A String",
          },
        ],
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageToken=None, x__xgafv=None, pageSize=None, filter=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)
  pageToken: string, The next_page_token value returned from the previous List request, if any.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  pageSize: integer, Limit on the number of Annotations to return in a single response.
If zero the default page size of 100 is used.
  filter: string, Restricts Annotations returned to those matching a filter. Syntax:
https://cloud.google.com/appengine/docs/standard/python/search/query_strings
Fields/functions available for filtering are:
- source_version

Returns:
  An object of the form:

    { # Lists the Annotations in the specified
      # Annotation store.
    "nextPageToken": "A String", # Token to retrieve the next page of results or empty if there are no more
        # results in the list.
    "annotations": [ # The returned Annotations names. Won't be more values than the value of
        # page_size in the request.
      "A String",
    ],
  }</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 'execute()' 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, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the Annotation.

Args:
  name: string, Output only. 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. (required)
    The object takes the form of:

{ # An annotation record.
    "annotationSource": { # AnnotationSource holds the source information of the annotation. # Details of the source.
      "cloudHealthcareSource": { # Cloud Healthcare API resource. # Cloud Healthcare API resource.
        "name": "A String", # Full path of a Cloud Healthcare API resource.
      },
    },
    "resourceAnnotation": { # Resource level annotation. # Annotations for resource, e.g., classification tags.
      "label": "A String",
    },
    "textAnnotation": { # A TextAnnotation specifies a text range that includes sensitive information. # Annotations for sentitive texts, e.g., range of such texts.
      "details": { # Maps from a resource slice (e.g. FHIR resource field path) to a set of
          # sensitive text findings. For example,
          # Appointment.Narrative text1 --> {findings_1, findings_2, findings_3}
        "a_key": { # Contains multiple sensitive information findings for each resource slice.
          "findings": [
            {
              "start": "A String", # Zero-based starting index of the found text, inclusively.
              "end": "A String", # Zero-based ending index of the found text, exclusively.
              "infoType": "A String", # The type of information stored in this text range (e.g. HumanName,
                  # BirthDate, Address, etc.)
            },
          ],
        },
      },
    },
    "name": "A String", # Output only. Resource name of the Annotation, of the form
        # `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`.
    "imageAnnotation": { # Image annotation. # Annnotations for images, e.g., bounding polygons.
      "boundingPolys": [ # The list of polygons outlining the sensitive regions in the image.
        { # A bounding polygon for the detected image annotation.
          "vertices": [
            { # A 2D coordinate in an image. The origin is the top-left.
              "y": 3.14, # Y coordinate.
              "x": 3.14, # X coordinate.
            },
          ],
          "label": "A String",
        },
      ],
    },
  }

  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.
      "annotationSource": { # AnnotationSource holds the source information of the annotation. # Details of the source.
        "cloudHealthcareSource": { # Cloud Healthcare API resource. # Cloud Healthcare API resource.
          "name": "A String", # Full path of a Cloud Healthcare API resource.
        },
      },
      "resourceAnnotation": { # Resource level annotation. # Annotations for resource, e.g., classification tags.
        "label": "A String",
      },
      "textAnnotation": { # A TextAnnotation specifies a text range that includes sensitive information. # Annotations for sentitive texts, e.g., range of such texts.
        "details": { # Maps from a resource slice (e.g. FHIR resource field path) to a set of
            # sensitive text findings. For example,
            # Appointment.Narrative text1 --> {findings_1, findings_2, findings_3}
          "a_key": { # Contains multiple sensitive information findings for each resource slice.
            "findings": [
              {
                "start": "A String", # Zero-based starting index of the found text, inclusively.
                "end": "A String", # Zero-based ending index of the found text, exclusively.
                "infoType": "A String", # The type of information stored in this text range (e.g. HumanName,
                    # BirthDate, Address, etc.)
              },
            ],
          },
        },
      },
      "name": "A String", # Output only. Resource name of the Annotation, of the form
          # `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`.
      "imageAnnotation": { # Image annotation. # Annnotations for images, e.g., bounding polygons.
        "boundingPolys": [ # The list of polygons outlining the sensitive regions in the image.
          { # A bounding polygon for the detected image annotation.
            "vertices": [
              { # A 2D coordinate in an image. The origin is the top-left.
                "y": 3.14, # Y coordinate.
                "x": 3.14, # X coordinate.
              },
            ],
            "label": "A String",
          },
        ],
      },
    }</pre>
</div>

</body></html>