<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.customBiddingAlgorithms.html">customBiddingAlgorithms</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="displayvideo_v1.customBiddingAlgorithms.scripts.html">scripts()</a></code>
</p>
<p class="firstline">Returns the scripts 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="#create">create(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new custom bidding algorithm. Returns the newly created custom bidding algorithm if successful.</p>
<p class="toc_element">
  <code><a href="#get">get(customBiddingAlgorithmId, advertiserId=None, partnerId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a custom bidding algorithm.</p>
<p class="toc_element">
  <code><a href="#list">list(advertiserId=None, filter=None, orderBy=None, pageSize=None, pageToken=None, partnerId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists custom bidding algorithms that are accessible to the current user and can be used in bidding stratgies. The order is defined by the order_by parameter.</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(customBiddingAlgorithmId, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing custom bidding algorithm. Returns the updated custom bidding algorithm if successful.</p>
<p class="toc_element">
  <code><a href="#uploadScript">uploadScript(customBiddingAlgorithmId, advertiserId=None, partnerId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a custom bidding script reference object for a script file. The resulting reference object provides a resource path to which the script file should be uploaded. This reference object should be included in when creating a new custom bidding script object.</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(body=None, x__xgafv=None)</code>
  <pre>Creates a new custom bidding algorithm. Returns the newly created custom bidding algorithm if successful.

Args:
  body: object, The request body.
    The object takes the form of:

{ # A single custom bidding algorithm.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Immutable. The unique ID of the advertiser that owns the custom bidding algorithm.
  &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # Output only. The unique ID of the custom bidding algorithm. Assigned by the system.
  &quot;customBiddingAlgorithmState&quot;: &quot;A String&quot;, # Output only. The status of custom bidding algorithm.
  &quot;customBiddingAlgorithmType&quot;: &quot;A String&quot;, # Required. Immutable. The type of custom bidding algorithm.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the custom bidding algorithm. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Controls whether or not the custom bidding algorithm can be used as a bidding strategy. Accepted values are: * `ENTITY_STATUS_ACTIVE` * `ENTITY_STATUS_ARCHIVED`
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the custom bidding algorithm.
  &quot;partnerId&quot;: &quot;A String&quot;, # Immutable. The unique ID of the partner that owns the custom bidding algorithm.
  &quot;sharedAdvertiserIds&quot;: [ # The IDs of the advertisers who have access to this algorithm. If advertiser_id is set, this field will only consist of that value. This field will not be set if the algorithm [`owner`](/display-video/api/reference/rest/v1/customBiddingAlgorithms#CustomBiddingAlgorithm.FIELDS.oneof_owner) is a partner and is being retrieved using an advertiser [`accessor`](/display-video/api/reference/rest/v1/customBiddingAlgorithms/list#body.QUERY_PARAMETERS.oneof_accessor).
    &quot;A String&quot;,
  ],
}

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

Returns:
  An object of the form:

    { # A single custom bidding algorithm.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Immutable. The unique ID of the advertiser that owns the custom bidding algorithm.
  &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # Output only. The unique ID of the custom bidding algorithm. Assigned by the system.
  &quot;customBiddingAlgorithmState&quot;: &quot;A String&quot;, # Output only. The status of custom bidding algorithm.
  &quot;customBiddingAlgorithmType&quot;: &quot;A String&quot;, # Required. Immutable. The type of custom bidding algorithm.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the custom bidding algorithm. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Controls whether or not the custom bidding algorithm can be used as a bidding strategy. Accepted values are: * `ENTITY_STATUS_ACTIVE` * `ENTITY_STATUS_ARCHIVED`
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the custom bidding algorithm.
  &quot;partnerId&quot;: &quot;A String&quot;, # Immutable. The unique ID of the partner that owns the custom bidding algorithm.
  &quot;sharedAdvertiserIds&quot;: [ # The IDs of the advertisers who have access to this algorithm. If advertiser_id is set, this field will only consist of that value. This field will not be set if the algorithm [`owner`](/display-video/api/reference/rest/v1/customBiddingAlgorithms#CustomBiddingAlgorithm.FIELDS.oneof_owner) is a partner and is being retrieved using an advertiser [`accessor`](/display-video/api/reference/rest/v1/customBiddingAlgorithms/list#body.QUERY_PARAMETERS.oneof_accessor).
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(customBiddingAlgorithmId, advertiserId=None, partnerId=None, x__xgafv=None)</code>
  <pre>Gets a custom bidding algorithm.

Args:
  customBiddingAlgorithmId: string, Required. The ID of the custom bidding algorithm to fetch. (required)
  advertiserId: string, The ID of the DV360 partner that has access to the custom bidding algorithm.
  partnerId: string, The ID of the DV360 partner that has access to the custom bidding algorithm.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A single custom bidding algorithm.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Immutable. The unique ID of the advertiser that owns the custom bidding algorithm.
  &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # Output only. The unique ID of the custom bidding algorithm. Assigned by the system.
  &quot;customBiddingAlgorithmState&quot;: &quot;A String&quot;, # Output only. The status of custom bidding algorithm.
  &quot;customBiddingAlgorithmType&quot;: &quot;A String&quot;, # Required. Immutable. The type of custom bidding algorithm.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the custom bidding algorithm. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Controls whether or not the custom bidding algorithm can be used as a bidding strategy. Accepted values are: * `ENTITY_STATUS_ACTIVE` * `ENTITY_STATUS_ARCHIVED`
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the custom bidding algorithm.
  &quot;partnerId&quot;: &quot;A String&quot;, # Immutable. The unique ID of the partner that owns the custom bidding algorithm.
  &quot;sharedAdvertiserIds&quot;: [ # The IDs of the advertisers who have access to this algorithm. If advertiser_id is set, this field will only consist of that value. This field will not be set if the algorithm [`owner`](/display-video/api/reference/rest/v1/customBiddingAlgorithms#CustomBiddingAlgorithm.FIELDS.oneof_owner) is a partner and is being retrieved using an advertiser [`accessor`](/display-video/api/reference/rest/v1/customBiddingAlgorithms/list#body.QUERY_PARAMETERS.oneof_accessor).
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(advertiserId=None, filter=None, orderBy=None, pageSize=None, pageToken=None, partnerId=None, x__xgafv=None)</code>
  <pre>Lists custom bidding algorithms that are accessible to the current user and can be used in bidding stratgies. The order is defined by the order_by parameter.

Args:
  advertiserId: string, The ID of the DV360 advertiser that has access to the custom bidding algorithm.
  filter: string, Allows filtering by custom bidding algorithm fields. Supported syntax: * Filter expressions are made up of one or more restrictions. * Restrictions can be combined by `AND`. A sequence of restrictions * implicitly uses `AND`. * A restriction has the form of `{field} {operator} {value}`. * The operator must be `CONTAINS (:)` or `EQUALS (=)`. * The operator must be `CONTAINS (:)` for the following field: - `displayName` * The operator must be `EQUALS (=)` for the following field: - `customBiddingAlgorithmType` - `customBiddingAlgorithmState` * For `displayName`, the value is a string. We return all custom bidding algorithms whose display_name contains such string. * For `customBiddingAlgorithmType`, the value is a string. We return all algorithms whose custom_bidding_algorithm_type is equal to the given type. * For `customBiddingAlgorithmState`, the value is a string. We return all algorithms whose custom_bidding_algorithm_state is equal to the given type. Examples: * All custom bidding algorithms for which the display name contains &quot;politics&quot;: `displayName:politics`. * All custom bidding algorithms for which the type is &quot;SCRIPT_BASED&quot;: `customBiddingAlgorithmType=SCRIPT_BASED` * All custom bidding algorithms for which the state is &quot;ENABLED&quot;: `customBiddingAlgorithmState=ENABLED` 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) 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. Example: `displayName desc`.
  pageSize: integer, Requested page size. Must be between `1` and `100`. If unspecified will default to `100`. Returns error code `INVALID_ARGUMENT` if an invalid value is specified.
  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 `ListCustomBiddingAlgorithms` method. If not specified, the first page of results will be returned.
  partnerId: string, The ID of the DV360 partner that has access to the custom bidding algorithm.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;customBiddingAlgorithms&quot;: [ # The list of custom bidding algorithms. This list will be absent if empty.
    { # A single custom bidding algorithm.
      &quot;advertiserId&quot;: &quot;A String&quot;, # Immutable. The unique ID of the advertiser that owns the custom bidding algorithm.
      &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # Output only. The unique ID of the custom bidding algorithm. Assigned by the system.
      &quot;customBiddingAlgorithmState&quot;: &quot;A String&quot;, # Output only. The status of custom bidding algorithm.
      &quot;customBiddingAlgorithmType&quot;: &quot;A String&quot;, # Required. Immutable. The type of custom bidding algorithm.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the custom bidding algorithm. Must be UTF-8 encoded with a maximum size of 240 bytes.
      &quot;entityStatus&quot;: &quot;A String&quot;, # Controls whether or not the custom bidding algorithm can be used as a bidding strategy. Accepted values are: * `ENTITY_STATUS_ACTIVE` * `ENTITY_STATUS_ARCHIVED`
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the custom bidding algorithm.
      &quot;partnerId&quot;: &quot;A String&quot;, # Immutable. The unique ID of the partner that owns the custom bidding algorithm.
      &quot;sharedAdvertiserIds&quot;: [ # The IDs of the advertisers who have access to this algorithm. If advertiser_id is set, this field will only consist of that value. This field will not be set if the algorithm [`owner`](/display-video/api/reference/rest/v1/customBiddingAlgorithms#CustomBiddingAlgorithm.FIELDS.oneof_owner) is a partner and is being retrieved using an advertiser [`accessor`](/display-video/api/reference/rest/v1/customBiddingAlgorithms/list#body.QUERY_PARAMETERS.oneof_accessor).
        &quot;A String&quot;,
      ],
    },
  ],
  &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 `ListCustomBiddingAlgorithmsRequest` method to retrieve the next page of results. If this field is null, it means this is the last page.
}</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(customBiddingAlgorithmId, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates an existing custom bidding algorithm. Returns the updated custom bidding algorithm if successful.

Args:
  customBiddingAlgorithmId: string, Output only. The unique ID of the custom bidding algorithm. Assigned by the system. (required)
  body: object, The request body.
    The object takes the form of:

{ # A single custom bidding algorithm.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Immutable. The unique ID of the advertiser that owns the custom bidding algorithm.
  &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # Output only. The unique ID of the custom bidding algorithm. Assigned by the system.
  &quot;customBiddingAlgorithmState&quot;: &quot;A String&quot;, # Output only. The status of custom bidding algorithm.
  &quot;customBiddingAlgorithmType&quot;: &quot;A String&quot;, # Required. Immutable. The type of custom bidding algorithm.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the custom bidding algorithm. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Controls whether or not the custom bidding algorithm can be used as a bidding strategy. Accepted values are: * `ENTITY_STATUS_ACTIVE` * `ENTITY_STATUS_ARCHIVED`
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the custom bidding algorithm.
  &quot;partnerId&quot;: &quot;A String&quot;, # Immutable. The unique ID of the partner that owns the custom bidding algorithm.
  &quot;sharedAdvertiserIds&quot;: [ # The IDs of the advertisers who have access to this algorithm. If advertiser_id is set, this field will only consist of that value. This field will not be set if the algorithm [`owner`](/display-video/api/reference/rest/v1/customBiddingAlgorithms#CustomBiddingAlgorithm.FIELDS.oneof_owner) is a partner and is being retrieved using an advertiser [`accessor`](/display-video/api/reference/rest/v1/customBiddingAlgorithms/list#body.QUERY_PARAMETERS.oneof_accessor).
    &quot;A String&quot;,
  ],
}

  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 custom bidding algorithm.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Immutable. The unique ID of the advertiser that owns the custom bidding algorithm.
  &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # Output only. The unique ID of the custom bidding algorithm. Assigned by the system.
  &quot;customBiddingAlgorithmState&quot;: &quot;A String&quot;, # Output only. The status of custom bidding algorithm.
  &quot;customBiddingAlgorithmType&quot;: &quot;A String&quot;, # Required. Immutable. The type of custom bidding algorithm.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the custom bidding algorithm. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Controls whether or not the custom bidding algorithm can be used as a bidding strategy. Accepted values are: * `ENTITY_STATUS_ACTIVE` * `ENTITY_STATUS_ARCHIVED`
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the custom bidding algorithm.
  &quot;partnerId&quot;: &quot;A String&quot;, # Immutable. The unique ID of the partner that owns the custom bidding algorithm.
  &quot;sharedAdvertiserIds&quot;: [ # The IDs of the advertisers who have access to this algorithm. If advertiser_id is set, this field will only consist of that value. This field will not be set if the algorithm [`owner`](/display-video/api/reference/rest/v1/customBiddingAlgorithms#CustomBiddingAlgorithm.FIELDS.oneof_owner) is a partner and is being retrieved using an advertiser [`accessor`](/display-video/api/reference/rest/v1/customBiddingAlgorithms/list#body.QUERY_PARAMETERS.oneof_accessor).
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="uploadScript">uploadScript(customBiddingAlgorithmId, advertiserId=None, partnerId=None, x__xgafv=None)</code>
  <pre>Creates a custom bidding script reference object for a script file. The resulting reference object provides a resource path to which the script file should be uploaded. This reference object should be included in when creating a new custom bidding script object.

Args:
  customBiddingAlgorithmId: string, Required. The ID of the custom bidding algorithm owns the script. (required)
  advertiserId: string, The ID of the advertiser that owns the parent custom bidding algorithm.
  partnerId: string, The ID of the partner that owns the parent custom bidding algorithm. Only this partner will have write access to this custom bidding script.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The reference to the uploaded custom bidding script file.
  &quot;resourceName&quot;: &quot;A String&quot;, # A resource name to be used in media.download to Download the script files. Or media.upload to Upload the script files. Resource names have the format `customBiddingAlgorithms/{custom_bidding_algorithm_id}/scriptRef/{ref_id}`.
}</pre>
</div>

</body></html>