<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="displayvideo_v1.html">Display & Video 360 API</a> . <a href="displayvideo_v1.advertisers.html">advertisers</a> . <a href="displayvideo_v1.advertisers.manualTriggers.html">manualTriggers</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#activate">activate(advertiserId, triggerId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Activates a manual trigger. Each activation of the manual trigger must be at least 5 minutes apart, otherwise an error will be returned.</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="#create">create(advertiserId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new manual trigger. Returns the newly created manual trigger if successful.</p>
<p class="toc_element">
  <code><a href="#deactivate">deactivate(advertiserId, triggerId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deactivates a manual trigger.</p>
<p class="toc_element">
  <code><a href="#get">get(advertiserId, triggerId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a manual trigger.</p>
<p class="toc_element">
  <code><a href="#list">list(advertiserId, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists manual triggers that are accessible to the current user for a given advertiser ID. The order is defined by the order_by parameter. A single advertiser_id is required.</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(advertiserId, triggerId, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a manual trigger. Returns the updated manual trigger if successful.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="activate">activate(advertiserId, triggerId, body=None, x__xgafv=None)</code>
  <pre>Activates a manual trigger. Each activation of the manual trigger must be at least 5 minutes apart, otherwise an error will be returned.

Args:
  advertiserId: string, Required. The ID of the advertiser that the manual trigger belongs. (required)
  triggerId: string, Required. The ID of the manual trigger to activate. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for ManualTriggerService.ActivateManualTrigger.
}

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

Returns:
  An object of the form:

    { # A single manual trigger in Display &amp; Video 360.
  &quot;activationDurationMinutes&quot;: &quot;A String&quot;, # Required. The maximum duration of each activation in minutes. Must be between 1 and 360 inclusive. After this duration, the trigger will be automatically deactivated.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the advertiser that the manual trigger belongs to.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the manual trigger. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;latestActivationTime&quot;: &quot;A String&quot;, # Output only. The timestamp of the trigger&#x27;s latest activation.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the manual trigger.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the manual trigger. Will be set to the `INACTIVE` state upon creation.
  &quot;triggerId&quot;: &quot;A String&quot;, # Output only. The unique ID of the manual trigger.
}</pre>
</div>

<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(advertiserId, body=None, x__xgafv=None)</code>
  <pre>Creates a new manual trigger. Returns the newly created manual trigger if successful.

Args:
  advertiserId: string, Required. Immutable. The unique ID of the advertiser that the manual trigger belongs to. (required)
  body: object, The request body.
    The object takes the form of:

{ # A single manual trigger in Display &amp; Video 360.
  &quot;activationDurationMinutes&quot;: &quot;A String&quot;, # Required. The maximum duration of each activation in minutes. Must be between 1 and 360 inclusive. After this duration, the trigger will be automatically deactivated.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the advertiser that the manual trigger belongs to.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the manual trigger. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;latestActivationTime&quot;: &quot;A String&quot;, # Output only. The timestamp of the trigger&#x27;s latest activation.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the manual trigger.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the manual trigger. Will be set to the `INACTIVE` state upon creation.
  &quot;triggerId&quot;: &quot;A String&quot;, # Output only. The unique ID of the manual trigger.
}

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

Returns:
  An object of the form:

    { # A single manual trigger in Display &amp; Video 360.
  &quot;activationDurationMinutes&quot;: &quot;A String&quot;, # Required. The maximum duration of each activation in minutes. Must be between 1 and 360 inclusive. After this duration, the trigger will be automatically deactivated.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the advertiser that the manual trigger belongs to.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the manual trigger. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;latestActivationTime&quot;: &quot;A String&quot;, # Output only. The timestamp of the trigger&#x27;s latest activation.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the manual trigger.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the manual trigger. Will be set to the `INACTIVE` state upon creation.
  &quot;triggerId&quot;: &quot;A String&quot;, # Output only. The unique ID of the manual trigger.
}</pre>
</div>

<div class="method">
    <code class="details" id="deactivate">deactivate(advertiserId, triggerId, body=None, x__xgafv=None)</code>
  <pre>Deactivates a manual trigger.

Args:
  advertiserId: string, Required. The ID of the advertiser that the manual trigger belongs. (required)
  triggerId: string, Required. The ID of the manual trigger to deactivate. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for ManualTriggerService.DeactivateManualTrigger.
}

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

Returns:
  An object of the form:

    { # A single manual trigger in Display &amp; Video 360.
  &quot;activationDurationMinutes&quot;: &quot;A String&quot;, # Required. The maximum duration of each activation in minutes. Must be between 1 and 360 inclusive. After this duration, the trigger will be automatically deactivated.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the advertiser that the manual trigger belongs to.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the manual trigger. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;latestActivationTime&quot;: &quot;A String&quot;, # Output only. The timestamp of the trigger&#x27;s latest activation.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the manual trigger.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the manual trigger. Will be set to the `INACTIVE` state upon creation.
  &quot;triggerId&quot;: &quot;A String&quot;, # Output only. The unique ID of the manual trigger.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(advertiserId, triggerId, x__xgafv=None)</code>
  <pre>Gets a manual trigger.

Args:
  advertiserId: string, Required. The ID of the advertiser this manual trigger belongs to. (required)
  triggerId: string, Required. The ID of the manual trigger to fetch. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A single manual trigger in Display &amp; Video 360.
  &quot;activationDurationMinutes&quot;: &quot;A String&quot;, # Required. The maximum duration of each activation in minutes. Must be between 1 and 360 inclusive. After this duration, the trigger will be automatically deactivated.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the advertiser that the manual trigger belongs to.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the manual trigger. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;latestActivationTime&quot;: &quot;A String&quot;, # Output only. The timestamp of the trigger&#x27;s latest activation.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the manual trigger.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the manual trigger. Will be set to the `INACTIVE` state upon creation.
  &quot;triggerId&quot;: &quot;A String&quot;, # Output only. The unique ID of the manual trigger.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(advertiserId, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists manual triggers that are accessible to the current user for a given advertiser ID. The order is defined by the order_by parameter. A single advertiser_id is required.

Args:
  advertiserId: string, Required. The ID of the advertiser that the fetched manual triggers belong to. (required)
  filter: string, Allows filtering by manual trigger properties. Supported syntax: * Filter expressions are made up of one or more restrictions. * Restrictions can be combined by `AND` or `OR` logical operators. A sequence of restrictions implicitly uses `AND`. * A restriction has the form of `{field} {operator} {value}`. * The operator must be `EQUALS (=)`. * Supported fields: - `displayName` - `state` Examples: * All active manual triggers under an advertiser: `state=&quot;ACTIVE&quot;` The length of this field should be no more than 500 characters.
  orderBy: string, Field by which to sort the list. Acceptable values are: * `displayName` (default) * `state` The default sorting order is ascending. To specify descending order for a field, a suffix &quot;desc&quot; should be added to the field name. For example, `displayName desc`.
  pageSize: integer, Requested page size. Must be between `1` and `100`. If unspecified will default to `100`.
  pageToken: string, A token identifying a page of results the server should return. Typically, this is the value of next_page_token returned from the previous call to `ListManualTriggers` method. If not specified, the first page of results will be returned.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;manualTriggers&quot;: [ # The list of manual triggers. This list will be absent if empty.
    { # A single manual trigger in Display &amp; Video 360.
      &quot;activationDurationMinutes&quot;: &quot;A String&quot;, # Required. The maximum duration of each activation in minutes. Must be between 1 and 360 inclusive. After this duration, the trigger will be automatically deactivated.
      &quot;advertiserId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the advertiser that the manual trigger belongs to.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the manual trigger. Must be UTF-8 encoded with a maximum size of 240 bytes.
      &quot;latestActivationTime&quot;: &quot;A String&quot;, # Output only. The timestamp of the trigger&#x27;s latest activation.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the manual trigger.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the manual trigger. Will be set to the `INACTIVE` state upon creation.
      &quot;triggerId&quot;: &quot;A String&quot;, # Output only. The unique ID of the manual trigger.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Pass this value in the page_token field in the subsequent call to `ListManualTriggers` method to retrieve the 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>

<div class="method">
    <code class="details" id="patch">patch(advertiserId, triggerId, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a manual trigger. Returns the updated manual trigger if successful.

Args:
  advertiserId: string, Required. Immutable. The unique ID of the advertiser that the manual trigger belongs to. (required)
  triggerId: string, Output only. The unique ID of the manual trigger. (required)
  body: object, The request body.
    The object takes the form of:

{ # A single manual trigger in Display &amp; Video 360.
  &quot;activationDurationMinutes&quot;: &quot;A String&quot;, # Required. The maximum duration of each activation in minutes. Must be between 1 and 360 inclusive. After this duration, the trigger will be automatically deactivated.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the advertiser that the manual trigger belongs to.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the manual trigger. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;latestActivationTime&quot;: &quot;A String&quot;, # Output only. The timestamp of the trigger&#x27;s latest activation.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the manual trigger.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the manual trigger. Will be set to the `INACTIVE` state upon creation.
  &quot;triggerId&quot;: &quot;A String&quot;, # Output only. The unique ID of the manual trigger.
}

  updateMask: string, Required. The mask to control which fields to update.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A single manual trigger in Display &amp; Video 360.
  &quot;activationDurationMinutes&quot;: &quot;A String&quot;, # Required. The maximum duration of each activation in minutes. Must be between 1 and 360 inclusive. After this duration, the trigger will be automatically deactivated.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the advertiser that the manual trigger belongs to.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the manual trigger. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;latestActivationTime&quot;: &quot;A String&quot;, # Output only. The timestamp of the trigger&#x27;s latest activation.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the manual trigger.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the manual trigger. Will be set to the `INACTIVE` state upon creation.
  &quot;triggerId&quot;: &quot;A String&quot;, # Output only. The unique ID of the manual trigger.
}</pre>
</div>

</body></html>