<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="dfareporting_v2_5.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_5.campaignCreativeAssociations.html">campaignCreativeAssociations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#insert">insert(profileId, campaignId, body)</a></code></p>
<p class="firstline">Associates a creative with the specified campaign. This method creates a default ad with dimensions matching the creative in the campaign if such a default ad does not exist already.</p>
<p class="toc_element">
  <code><a href="#list">list(profileId, campaignId, maxResults=None, pageToken=None, sortOrder=None)</a></code></p>
<p class="firstline">Retrieves the list of creative IDs associated with the specified campaign. This method supports paging.</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>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="insert">insert(profileId, campaignId, body)</code>
  <pre>Associates a creative with the specified campaign. This method creates a default ad with dimensions matching the creative in the campaign if such a default ad does not exist already.

Args:
  profileId: string, User profile ID associated with this request. (required)
  campaignId: string, Campaign ID in this association. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Identifies a creative which has been associated with a given campaign.
    "creativeId": "A String", # ID of the creative associated with the campaign. This is a required field.
    "kind": "dfareporting#campaignCreativeAssociation", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaignCreativeAssociation".
  }


Returns:
  An object of the form:

    { # Identifies a creative which has been associated with a given campaign.
      "creativeId": "A String", # ID of the creative associated with the campaign. This is a required field.
      "kind": "dfareporting#campaignCreativeAssociation", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaignCreativeAssociation".
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(profileId, campaignId, maxResults=None, pageToken=None, sortOrder=None)</code>
  <pre>Retrieves the list of creative IDs associated with the specified campaign. This method supports paging.

Args:
  profileId: string, User profile ID associated with this request. (required)
  campaignId: string, Campaign ID in this association. (required)
  maxResults: integer, Maximum number of results to return.
  pageToken: string, Value of the nextPageToken from the previous result page.
  sortOrder: string, Order of sorted results, default is ASCENDING.
    Allowed values
      ASCENDING - 
      DESCENDING - 

Returns:
  An object of the form:

    { # Campaign Creative Association List Response
    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
    "campaignCreativeAssociations": [ # Campaign creative association collection
      { # Identifies a creative which has been associated with a given campaign.
          "creativeId": "A String", # ID of the creative associated with the campaign. This is a required field.
          "kind": "dfareporting#campaignCreativeAssociation", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaignCreativeAssociation".
        },
    ],
    "kind": "dfareporting#campaignCreativeAssociationsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaignCreativeAssociationsListResponse".
  }</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>

</body></html>