<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="alertcenter_v1beta1.html">G Suite Alert Center API</a> . <a href="alertcenter_v1beta1.alerts.html">alerts</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="alertcenter_v1beta1.alerts.feedback.html">feedback()</a></code>
</p>
<p class="firstline">Returns the feedback Resource.</p>

<p class="toc_element">
  <code><a href="#delete">delete(alertId, customerId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Marks the specified alert for deletion. An alert that has been marked for</p>
<p class="toc_element">
  <code><a href="#get">get(alertId, customerId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the specified alert. Attempting to get a nonexistent alert returns</p>
<p class="toc_element">
  <code><a href="#list">list(orderBy=None, pageSize=None, pageToken=None, customerId=None, x__xgafv=None, filter=None)</a></code></p>
<p class="firstline">Lists the alerts.</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="#undelete">undelete(alertId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Restores, or "undeletes", an alert that was marked for deletion within the</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(alertId, customerId=None, x__xgafv=None)</code>
  <pre>Marks the specified alert for deletion. An alert that has been marked for
deletion is removed from Alert Center after 30 days.
Marking an alert for deletion has no effect on an alert which has
already been marked for deletion. Attempting to mark a nonexistent alert
for deletion results in a `NOT_FOUND` error.

Args:
  alertId: string, Required. The identifier of the alert to delete. (required)
  customerId: string, Optional. The unique identifier of the G Suite organization account of the
customer the alert is associated with.
Inferred from the caller identity if not provided.
  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(alertId, customerId=None, x__xgafv=None)</code>
  <pre>Gets the specified alert. Attempting to get a nonexistent alert returns
`NOT_FOUND` error.

Args:
  alertId: string, Required. The identifier of the alert to retrieve. (required)
  customerId: string, Optional. The unique identifier of the G Suite organization account of the
customer the alert is associated with.
Inferred from the caller identity if not provided.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An alert affecting a customer.
    "updateTime": "A String", # Output only. The time this alert was last updated.
    "alertId": "A String", # Output only. The unique identifier for the alert.
    "deleted": True or False, # Output only. `True` if this alert is marked for deletion.
    "type": "A String", # Required. The type of the alert.
        # This is output only after alert is created.
        # For a list of available alert types see
        # [G Suite Alert types](/admin-sdk/alertcenter/reference/alert-types).
    "createTime": "A String", # Output only. The time this alert was created.
    "source": "A String", # Required. A unique identifier for the system that reported the alert.
        # This is output only after alert is created.
        #
        # Supported sources are any of the following:
        #
        # * Google Operations
        # * Mobile device management
        # * Gmail phishing
        # * Domain wide takeout
        # * Government attack warning
        # * Google identity
    "startTime": "A String", # Required. The time the event that caused this alert was started or
        # detected.
    "endTime": "A String", # Optional. The time the event that caused this alert ceased being active.
        # If provided, the end time must not be earlier than the start time.
        # If not provided, it indicates an ongoing alert.
    "data": { # Optional. The data associated with this alert, for example
        # google.apps.alertcenter.type.DeviceCompromised.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "customerId": "A String", # Output only. The unique identifier of the Google account of the customer.
    "securityInvestigationToolLink": "A String", # Output only. An optional
        # [Security Investigation Tool](https://support.google.com/a/answer/7575955)
        # query for this alert.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(orderBy=None, pageSize=None, pageToken=None, customerId=None, x__xgafv=None, filter=None)</code>
  <pre>Lists the alerts.

Args:
  orderBy: string, Optional. The sort order of the list results.
If not specified results may be returned in arbitrary order.
You can sort the results in descending order based on the creation
timestamp using `order_by="create_time desc"`.
Currently, supported sorting are `create_time asc`, `create_time desc`,
`update_time desc`
  pageSize: integer, Optional. The requested page size. Server may return fewer items than
requested. If unspecified, server picks an appropriate default.
  pageToken: string, Optional. A token identifying a page of results the server should return.
If empty, a new iteration is started. To continue an iteration, pass in
the value from the previous ListAlertsResponse's
next_page_token field.
  customerId: string, Optional. The unique identifier of the G Suite organization account of the
customer the alerts are associated with.
Inferred from the caller identity if not provided.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  filter: string, Optional. A query string for filtering alert results.
For more details, see [Query
filters](/admin-sdk/alertcenter/guides/query-filters) and [Supported
query filter
fields](/admin-sdk/alertcenter/reference/filter-fields#alerts.list).

Returns:
  An object of the form:

    { # Response message for an alert listing request.
    "nextPageToken": "A String", # The token for the next page. If not empty, indicates that there may be more
        # alerts that match the listing request; this value can be used in a
        # subsequent ListAlertsRequest to get alerts continuing from last result
        # of the current list call.
    "alerts": [ # The list of alerts.
      { # An alert affecting a customer.
        "updateTime": "A String", # Output only. The time this alert was last updated.
        "alertId": "A String", # Output only. The unique identifier for the alert.
        "deleted": True or False, # Output only. `True` if this alert is marked for deletion.
        "type": "A String", # Required. The type of the alert.
            # This is output only after alert is created.
            # For a list of available alert types see
            # [G Suite Alert types](/admin-sdk/alertcenter/reference/alert-types).
        "createTime": "A String", # Output only. The time this alert was created.
        "source": "A String", # Required. A unique identifier for the system that reported the alert.
            # This is output only after alert is created.
            #
            # Supported sources are any of the following:
            #
            # * Google Operations
            # * Mobile device management
            # * Gmail phishing
            # * Domain wide takeout
            # * Government attack warning
            # * Google identity
        "startTime": "A String", # Required. The time the event that caused this alert was started or
            # detected.
        "endTime": "A String", # Optional. The time the event that caused this alert ceased being active.
            # If provided, the end time must not be earlier than the start time.
            # If not provided, it indicates an ongoing alert.
        "data": { # Optional. The data associated with this alert, for example
            # google.apps.alertcenter.type.DeviceCompromised.
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
        "customerId": "A String", # Output only. The unique identifier of the Google account of the customer.
        "securityInvestigationToolLink": "A String", # Output only. An optional
            # [Security Investigation Tool](https://support.google.com/a/answer/7575955)
            # query for this alert.
      },
    ],
  }</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="undelete">undelete(alertId, body, x__xgafv=None)</code>
  <pre>Restores, or "undeletes", an alert that was marked for deletion within the
past 30 days. Attempting to undelete an alert which was marked for deletion
over 30 days ago (which has been removed from the Alert Center database) or
a nonexistent alert returns a `NOT_FOUND` error. Attempting to
undelete an alert which has not been marked for deletion has no effect.

Args:
  alertId: string, Required. The identifier of the alert to undelete. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A request to undelete a specific alert that was marked for deletion.
    "customerId": "A String", # Optional. The unique identifier of the G Suite organization account of the
        # customer the alert is associated with.
        # Inferred from the caller identity if not provided.
  }

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

Returns:
  An object of the form:

    { # An alert affecting a customer.
    "updateTime": "A String", # Output only. The time this alert was last updated.
    "alertId": "A String", # Output only. The unique identifier for the alert.
    "deleted": True or False, # Output only. `True` if this alert is marked for deletion.
    "type": "A String", # Required. The type of the alert.
        # This is output only after alert is created.
        # For a list of available alert types see
        # [G Suite Alert types](/admin-sdk/alertcenter/reference/alert-types).
    "createTime": "A String", # Output only. The time this alert was created.
    "source": "A String", # Required. A unique identifier for the system that reported the alert.
        # This is output only after alert is created.
        #
        # Supported sources are any of the following:
        #
        # * Google Operations
        # * Mobile device management
        # * Gmail phishing
        # * Domain wide takeout
        # * Government attack warning
        # * Google identity
    "startTime": "A String", # Required. The time the event that caused this alert was started or
        # detected.
    "endTime": "A String", # Optional. The time the event that caused this alert ceased being active.
        # If provided, the end time must not be earlier than the start time.
        # If not provided, it indicates an ongoing alert.
    "data": { # Optional. The data associated with this alert, for example
        # google.apps.alertcenter.type.DeviceCompromised.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "customerId": "A String", # Output only. The unique identifier of the Google account of the customer.
    "securityInvestigationToolLink": "A String", # Output only. An optional
        # [Security Investigation Tool](https://support.google.com/a/answer/7575955)
        # query for this alert.
  }</pre>
</div>

</body></html>