<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_v3.html">Display & Video 360 API</a> . <a href="displayvideo_v3.guaranteedOrders.html">guaranteedOrders</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(advertiserId=None, body=None, partnerId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new guaranteed order. Returns the newly created guaranteed order if successful.</p>
<p class="toc_element">
  <code><a href="#editGuaranteedOrderReadAccessors">editGuaranteedOrderReadAccessors(guaranteedOrderId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Edits read advertisers of a guaranteed order.</p>
<p class="toc_element">
  <code><a href="#get">get(guaranteedOrderId, advertiserId=None, partnerId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a guaranteed order.</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 guaranteed orders that are accessible to the current user. The order is defined by the order_by parameter. If a filter by entity_status is not specified, guaranteed orders with entity status `ENTITY_STATUS_ARCHIVED` will not be included in the results.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(guaranteedOrderId, advertiserId=None, body=None, partnerId=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing guaranteed order. Returns the updated guaranteed order if successful.</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(advertiserId=None, body=None, partnerId=None, x__xgafv=None)</code>
  <pre>Creates a new guaranteed order. Returns the newly created guaranteed order if successful.

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

{ # A guaranteed order. Guaranteed orders are parent entity of guaranteed inventory sources. When creating a guaranteed inventory source, a guaranteed order ID must be assigned to the inventory source.
  &quot;defaultAdvertiserId&quot;: &quot;A String&quot;, # Output only. The ID of default advertiser of the guaranteed order. The default advertiser is either the read_write_advertiser_id or, if that is not set, the first advertiser listed in read_advertiser_ids. Otherwise, there is no default advertiser.
  &quot;defaultCampaignId&quot;: &quot;A String&quot;, # The ID of the default campaign that is assigned to the guaranteed order. The default campaign must belong to the default advertiser.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the guaranteed order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;exchange&quot;: &quot;A String&quot;, # Required. Immutable. The exchange where the guaranteed order originated.
  &quot;guaranteedOrderId&quot;: &quot;A String&quot;, # Output only. The unique identifier of the guaranteed order. The guaranteed order IDs have the format `{exchange}-{legacy_guaranteed_order_id}`.
  &quot;legacyGuaranteedOrderId&quot;: &quot;A String&quot;, # Output only. The legacy ID of the guaranteed order. Assigned by the original exchange. The legacy ID is unique within one exchange, but is not guaranteed to be unique across all guaranteed orders. This ID is used in SDF and UI.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the guaranteed order.
  &quot;publisherName&quot;: &quot;A String&quot;, # Required. The publisher name of the guaranteed order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;readAccessInherited&quot;: True or False, # Whether all advertisers of read_write_partner_id have read access to the guaranteed order. Only applicable if read_write_partner_id is set. If True, overrides read_advertiser_ids.
  &quot;readAdvertiserIds&quot;: [ # The IDs of advertisers with read access to the guaranteed order. This field must not include the advertiser assigned to read_write_advertiser_id if it is set. All advertisers in this field must belong to read_write_partner_id or the same partner as read_write_advertiser_id.
    &quot;A String&quot;,
  ],
  &quot;readWriteAdvertiserId&quot;: &quot;A String&quot;, # The advertiser with read/write access to the guaranteed order. This is also the default advertiser of the guaranteed order.
  &quot;readWritePartnerId&quot;: &quot;A String&quot;, # The partner with read/write access to the guaranteed order.
  &quot;status&quot;: { # The status settings of the guaranteed order. # The status settings of the guaranteed order.
    &quot;configStatus&quot;: &quot;A String&quot;, # Output only. The configuration status of the guaranteed order. Acceptable values are `PENDING` and `COMPLETED`. A guaranteed order must be configured (fill in the required fields, choose creatives, and select a default campaign) before it can serve. Currently the configuration action can only be performed via UI.
    &quot;entityPauseReason&quot;: &quot;A String&quot;, # The user-provided reason for pausing this guaranteed order. Must be UTF-8 encoded with a maximum length of 100 bytes. Only applicable when entity_status is set to `ENTITY_STATUS_PAUSED`.
    &quot;entityStatus&quot;: &quot;A String&quot;, # Whether or not the guaranteed order is servable. Acceptable values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_ARCHIVED`, and `ENTITY_STATUS_PAUSED`. Default value is `ENTITY_STATUS_ACTIVE`.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the guaranteed order was last updated. Assigned by the system.
}

  advertiserId: string, The ID of the advertiser that the request is being made within.
  partnerId: string, The ID of the partner that the request is being made within.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A guaranteed order. Guaranteed orders are parent entity of guaranteed inventory sources. When creating a guaranteed inventory source, a guaranteed order ID must be assigned to the inventory source.
  &quot;defaultAdvertiserId&quot;: &quot;A String&quot;, # Output only. The ID of default advertiser of the guaranteed order. The default advertiser is either the read_write_advertiser_id or, if that is not set, the first advertiser listed in read_advertiser_ids. Otherwise, there is no default advertiser.
  &quot;defaultCampaignId&quot;: &quot;A String&quot;, # The ID of the default campaign that is assigned to the guaranteed order. The default campaign must belong to the default advertiser.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the guaranteed order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;exchange&quot;: &quot;A String&quot;, # Required. Immutable. The exchange where the guaranteed order originated.
  &quot;guaranteedOrderId&quot;: &quot;A String&quot;, # Output only. The unique identifier of the guaranteed order. The guaranteed order IDs have the format `{exchange}-{legacy_guaranteed_order_id}`.
  &quot;legacyGuaranteedOrderId&quot;: &quot;A String&quot;, # Output only. The legacy ID of the guaranteed order. Assigned by the original exchange. The legacy ID is unique within one exchange, but is not guaranteed to be unique across all guaranteed orders. This ID is used in SDF and UI.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the guaranteed order.
  &quot;publisherName&quot;: &quot;A String&quot;, # Required. The publisher name of the guaranteed order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;readAccessInherited&quot;: True or False, # Whether all advertisers of read_write_partner_id have read access to the guaranteed order. Only applicable if read_write_partner_id is set. If True, overrides read_advertiser_ids.
  &quot;readAdvertiserIds&quot;: [ # The IDs of advertisers with read access to the guaranteed order. This field must not include the advertiser assigned to read_write_advertiser_id if it is set. All advertisers in this field must belong to read_write_partner_id or the same partner as read_write_advertiser_id.
    &quot;A String&quot;,
  ],
  &quot;readWriteAdvertiserId&quot;: &quot;A String&quot;, # The advertiser with read/write access to the guaranteed order. This is also the default advertiser of the guaranteed order.
  &quot;readWritePartnerId&quot;: &quot;A String&quot;, # The partner with read/write access to the guaranteed order.
  &quot;status&quot;: { # The status settings of the guaranteed order. # The status settings of the guaranteed order.
    &quot;configStatus&quot;: &quot;A String&quot;, # Output only. The configuration status of the guaranteed order. Acceptable values are `PENDING` and `COMPLETED`. A guaranteed order must be configured (fill in the required fields, choose creatives, and select a default campaign) before it can serve. Currently the configuration action can only be performed via UI.
    &quot;entityPauseReason&quot;: &quot;A String&quot;, # The user-provided reason for pausing this guaranteed order. Must be UTF-8 encoded with a maximum length of 100 bytes. Only applicable when entity_status is set to `ENTITY_STATUS_PAUSED`.
    &quot;entityStatus&quot;: &quot;A String&quot;, # Whether or not the guaranteed order is servable. Acceptable values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_ARCHIVED`, and `ENTITY_STATUS_PAUSED`. Default value is `ENTITY_STATUS_ACTIVE`.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the guaranteed order was last updated. Assigned by the system.
}</pre>
</div>

<div class="method">
    <code class="details" id="editGuaranteedOrderReadAccessors">editGuaranteedOrderReadAccessors(guaranteedOrderId, body=None, x__xgafv=None)</code>
  <pre>Edits read advertisers of a guaranteed order.

Args:
  guaranteedOrderId: string, Required. The ID of the guaranteed order to edit. The ID is of the format `{exchange}-{legacy_guaranteed_order_id}` (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for GuaranteedOrderService.EditGuaranteedOrderReadAccessors.
  &quot;addedAdvertisers&quot;: [ # The advertisers to add as read accessors to the guaranteed order.
    &quot;A String&quot;,
  ],
  &quot;partnerId&quot;: &quot;A String&quot;, # Required. The partner context in which the change is being made.
  &quot;readAccessInherited&quot;: True or False, # Whether to give all advertisers of the read/write accessor partner read access to the guaranteed order. Only applicable if read_write_partner_id is set in the guaranteed order.
  &quot;removedAdvertisers&quot;: [ # The advertisers to remove as read accessors to the guaranteed order.
    &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:

    {
  &quot;readAccessInherited&quot;: True or False, # Whether all advertisers of read_write_partner_id have read access to the guaranteed order.
  &quot;readAdvertiserIds&quot;: [ # The IDs of advertisers with read access to the guaranteed order.
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(guaranteedOrderId, advertiserId=None, partnerId=None, x__xgafv=None)</code>
  <pre>Gets a guaranteed order.

Args:
  guaranteedOrderId: string, Required. The ID of the guaranteed order to fetch. The ID is of the format `{exchange}-{legacy_guaranteed_order_id}` (required)
  advertiserId: string, The ID of the advertiser that has access to the guaranteed order.
  partnerId: string, The ID of the partner that has access to the guaranteed order.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A guaranteed order. Guaranteed orders are parent entity of guaranteed inventory sources. When creating a guaranteed inventory source, a guaranteed order ID must be assigned to the inventory source.
  &quot;defaultAdvertiserId&quot;: &quot;A String&quot;, # Output only. The ID of default advertiser of the guaranteed order. The default advertiser is either the read_write_advertiser_id or, if that is not set, the first advertiser listed in read_advertiser_ids. Otherwise, there is no default advertiser.
  &quot;defaultCampaignId&quot;: &quot;A String&quot;, # The ID of the default campaign that is assigned to the guaranteed order. The default campaign must belong to the default advertiser.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the guaranteed order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;exchange&quot;: &quot;A String&quot;, # Required. Immutable. The exchange where the guaranteed order originated.
  &quot;guaranteedOrderId&quot;: &quot;A String&quot;, # Output only. The unique identifier of the guaranteed order. The guaranteed order IDs have the format `{exchange}-{legacy_guaranteed_order_id}`.
  &quot;legacyGuaranteedOrderId&quot;: &quot;A String&quot;, # Output only. The legacy ID of the guaranteed order. Assigned by the original exchange. The legacy ID is unique within one exchange, but is not guaranteed to be unique across all guaranteed orders. This ID is used in SDF and UI.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the guaranteed order.
  &quot;publisherName&quot;: &quot;A String&quot;, # Required. The publisher name of the guaranteed order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;readAccessInherited&quot;: True or False, # Whether all advertisers of read_write_partner_id have read access to the guaranteed order. Only applicable if read_write_partner_id is set. If True, overrides read_advertiser_ids.
  &quot;readAdvertiserIds&quot;: [ # The IDs of advertisers with read access to the guaranteed order. This field must not include the advertiser assigned to read_write_advertiser_id if it is set. All advertisers in this field must belong to read_write_partner_id or the same partner as read_write_advertiser_id.
    &quot;A String&quot;,
  ],
  &quot;readWriteAdvertiserId&quot;: &quot;A String&quot;, # The advertiser with read/write access to the guaranteed order. This is also the default advertiser of the guaranteed order.
  &quot;readWritePartnerId&quot;: &quot;A String&quot;, # The partner with read/write access to the guaranteed order.
  &quot;status&quot;: { # The status settings of the guaranteed order. # The status settings of the guaranteed order.
    &quot;configStatus&quot;: &quot;A String&quot;, # Output only. The configuration status of the guaranteed order. Acceptable values are `PENDING` and `COMPLETED`. A guaranteed order must be configured (fill in the required fields, choose creatives, and select a default campaign) before it can serve. Currently the configuration action can only be performed via UI.
    &quot;entityPauseReason&quot;: &quot;A String&quot;, # The user-provided reason for pausing this guaranteed order. Must be UTF-8 encoded with a maximum length of 100 bytes. Only applicable when entity_status is set to `ENTITY_STATUS_PAUSED`.
    &quot;entityStatus&quot;: &quot;A String&quot;, # Whether or not the guaranteed order is servable. Acceptable values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_ARCHIVED`, and `ENTITY_STATUS_PAUSED`. Default value is `ENTITY_STATUS_ACTIVE`.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the guaranteed order was last updated. Assigned by the system.
}</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 guaranteed orders that are accessible to the current user. The order is defined by the order_by parameter. If a filter by entity_status is not specified, guaranteed orders with entity status `ENTITY_STATUS_ARCHIVED` will not be included in the results.

Args:
  advertiserId: string, The ID of the advertiser that has access to the guaranteed order.
  filter: string, Allows filtering by guaranteed order fields. * 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}`. * All fields must use the `EQUALS (=)` operator. Supported fields: * `guaranteed_order_id` * `exchange` * `display_name` * `status.entityStatus` Examples: * All active guaranteed orders: `status.entityStatus=&quot;ENTITY_STATUS_ACTIVE&quot;` * Guaranteed orders belonging to Google Ad Manager or Rubicon exchanges: `exchange=&quot;EXCHANGE_GOOGLE_AD_MANAGER&quot; OR exchange=&quot;EXCHANGE_RUBICON&quot;` The length of this field should be no more than 500 characters. Reference our [filter `LIST` requests](/display-video/api/guides/how-tos/filters) guide for more information.
  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. For example, `displayName desc`.
  pageSize: integer, Requested page size. Must be between `1` and `200`. 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 `ListGuaranteedOrders` method. If not specified, the first page of results will be returned.
  partnerId: string, The ID of the partner that has access to the guaranteed order.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;guaranteedOrders&quot;: [ # The list of guaranteed orders. This list will be absent if empty.
    { # A guaranteed order. Guaranteed orders are parent entity of guaranteed inventory sources. When creating a guaranteed inventory source, a guaranteed order ID must be assigned to the inventory source.
      &quot;defaultAdvertiserId&quot;: &quot;A String&quot;, # Output only. The ID of default advertiser of the guaranteed order. The default advertiser is either the read_write_advertiser_id or, if that is not set, the first advertiser listed in read_advertiser_ids. Otherwise, there is no default advertiser.
      &quot;defaultCampaignId&quot;: &quot;A String&quot;, # The ID of the default campaign that is assigned to the guaranteed order. The default campaign must belong to the default advertiser.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the guaranteed order. Must be UTF-8 encoded with a maximum size of 240 bytes.
      &quot;exchange&quot;: &quot;A String&quot;, # Required. Immutable. The exchange where the guaranteed order originated.
      &quot;guaranteedOrderId&quot;: &quot;A String&quot;, # Output only. The unique identifier of the guaranteed order. The guaranteed order IDs have the format `{exchange}-{legacy_guaranteed_order_id}`.
      &quot;legacyGuaranteedOrderId&quot;: &quot;A String&quot;, # Output only. The legacy ID of the guaranteed order. Assigned by the original exchange. The legacy ID is unique within one exchange, but is not guaranteed to be unique across all guaranteed orders. This ID is used in SDF and UI.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the guaranteed order.
      &quot;publisherName&quot;: &quot;A String&quot;, # Required. The publisher name of the guaranteed order. Must be UTF-8 encoded with a maximum size of 240 bytes.
      &quot;readAccessInherited&quot;: True or False, # Whether all advertisers of read_write_partner_id have read access to the guaranteed order. Only applicable if read_write_partner_id is set. If True, overrides read_advertiser_ids.
      &quot;readAdvertiserIds&quot;: [ # The IDs of advertisers with read access to the guaranteed order. This field must not include the advertiser assigned to read_write_advertiser_id if it is set. All advertisers in this field must belong to read_write_partner_id or the same partner as read_write_advertiser_id.
        &quot;A String&quot;,
      ],
      &quot;readWriteAdvertiserId&quot;: &quot;A String&quot;, # The advertiser with read/write access to the guaranteed order. This is also the default advertiser of the guaranteed order.
      &quot;readWritePartnerId&quot;: &quot;A String&quot;, # The partner with read/write access to the guaranteed order.
      &quot;status&quot;: { # The status settings of the guaranteed order. # The status settings of the guaranteed order.
        &quot;configStatus&quot;: &quot;A String&quot;, # Output only. The configuration status of the guaranteed order. Acceptable values are `PENDING` and `COMPLETED`. A guaranteed order must be configured (fill in the required fields, choose creatives, and select a default campaign) before it can serve. Currently the configuration action can only be performed via UI.
        &quot;entityPauseReason&quot;: &quot;A String&quot;, # The user-provided reason for pausing this guaranteed order. Must be UTF-8 encoded with a maximum length of 100 bytes. Only applicable when entity_status is set to `ENTITY_STATUS_PAUSED`.
        &quot;entityStatus&quot;: &quot;A String&quot;, # Whether or not the guaranteed order is servable. Acceptable values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_ARCHIVED`, and `ENTITY_STATUS_PAUSED`. Default value is `ENTITY_STATUS_ACTIVE`.
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the guaranteed order was last updated. Assigned by the system.
    },
  ],
  &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 `ListGuaranteedOrders` method to retrieve the next page of results.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</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(guaranteedOrderId, advertiserId=None, body=None, partnerId=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates an existing guaranteed order. Returns the updated guaranteed order if successful.

Args:
  guaranteedOrderId: string, Output only. The unique identifier of the guaranteed order. The guaranteed order IDs have the format `{exchange}-{legacy_guaranteed_order_id}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A guaranteed order. Guaranteed orders are parent entity of guaranteed inventory sources. When creating a guaranteed inventory source, a guaranteed order ID must be assigned to the inventory source.
  &quot;defaultAdvertiserId&quot;: &quot;A String&quot;, # Output only. The ID of default advertiser of the guaranteed order. The default advertiser is either the read_write_advertiser_id or, if that is not set, the first advertiser listed in read_advertiser_ids. Otherwise, there is no default advertiser.
  &quot;defaultCampaignId&quot;: &quot;A String&quot;, # The ID of the default campaign that is assigned to the guaranteed order. The default campaign must belong to the default advertiser.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the guaranteed order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;exchange&quot;: &quot;A String&quot;, # Required. Immutable. The exchange where the guaranteed order originated.
  &quot;guaranteedOrderId&quot;: &quot;A String&quot;, # Output only. The unique identifier of the guaranteed order. The guaranteed order IDs have the format `{exchange}-{legacy_guaranteed_order_id}`.
  &quot;legacyGuaranteedOrderId&quot;: &quot;A String&quot;, # Output only. The legacy ID of the guaranteed order. Assigned by the original exchange. The legacy ID is unique within one exchange, but is not guaranteed to be unique across all guaranteed orders. This ID is used in SDF and UI.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the guaranteed order.
  &quot;publisherName&quot;: &quot;A String&quot;, # Required. The publisher name of the guaranteed order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;readAccessInherited&quot;: True or False, # Whether all advertisers of read_write_partner_id have read access to the guaranteed order. Only applicable if read_write_partner_id is set. If True, overrides read_advertiser_ids.
  &quot;readAdvertiserIds&quot;: [ # The IDs of advertisers with read access to the guaranteed order. This field must not include the advertiser assigned to read_write_advertiser_id if it is set. All advertisers in this field must belong to read_write_partner_id or the same partner as read_write_advertiser_id.
    &quot;A String&quot;,
  ],
  &quot;readWriteAdvertiserId&quot;: &quot;A String&quot;, # The advertiser with read/write access to the guaranteed order. This is also the default advertiser of the guaranteed order.
  &quot;readWritePartnerId&quot;: &quot;A String&quot;, # The partner with read/write access to the guaranteed order.
  &quot;status&quot;: { # The status settings of the guaranteed order. # The status settings of the guaranteed order.
    &quot;configStatus&quot;: &quot;A String&quot;, # Output only. The configuration status of the guaranteed order. Acceptable values are `PENDING` and `COMPLETED`. A guaranteed order must be configured (fill in the required fields, choose creatives, and select a default campaign) before it can serve. Currently the configuration action can only be performed via UI.
    &quot;entityPauseReason&quot;: &quot;A String&quot;, # The user-provided reason for pausing this guaranteed order. Must be UTF-8 encoded with a maximum length of 100 bytes. Only applicable when entity_status is set to `ENTITY_STATUS_PAUSED`.
    &quot;entityStatus&quot;: &quot;A String&quot;, # Whether or not the guaranteed order is servable. Acceptable values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_ARCHIVED`, and `ENTITY_STATUS_PAUSED`. Default value is `ENTITY_STATUS_ACTIVE`.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the guaranteed order was last updated. Assigned by the system.
}

  advertiserId: string, The ID of the advertiser that the request is being made within.
  partnerId: string, The ID of the partner that the request is being made within.
  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 guaranteed order. Guaranteed orders are parent entity of guaranteed inventory sources. When creating a guaranteed inventory source, a guaranteed order ID must be assigned to the inventory source.
  &quot;defaultAdvertiserId&quot;: &quot;A String&quot;, # Output only. The ID of default advertiser of the guaranteed order. The default advertiser is either the read_write_advertiser_id or, if that is not set, the first advertiser listed in read_advertiser_ids. Otherwise, there is no default advertiser.
  &quot;defaultCampaignId&quot;: &quot;A String&quot;, # The ID of the default campaign that is assigned to the guaranteed order. The default campaign must belong to the default advertiser.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the guaranteed order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;exchange&quot;: &quot;A String&quot;, # Required. Immutable. The exchange where the guaranteed order originated.
  &quot;guaranteedOrderId&quot;: &quot;A String&quot;, # Output only. The unique identifier of the guaranteed order. The guaranteed order IDs have the format `{exchange}-{legacy_guaranteed_order_id}`.
  &quot;legacyGuaranteedOrderId&quot;: &quot;A String&quot;, # Output only. The legacy ID of the guaranteed order. Assigned by the original exchange. The legacy ID is unique within one exchange, but is not guaranteed to be unique across all guaranteed orders. This ID is used in SDF and UI.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the guaranteed order.
  &quot;publisherName&quot;: &quot;A String&quot;, # Required. The publisher name of the guaranteed order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;readAccessInherited&quot;: True or False, # Whether all advertisers of read_write_partner_id have read access to the guaranteed order. Only applicable if read_write_partner_id is set. If True, overrides read_advertiser_ids.
  &quot;readAdvertiserIds&quot;: [ # The IDs of advertisers with read access to the guaranteed order. This field must not include the advertiser assigned to read_write_advertiser_id if it is set. All advertisers in this field must belong to read_write_partner_id or the same partner as read_write_advertiser_id.
    &quot;A String&quot;,
  ],
  &quot;readWriteAdvertiserId&quot;: &quot;A String&quot;, # The advertiser with read/write access to the guaranteed order. This is also the default advertiser of the guaranteed order.
  &quot;readWritePartnerId&quot;: &quot;A String&quot;, # The partner with read/write access to the guaranteed order.
  &quot;status&quot;: { # The status settings of the guaranteed order. # The status settings of the guaranteed order.
    &quot;configStatus&quot;: &quot;A String&quot;, # Output only. The configuration status of the guaranteed order. Acceptable values are `PENDING` and `COMPLETED`. A guaranteed order must be configured (fill in the required fields, choose creatives, and select a default campaign) before it can serve. Currently the configuration action can only be performed via UI.
    &quot;entityPauseReason&quot;: &quot;A String&quot;, # The user-provided reason for pausing this guaranteed order. Must be UTF-8 encoded with a maximum length of 100 bytes. Only applicable when entity_status is set to `ENTITY_STATUS_PAUSED`.
    &quot;entityStatus&quot;: &quot;A String&quot;, # Whether or not the guaranteed order is servable. Acceptable values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_ARCHIVED`, and `ENTITY_STATUS_PAUSED`. Default value is `ENTITY_STATUS_ACTIVE`.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the guaranteed order was last updated. Assigned by the system.
}</pre>
</div>

</body></html>