<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_6.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_6.projects.html">projects</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(profileId, id)</a></code></p>
<p class="firstline">Gets one project by ID.</p>
<p class="toc_element">
  <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
<p class="firstline">Retrieves a list of projects, possibly filtered. 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="get">get(profileId, id)</code>
  <pre>Gets one project by ID.

Args:
  profileId: string, User profile ID associated with this request. (required)
  id: string, Project ID. (required)

Returns:
  An object of the form:

    { # Contains properties of a DoubleClick Planning project.
    "startDate": "A String", # Start date of the project.
    "targetCpmNanos": "A String", # CPM that the advertiser is targeting.
    "endDate": "A String", # End date of the project.
    "clientBillingCode": "A String", # Client billing code of this project.
    "overview": "A String", # Overview of this project.
    "targetCpaNanos": "A String", # CPA that the advertiser is targeting.
    "advertiserId": "A String", # Advertiser ID of this project.
    "targetImpressions": "A String", # Number of impressions that the advertiser is targeting.
    "id": "A String", # ID of this project. This is a read-only, auto-generated field.
    "accountId": "A String", # Account ID of this project.
    "targetCpcNanos": "A String", # CPC that the advertiser is targeting.
    "targetCpmActiveViewNanos": "A String", # vCPM from Active View that the advertiser is targeting.
    "targetClicks": "A String", # Number of clicks that the advertiser is targeting.
    "audienceGender": "A String", # Audience gender of this project.
    "kind": "dfareporting#project", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#project".
    "subaccountId": "A String", # Subaccount ID of this project.
    "name": "A String", # Name of this project.
    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this project.
      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
    },
    "budget": "A String", # Budget of this project in the currency specified by the current account. The value stored in this field represents only the non-fractional amount. For example, for USD, the smallest value that can be represented by this field is 1 US dollar.
    "audienceAgeGroup": "A String", # Audience age group of this project.
    "targetConversions": "A String", # Number of conversions that the advertiser is targeting.
    "clientName": "A String", # Name of the project client.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</code>
  <pre>Retrieves a list of projects, possibly filtered. This method supports paging.

Args:
  profileId: string, User profile ID associated with this request. (required)
  searchString: string, Allows searching for projects by name or ID. Wildcards (*) are allowed. For example, "project*2015" will return projects with names like "project June 2015", "project April 2015", or simply "project 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "project" will match projects with name "my project", "project 2015", or simply "project".
  pageToken: string, Value of the nextPageToken from the previous result page.
  sortField: string, Field by which to sort the list.
    Allowed values
      ID - 
      NAME - 
  advertiserIds: string, Select only projects with these advertiser IDs. (repeated)
  ids: string, Select only projects with these IDs. (repeated)
  maxResults: integer, Maximum number of results to return.
  sortOrder: string, Order of sorted results, default is ASCENDING.
    Allowed values
      ASCENDING - 
      DESCENDING - 

Returns:
  An object of the form:

    { # Project List Response
    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
    "kind": "dfareporting#projectsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#projectsListResponse".
    "projects": [ # Project collection.
      { # Contains properties of a DoubleClick Planning project.
        "startDate": "A String", # Start date of the project.
        "targetCpmNanos": "A String", # CPM that the advertiser is targeting.
        "endDate": "A String", # End date of the project.
        "clientBillingCode": "A String", # Client billing code of this project.
        "overview": "A String", # Overview of this project.
        "targetCpaNanos": "A String", # CPA that the advertiser is targeting.
        "advertiserId": "A String", # Advertiser ID of this project.
        "targetImpressions": "A String", # Number of impressions that the advertiser is targeting.
        "id": "A String", # ID of this project. This is a read-only, auto-generated field.
        "accountId": "A String", # Account ID of this project.
        "targetCpcNanos": "A String", # CPC that the advertiser is targeting.
        "targetCpmActiveViewNanos": "A String", # vCPM from Active View that the advertiser is targeting.
        "targetClicks": "A String", # Number of clicks that the advertiser is targeting.
        "audienceGender": "A String", # Audience gender of this project.
        "kind": "dfareporting#project", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#project".
        "subaccountId": "A String", # Subaccount ID of this project.
        "name": "A String", # Name of this project.
        "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this project.
          "time": "A String", # Timestamp of the last change in milliseconds since epoch.
        },
        "budget": "A String", # Budget of this project in the currency specified by the current account. The value stored in this field represents only the non-fractional amount. For example, for USD, the smallest value that can be represented by this field is 1 US dollar.
        "audienceAgeGroup": "A String", # Audience age group of this project.
        "targetConversions": "A String", # Number of conversions that the advertiser is targeting.
        "clientName": "A String", # Name of the project client.
      },
    ],
  }</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>