Update to new mechanism for finding the discovery URL for APIs.

The discovery API itself got broken under us; discoveryLink is no
longer populated and discoveryRestUrl is now an absolute URL to use.

Regenerate all the APIs as a result, and add a few new ones that
have now appeared.

Change-Id: Ie68f6af5288f3e3c5ee77536d6a255af90689cca
Reviewed-on: https://code-review.googlesource.com/4111
Reviewed-by: Michael McGreevy <mcgreevy@golang.org>
diff --git a/adexchangebuyer/v1.4/adexchangebuyer-api.json b/adexchangebuyer/v1.4/adexchangebuyer-api.json
index 69243a5..0e6621c 100644
--- a/adexchangebuyer/v1.4/adexchangebuyer-api.json
+++ b/adexchangebuyer/v1.4/adexchangebuyer-api.json
@@ -1,12 +1,12 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/8py9qKhxb4LYQLK5oJhQXM10qCw\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/EdmLlIWDPOXUaIR9PyM0JrTn9Ls\"",
  "discoveryVersion": "v1",
  "id": "adexchangebuyer:v1.4",
  "name": "adexchangebuyer",
  "canonicalName": "Ad Exchange Buyer",
  "version": "v1.4",
- "revision": "20151209",
+ "revision": "20160118",
  "title": "Ad Exchange Buyer API",
  "description": "Accesses your bidding-account information, submits creatives for validation, finds available direct deals, and retrieves performance reports.",
  "ownerDomain": "google.com",
@@ -169,14 +169,14 @@
       "$ref": "MarketplaceDeal"
      }
     },
-    "orderRevisionNumber": {
+    "proposalRevisionNumber": {
      "type": "string",
-     "description": "The last known order revision number.",
+     "description": "The last known proposal revision number.",
      "format": "int64"
     },
     "updateAction": {
      "type": "string",
-     "description": "Indicates an optional action to take on the order"
+     "description": "Indicates an optional action to take on the proposal"
     }
    }
   },
@@ -186,14 +186,14 @@
    "properties": {
     "deals": {
      "type": "array",
-     "description": "List of deals added (in the same order as passed in the request)",
+     "description": "List of deals added (in the same proposal as passed in the request)",
      "items": {
       "$ref": "MarketplaceDeal"
      }
     },
-    "orderRevisionNumber": {
+    "proposalRevisionNumber": {
      "type": "string",
-     "description": "The updated revision number for the order.",
+     "description": "The updated revision number for the proposal.",
      "format": "int64"
     }
    }
@@ -333,11 +333,11 @@
    "id": "CreateOrdersRequest",
    "type": "object",
    "properties": {
-    "orders": {
+    "proposals": {
      "type": "array",
-     "description": "The list of orders to create.",
+     "description": "The list of proposals to create.",
      "items": {
-      "$ref": "MarketplaceOrder"
+      "$ref": "Proposal"
      }
     },
     "webPropertyCode": {
@@ -349,11 +349,11 @@
    "id": "CreateOrdersResponse",
    "type": "object",
    "properties": {
-    "orders": {
+    "proposals": {
      "type": "array",
-     "description": "The list of orders successfully created.",
+     "description": "The list of proposals successfully created.",
      "items": {
-      "$ref": "MarketplaceOrder"
+      "$ref": "Proposal"
      }
     }
    }
@@ -805,7 +805,7 @@
     },
     "guaranteedLooks": {
      "type": "string",
-     "description": "Count of guaranteed looks. Required for deal, optional for offer.",
+     "description": "Count of guaranteed looks. Required for deal, optional for product.",
      "format": "int64"
     }
    }
@@ -846,14 +846,14 @@
    "properties": {
     "dealIds": {
      "type": "array",
-     "description": "List of deals to delete for a given order",
+     "description": "List of deals to delete for a given proposal",
      "items": {
       "type": "string"
      }
     },
-    "orderRevisionNumber": {
+    "proposalRevisionNumber": {
      "type": "string",
-     "description": "The last known order revision number.",
+     "description": "The last known proposal revision number.",
      "format": "int64"
     },
     "updateAction": {
@@ -867,14 +867,14 @@
    "properties": {
     "deals": {
      "type": "array",
-     "description": "List of deals deleted (in the same order as passed in the request)",
+     "description": "List of deals deleted (in the same proposal as passed in the request)",
      "items": {
       "$ref": "MarketplaceDeal"
      }
     },
-    "orderRevisionNumber": {
+    "proposalRevisionNumber": {
      "type": "string",
-     "description": "The updated revision number for the order.",
+     "description": "The updated revision number for the proposal.",
      "format": "int64"
     }
    }
@@ -920,23 +920,23 @@
    "properties": {
     "deals": {
      "type": "array",
-     "description": "List of deals to edit. Service may perform 3 different operations based on comparison of deals in this list vs deals already persisted in database: 1. Add new deal to order If a deal in this list does not exist in the order, the service will create a new deal and add it to the order. Validation will follow AddOrderDealsRequest. 2. Update existing deal in the order If a deal in this list already exist in the order, the service will update that existing deal to this new deal in the request. Validation will follow UpdateOrderDealsRequest. 3. Delete deals from the order (just need the id) If a existing deal in the order is not present in this list, the service will delete that deal from the order. Validation will follow DeleteOrderDealsRequest.",
+     "description": "List of deals to edit. Service may perform 3 different operations based on comparison of deals in this list vs deals already persisted in database: 1. Add new deal to proposal If a deal in this list does not exist in the proposal, the service will create a new deal and add it to the proposal. Validation will follow AddOrderDealsRequest. 2. Update existing deal in the proposal If a deal in this list already exist in the proposal, the service will update that existing deal to this new deal in the request. Validation will follow UpdateOrderDealsRequest. 3. Delete deals from the proposal (just need the id) If a existing deal in the proposal is not present in this list, the service will delete that deal from the proposal. Validation will follow DeleteOrderDealsRequest.",
      "items": {
       "$ref": "MarketplaceDeal"
      }
     },
-    "order": {
-     "$ref": "MarketplaceOrder",
-     "description": "If specified, also updates the order in the batch transaction. This is useful when the order and the deals need to be updated in one transaction."
+    "proposal": {
+     "$ref": "Proposal",
+     "description": "If specified, also updates the proposal in the batch transaction. This is useful when the proposal and the deals need to be updated in one transaction."
     },
-    "orderRevisionNumber": {
+    "proposalRevisionNumber": {
      "type": "string",
-     "description": "The last known revision number for the order.",
+     "description": "The last known revision number for the proposal.",
      "format": "int64"
     },
     "updateAction": {
      "type": "string",
-     "description": "Indicates an optional action to take on the order"
+     "description": "Indicates an optional action to take on the proposal"
     }
    }
   },
@@ -946,7 +946,7 @@
    "properties": {
     "deals": {
      "type": "array",
-     "description": "List of all deals in the order after edit.",
+     "description": "List of all deals in the proposal after edit.",
      "items": {
       "$ref": "MarketplaceDeal"
      }
@@ -957,11 +957,11 @@
    "id": "GetOffersResponse",
    "type": "object",
    "properties": {
-    "offers": {
+    "products": {
      "type": "array",
-     "description": "The returned list of offers.",
+     "description": "The returned list of products.",
      "items": {
-      "$ref": "MarketplaceOffer"
+      "$ref": "Product"
      }
     }
    }
@@ -972,7 +972,7 @@
    "properties": {
     "deals": {
      "type": "array",
-     "description": "List of deals for the order",
+     "description": "List of deals for the proposal",
      "items": {
       "$ref": "MarketplaceDeal"
      }
@@ -996,11 +996,11 @@
    "id": "GetOrdersResponse",
    "type": "object",
    "properties": {
-    "orders": {
+    "proposals": {
      "type": "array",
-     "description": "The list of matching orders.",
+     "description": "The list of matching proposals.",
      "items": {
-      "$ref": "MarketplaceOrder"
+      "$ref": "Proposal"
      }
     }
    }
@@ -1008,7 +1008,7 @@
   "MarketplaceDeal": {
    "id": "MarketplaceDeal",
    "type": "object",
-   "description": "An order can contain multiple deals. A deal contains the terms and targeting information that is used for serving.",
+   "description": "A proposal can contain multiple deals. A deal contains the terms and targeting information that is used for serving.",
    "properties": {
     "buyerPrivateData": {
      "$ref": "PrivateData",
@@ -1063,16 +1063,16 @@
      "type": "string",
      "description": "The name of the deal. (updatable)"
     },
-    "offerId": {
+    "productId": {
      "type": "string",
-     "description": "The offer-id from which this deal was created. (readonly, except on create)"
+     "description": "The product-id from which this deal was created. (readonly, except on create)"
     },
-    "offerRevisionNumber": {
+    "productRevisionNumber": {
      "type": "string",
-     "description": "The revision number of the offer that the deal was created from (readonly, except on create)",
+     "description": "The revision number of the product that the deal was created from (readonly, except on create)",
      "format": "int64"
     },
-    "orderId": {
+    "proposalId": {
      "type": "string"
     },
     "sellerContacts": {
@@ -1142,7 +1142,7 @@
   "MarketplaceNote": {
    "id": "MarketplaceNote",
    "type": "object",
-   "description": "An order is associated with a bunch of notes which may optionally be associated with a deal and/or revision number.",
+   "description": "A proposal is associated with a bunch of notes which may optionally be associated with a deal and/or revision number.",
    "properties": {
     "creatorRole": {
      "type": "string",
@@ -1165,13 +1165,13 @@
      "type": "string",
      "description": "The unique id for the note. (readonly)"
     },
-    "orderId": {
+    "proposalId": {
      "type": "string",
-     "description": "The order_id that a note is attached to. (readonly)"
+     "description": "The proposalId that a note is attached to. (readonly)"
     },
-    "orderRevisionNumber": {
+    "proposalRevisionNumber": {
      "type": "string",
-     "description": "If the note is associated with an order revision number, then store that here. (readonly, except on create)",
+     "description": "If the note is associated with a proposal revision number, then store that here. (readonly, except on create)",
      "format": "int64"
     },
     "timestampMs": {
@@ -1181,201 +1181,6 @@
     }
    }
   },
-  "MarketplaceOffer": {
-   "id": "MarketplaceOffer",
-   "type": "object",
-   "description": "An offer is segment of inventory that a seller wishes to sell. It is associated with certain terms and targeting information which helps buyer know more about the inventory. Each field in an order can have one of the following setting:\n\n(readonly) - It is an error to try and set this field. (buyer-readonly) - Only the seller can set this field. (seller-readonly) - Only the buyer can set this field. (updatable) - The field is updatable at all times by either buyer or the seller.",
-   "properties": {
-    "creationTimeMs": {
-     "type": "string",
-     "description": "Creation time in ms. since epoch (readonly)",
-     "format": "int64"
-    },
-    "creatorContacts": {
-     "type": "array",
-     "description": "Optional contact information for the creator of this offer. (buyer-readonly)",
-     "items": {
-      "$ref": "ContactInformation"
-     }
-    },
-    "flightEndTimeMs": {
-     "type": "string",
-     "description": "The proposed end time for the deal (ms since epoch) (buyer-readonly)",
-     "format": "int64"
-    },
-    "flightStartTimeMs": {
-     "type": "string",
-     "description": "Inventory availability dates. (times are in ms since epoch) The granularity is generally in the order of seconds. (buyer-readonly)",
-     "format": "int64"
-    },
-    "hasCreatorSignedOff": {
-     "type": "boolean",
-     "description": "If the creator has already signed off on the offer, then the buyer can finalize the deal by accepting the offer as is. When copying to an order, if any of the terms are changed, then auto_finalize is automatically set to false."
-    },
-    "inventorySource": {
-     "type": "string",
-     "description": "What exchange will provide this inventory (readonly, except on create)."
-    },
-    "kind": {
-     "type": "string",
-     "description": "Identifies what kind of resource this is. Value: the fixed string \"adexchangebuyer#marketplaceOffer\".",
-     "default": "adexchangebuyer#marketplaceOffer"
-    },
-    "labels": {
-     "type": "array",
-     "description": "Optional List of labels for the offer (optional, buyer-readonly).",
-     "items": {
-      "$ref": "MarketplaceLabel"
-     }
-    },
-    "lastUpdateTimeMs": {
-     "type": "string",
-     "description": "Time of last update in ms. since epoch (readonly)",
-     "format": "int64"
-    },
-    "name": {
-     "type": "string",
-     "description": "The name for this offer as set by the seller. (buyer-readonly)"
-    },
-    "offerId": {
-     "type": "string",
-     "description": "The unique id for the offer (readonly)"
-    },
-    "revisionNumber": {
-     "type": "string",
-     "description": "The revision number of the offer. (readonly)",
-     "format": "int64"
-    },
-    "seller": {
-     "$ref": "Seller",
-     "description": "Information about the seller that created this offer (readonly, except on create)"
-    },
-    "sharedTargetings": {
-     "type": "array",
-     "description": "Targeting that is shared between the buyer and the seller. Each targeting criteria has a specified key and for each key there is a list of inclusion value or exclusion values. (buyer-readonly)",
-     "items": {
-      "$ref": "SharedTargeting"
-     }
-    },
-    "state": {
-     "type": "string",
-     "description": "The state of the offer. (buyer-readonly)"
-    },
-    "syndicationProduct": {
-     "type": "string",
-     "description": "The syndication product associated with the deal. (readonly, except on create)"
-    },
-    "terms": {
-     "$ref": "DealTerms",
-     "description": "The negotiable terms of the deal (buyer-readonly)"
-    },
-    "webPropertyCode": {
-     "type": "string"
-    }
-   }
-  },
-  "MarketplaceOrder": {
-   "id": "MarketplaceOrder",
-   "type": "object",
-   "description": "Represents an order in the marketplace. An order is the unit of negotiation between a seller and a buyer and contains deals which are served. Each field in an order can have one of the following setting:\n\n(readonly) - It is an error to try and set this field. (buyer-readonly) - Only the seller can set this field. (seller-readonly) - Only the buyer can set this field. (updatable) - The field is updatable at all times by either buyer or the seller.",
-   "properties": {
-    "billedBuyer": {
-     "$ref": "Buyer",
-     "description": "Reference to the buyer that will get billed for this order. (readonly)"
-    },
-    "buyer": {
-     "$ref": "Buyer",
-     "description": "Reference to the buyer on the order. (readonly, except on create)"
-    },
-    "buyerContacts": {
-     "type": "array",
-     "description": "Optional contact information fort the buyer. (seller-readonly)",
-     "items": {
-      "$ref": "ContactInformation"
-     }
-    },
-    "buyerPrivateData": {
-     "$ref": "PrivateData",
-     "description": "Private data for buyer. (hidden from seller)."
-    },
-    "hasBuyerSignedOff": {
-     "type": "boolean",
-     "description": "When an order is in an accepted state, indicates whether the buyer has signed off Once both sides have signed off on a deal, the order can be finalized by the seller. (seller-readonly)"
-    },
-    "hasSellerSignedOff": {
-     "type": "boolean",
-     "description": "When an order is in an accepted state, indicates whether the buyer has signed off Once both sides have signed off on a deal, the order can be finalized by the seller. (buyer-readonly)"
-    },
-    "inventorySource": {
-     "type": "string",
-     "description": "What exchange will provide this inventory (readonly, except on create)."
-    },
-    "isRenegotiating": {
-     "type": "boolean",
-     "description": "True if the order is being renegotiated (readonly)."
-    },
-    "isSetupComplete": {
-     "type": "boolean",
-     "description": "True, if the buyside inventory setup is complete for this order. (readonly)"
-    },
-    "kind": {
-     "type": "string",
-     "description": "Identifies what kind of resource this is. Value: the fixed string \"adexchangebuyer#marketplaceOrder\".",
-     "default": "adexchangebuyer#marketplaceOrder"
-    },
-    "labels": {
-     "type": "array",
-     "description": "List of labels associated with the order. (readonly)",
-     "items": {
-      "$ref": "MarketplaceLabel"
-     }
-    },
-    "lastUpdaterOrCommentorRole": {
-     "type": "string",
-     "description": "The role of the last user that either updated the order or left a comment. (readonly)"
-    },
-    "lastUpdaterRole": {
-     "type": "string"
-    },
-    "name": {
-     "type": "string",
-     "description": "The name for the order (updatable)"
-    },
-    "orderId": {
-     "type": "string",
-     "description": "The unique id of the order. (readonly)."
-    },
-    "orderState": {
-     "type": "string",
-     "description": "The current state of the order. (readonly)"
-    },
-    "originatorRole": {
-     "type": "string",
-     "description": "Indicates whether the buyer/seller created the offer.(readonly)"
-    },
-    "revisionNumber": {
-     "type": "string",
-     "description": "The revision number for the order (readonly).",
-     "format": "int64"
-    },
-    "revisionTimeMs": {
-     "type": "string",
-     "description": "The time (ms since epoch) when the order was last revised (readonly).",
-     "format": "int64"
-    },
-    "seller": {
-     "$ref": "Seller",
-     "description": "Reference to the seller on the order. (readonly, except on create)"
-    },
-    "sellerContacts": {
-     "type": "array",
-     "description": "Optional contact information for the seller (buyer-readonly).",
-     "items": {
-      "$ref": "ContactInformation"
-     }
-    }
-   }
-  },
   "PerformanceReport": {
    "id": "PerformanceReport",
    "type": "object",
@@ -1774,14 +1579,14 @@
     },
     "pricingType": {
      "type": "string",
-     "description": "The pricing type for the deal/offer."
+     "description": "The pricing type for the deal/product."
     }
    }
   },
   "PricePerBuyer": {
    "id": "PricePerBuyer",
    "type": "object",
-   "description": "Used to specify pricing rules for buyers/advertisers. Each PricePerBuyer in an offer can become [0,1] deals. To check if there is a PricePerBuyer for a particular buyer or buyer/advertiser pair, we look for the most specific matching rule - we first look for a rule matching the buyer and advertiser, next a rule with the buyer but an empty advertiser list, and otherwise look for a matching rule where no buyer is set.",
+   "description": "Used to specify pricing rules for buyers/advertisers. Each PricePerBuyer in an product can become [0,1] deals. To check if there is a PricePerBuyer for a particular buyer or buyer/advertiser pair, we look for the most specific matching rule - we first look for a rule matching the buyer and advertiser, next a rule with the buyer but an empty advertiser list, and otherwise look for a matching rule where no buyer is set.",
    "properties": {
     "buyer": {
      "$ref": "Buyer",
@@ -1806,13 +1611,208 @@
     }
    }
   },
+  "Product": {
+   "id": "Product",
+   "type": "object",
+   "description": "A product is segment of inventory that a seller wishes to sell. It is associated with certain terms and targeting information which helps buyer know more about the inventory. Each field in a product can have one of the following setting:\n\n(readonly) - It is an error to try and set this field. (buyer-readonly) - Only the seller can set this field. (seller-readonly) - Only the buyer can set this field. (updatable) - The field is updatable at all times by either buyer or the seller.",
+   "properties": {
+    "creationTimeMs": {
+     "type": "string",
+     "description": "Creation time in ms. since epoch (readonly)",
+     "format": "int64"
+    },
+    "creatorContacts": {
+     "type": "array",
+     "description": "Optional contact information for the creator of this product. (buyer-readonly)",
+     "items": {
+      "$ref": "ContactInformation"
+     }
+    },
+    "flightEndTimeMs": {
+     "type": "string",
+     "description": "The proposed end time for the deal (ms since epoch) (buyer-readonly)",
+     "format": "int64"
+    },
+    "flightStartTimeMs": {
+     "type": "string",
+     "description": "Inventory availability dates. (times are in ms since epoch) The granularity is generally in the order of seconds. (buyer-readonly)",
+     "format": "int64"
+    },
+    "hasCreatorSignedOff": {
+     "type": "boolean",
+     "description": "If the creator has already signed off on the product, then the buyer can finalize the deal by accepting the product as is. When copying to a proposal, if any of the terms are changed, then auto_finalize is automatically set to false."
+    },
+    "inventorySource": {
+     "type": "string",
+     "description": "What exchange will provide this inventory (readonly, except on create)."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"adexchangebuyer#product\".",
+     "default": "adexchangebuyer#product"
+    },
+    "labels": {
+     "type": "array",
+     "description": "Optional List of labels for the product (optional, buyer-readonly).",
+     "items": {
+      "$ref": "MarketplaceLabel"
+     }
+    },
+    "lastUpdateTimeMs": {
+     "type": "string",
+     "description": "Time of last update in ms. since epoch (readonly)",
+     "format": "int64"
+    },
+    "name": {
+     "type": "string",
+     "description": "The name for this product as set by the seller. (buyer-readonly)"
+    },
+    "productId": {
+     "type": "string",
+     "description": "The unique id for the product (readonly)"
+    },
+    "revisionNumber": {
+     "type": "string",
+     "description": "The revision number of the product. (readonly)",
+     "format": "int64"
+    },
+    "seller": {
+     "$ref": "Seller",
+     "description": "Information about the seller that created this product (readonly, except on create)"
+    },
+    "sharedTargetings": {
+     "type": "array",
+     "description": "Targeting that is shared between the buyer and the seller. Each targeting criteria has a specified key and for each key there is a list of inclusion value or exclusion values. (buyer-readonly)",
+     "items": {
+      "$ref": "SharedTargeting"
+     }
+    },
+    "state": {
+     "type": "string",
+     "description": "The state of the product. (buyer-readonly)"
+    },
+    "syndicationProduct": {
+     "type": "string",
+     "description": "The syndication product associated with the deal. (readonly, except on create)"
+    },
+    "terms": {
+     "$ref": "DealTerms",
+     "description": "The negotiable terms of the deal (buyer-readonly)"
+    },
+    "webPropertyCode": {
+     "type": "string"
+    }
+   }
+  },
+  "Proposal": {
+   "id": "Proposal",
+   "type": "object",
+   "description": "Represents a proposal in the marketplace. A proposal is the unit of negotiation between a seller and a buyer and contains deals which are served. Each field in a proposal can have one of the following setting:\n\n(readonly) - It is an error to try and set this field. (buyer-readonly) - Only the seller can set this field. (seller-readonly) - Only the buyer can set this field. (updatable) - The field is updatable at all times by either buyer or the seller.",
+   "properties": {
+    "billedBuyer": {
+     "$ref": "Buyer",
+     "description": "Reference to the buyer that will get billed for this proposal. (readonly)"
+    },
+    "buyer": {
+     "$ref": "Buyer",
+     "description": "Reference to the buyer on the proposal. (readonly, except on create)"
+    },
+    "buyerContacts": {
+     "type": "array",
+     "description": "Optional contact information fort the buyer. (seller-readonly)",
+     "items": {
+      "$ref": "ContactInformation"
+     }
+    },
+    "buyerPrivateData": {
+     "$ref": "PrivateData",
+     "description": "Private data for buyer. (hidden from seller)."
+    },
+    "hasBuyerSignedOff": {
+     "type": "boolean",
+     "description": "When an proposal is in an accepted state, indicates whether the buyer has signed off Once both sides have signed off on a deal, the proposal can be finalized by the seller. (seller-readonly)"
+    },
+    "hasSellerSignedOff": {
+     "type": "boolean",
+     "description": "When an proposal is in an accepted state, indicates whether the buyer has signed off Once both sides have signed off on a deal, the proposal can be finalized by the seller. (buyer-readonly)"
+    },
+    "inventorySource": {
+     "type": "string",
+     "description": "What exchange will provide this inventory (readonly, except on create)."
+    },
+    "isRenegotiating": {
+     "type": "boolean",
+     "description": "True if the proposal is being renegotiated (readonly)."
+    },
+    "isSetupComplete": {
+     "type": "boolean",
+     "description": "True, if the buyside inventory setup is complete for this proposal. (readonly)"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"adexchangebuyer#proposal\".",
+     "default": "adexchangebuyer#proposal"
+    },
+    "labels": {
+     "type": "array",
+     "description": "List of labels associated with the proposal. (readonly)",
+     "items": {
+      "$ref": "MarketplaceLabel"
+     }
+    },
+    "lastUpdaterOrCommentorRole": {
+     "type": "string",
+     "description": "The role of the last user that either updated the proposal or left a comment. (readonly)"
+    },
+    "lastUpdaterRole": {
+     "type": "string"
+    },
+    "name": {
+     "type": "string",
+     "description": "The name for the proposal (updatable)"
+    },
+    "originatorRole": {
+     "type": "string",
+     "description": "Indicates whether the buyer/seller created the proposal.(readonly)"
+    },
+    "proposalId": {
+     "type": "string",
+     "description": "The unique id of the proposal. (readonly)."
+    },
+    "proposalState": {
+     "type": "string",
+     "description": "The current state of the proposal. (readonly)"
+    },
+    "revisionNumber": {
+     "type": "string",
+     "description": "The revision number for the proposal (readonly).",
+     "format": "int64"
+    },
+    "revisionTimeMs": {
+     "type": "string",
+     "description": "The time (ms since epoch) when the proposal was last revised (readonly).",
+     "format": "int64"
+    },
+    "seller": {
+     "$ref": "Seller",
+     "description": "Reference to the seller on the proposal. (readonly, except on create)"
+    },
+    "sellerContacts": {
+     "type": "array",
+     "description": "Optional contact information for the seller (buyer-readonly).",
+     "items": {
+      "$ref": "ContactInformation"
+     }
+    }
+   }
+  },
   "Seller": {
    "id": "Seller",
    "type": "object",
    "properties": {
     "accountId": {
      "type": "string",
-     "description": "The unique id for the seller. The seller fills in this field. The seller account id is then available to buyer in the offer."
+     "description": "The unique id for the seller. The seller fills in this field. The seller account id is then available to buyer in the product."
     },
     "subAccountId": {
      "type": "string",
@@ -2386,19 +2386,19 @@
    "methods": {
     "delete": {
      "id": "adexchangebuyer.marketplacedeals.delete",
-     "path": "marketplaceOrders/{orderId}/deals/delete",
+     "path": "proposals/{proposalId}/deals/delete",
      "httpMethod": "POST",
-     "description": "Delete the specified deals from the order",
+     "description": "Delete the specified deals from the proposal",
      "parameters": {
-      "orderId": {
+      "proposalId": {
        "type": "string",
-       "description": "The orderId to delete deals from.",
+       "description": "The proposalId to delete deals from.",
        "required": true,
        "location": "path"
       }
      },
      "parameterOrder": [
-      "orderId"
+      "proposalId"
      ],
      "request": {
       "$ref": "DeleteOrderDealsRequest"
@@ -2412,19 +2412,19 @@
     },
     "insert": {
      "id": "adexchangebuyer.marketplacedeals.insert",
-     "path": "marketplaceOrders/{orderId}/deals/insert",
+     "path": "proposals/{proposalId}/deals/insert",
      "httpMethod": "POST",
-     "description": "Add new deals for the specified order",
+     "description": "Add new deals for the specified proposal",
      "parameters": {
-      "orderId": {
+      "proposalId": {
        "type": "string",
-       "description": "OrderId for which deals need to be added.",
+       "description": "proposalId for which deals need to be added.",
        "required": true,
        "location": "path"
       }
      },
      "parameterOrder": [
-      "orderId"
+      "proposalId"
      ],
      "request": {
       "$ref": "AddOrderDealsRequest"
@@ -2438,19 +2438,19 @@
     },
     "list": {
      "id": "adexchangebuyer.marketplacedeals.list",
-     "path": "marketplaceOrders/{orderId}/deals",
+     "path": "proposals/{proposalId}/deals",
      "httpMethod": "GET",
-     "description": "List all the deals for a given order",
+     "description": "List all the deals for a given proposal",
      "parameters": {
-      "orderId": {
+      "proposalId": {
        "type": "string",
-       "description": "The orderId to get deals for.",
+       "description": "The proposalId to get deals for.",
        "required": true,
        "location": "path"
       }
      },
      "parameterOrder": [
-      "orderId"
+      "proposalId"
      ],
      "response": {
       "$ref": "GetOrderDealsResponse"
@@ -2461,19 +2461,19 @@
     },
     "update": {
      "id": "adexchangebuyer.marketplacedeals.update",
-     "path": "marketplaceOrders/{orderId}/deals/update",
+     "path": "proposals/{proposalId}/deals/update",
      "httpMethod": "POST",
-     "description": "Replaces all the deals in the order with the passed in deals",
+     "description": "Replaces all the deals in the proposal with the passed in deals",
      "parameters": {
-      "orderId": {
+      "proposalId": {
        "type": "string",
-       "description": "The orderId to edit deals on.",
+       "description": "The proposalId to edit deals on.",
        "required": true,
        "location": "path"
       }
      },
      "parameterOrder": [
-      "orderId"
+      "proposalId"
      ],
      "request": {
       "$ref": "EditAllOrderDealsRequest"
@@ -2491,19 +2491,19 @@
    "methods": {
     "insert": {
      "id": "adexchangebuyer.marketplacenotes.insert",
-     "path": "marketplaceOrders/{orderId}/notes/insert",
+     "path": "proposals/{proposalId}/notes/insert",
      "httpMethod": "POST",
-     "description": "Add notes to the order",
+     "description": "Add notes to the proposal",
      "parameters": {
-      "orderId": {
+      "proposalId": {
        "type": "string",
-       "description": "The orderId to add notes for.",
+       "description": "The proposalId to add notes for.",
        "required": true,
        "location": "path"
       }
      },
      "parameterOrder": [
-      "orderId"
+      "proposalId"
      ],
      "request": {
       "$ref": "AddOrderNotesRequest"
@@ -2517,19 +2517,19 @@
     },
     "list": {
      "id": "adexchangebuyer.marketplacenotes.list",
-     "path": "marketplaceOrders/{orderId}/notes",
+     "path": "proposals/{proposalId}/notes",
      "httpMethod": "GET",
-     "description": "Get all the notes associated with an order",
+     "description": "Get all the notes associated with a proposal",
      "parameters": {
-      "orderId": {
+      "proposalId": {
        "type": "string",
-       "description": "The orderId to get notes for.",
+       "description": "The proposalId to get notes for.",
        "required": true,
        "location": "path"
       }
      },
      "parameterOrder": [
-      "orderId"
+      "proposalId"
      ],
      "response": {
       "$ref": "GetOrderNotesResponse"
@@ -2540,223 +2540,6 @@
     }
    }
   },
-  "marketplaceoffers": {
-   "methods": {
-    "get": {
-     "id": "adexchangebuyer.marketplaceoffers.get",
-     "path": "marketplaceOffers/{offerId}",
-     "httpMethod": "GET",
-     "description": "Gets the requested negotiation.",
-     "parameters": {
-      "offerId": {
-       "type": "string",
-       "description": "The offerId for the offer to get the head revision for.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "offerId"
-     ],
-     "response": {
-      "$ref": "MarketplaceOffer"
-     },
-     "scopes": [
-      "https://www.googleapis.com/auth/adexchange.buyer"
-     ]
-    },
-    "search": {
-     "id": "adexchangebuyer.marketplaceoffers.search",
-     "path": "marketplaceOffers/search",
-     "httpMethod": "GET",
-     "description": "Gets the requested negotiation.",
-     "parameters": {
-      "pqlQuery": {
-       "type": "string",
-       "description": "The pql query used to query for offers.",
-       "location": "query"
-      }
-     },
-     "response": {
-      "$ref": "GetOffersResponse"
-     },
-     "scopes": [
-      "https://www.googleapis.com/auth/adexchange.buyer"
-     ]
-    }
-   }
-  },
-  "marketplaceorders": {
-   "methods": {
-    "get": {
-     "id": "adexchangebuyer.marketplaceorders.get",
-     "path": "marketplaceOrders/{orderId}",
-     "httpMethod": "GET",
-     "description": "Get an order given its id",
-     "parameters": {
-      "orderId": {
-       "type": "string",
-       "description": "Id of the order to retrieve.",
-       "required": true,
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "orderId"
-     ],
-     "response": {
-      "$ref": "MarketplaceOrder"
-     },
-     "scopes": [
-      "https://www.googleapis.com/auth/adexchange.buyer"
-     ]
-    },
-    "insert": {
-     "id": "adexchangebuyer.marketplaceorders.insert",
-     "path": "marketplaceOrders/insert",
-     "httpMethod": "POST",
-     "description": "Create the given list of orders",
-     "request": {
-      "$ref": "CreateOrdersRequest"
-     },
-     "response": {
-      "$ref": "CreateOrdersResponse"
-     },
-     "scopes": [
-      "https://www.googleapis.com/auth/adexchange.buyer"
-     ]
-    },
-    "patch": {
-     "id": "adexchangebuyer.marketplaceorders.patch",
-     "path": "marketplaceOrders/{orderId}/{revisionNumber}/{updateAction}",
-     "httpMethod": "PATCH",
-     "description": "Update the given order. This method supports patch semantics.",
-     "parameters": {
-      "orderId": {
-       "type": "string",
-       "description": "The order id to update.",
-       "required": true,
-       "location": "path"
-      },
-      "revisionNumber": {
-       "type": "string",
-       "description": "The last known revision number to update. If the head revision in the marketplace database has since changed, an error will be thrown. The caller should then fetch the lastest order at head revision and retry the update at that revision.",
-       "required": true,
-       "format": "int64",
-       "location": "path"
-      },
-      "updateAction": {
-       "type": "string",
-       "description": "The proposed action to take on the order.",
-       "required": true,
-       "enum": [
-        "accept",
-        "cancel",
-        "propose",
-        "unknownAction",
-        "updateFinalized"
-       ],
-       "enumDescriptions": [
-        "",
-        "",
-        "",
-        "",
-        ""
-       ],
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "orderId",
-      "revisionNumber",
-      "updateAction"
-     ],
-     "request": {
-      "$ref": "MarketplaceOrder"
-     },
-     "response": {
-      "$ref": "MarketplaceOrder"
-     },
-     "scopes": [
-      "https://www.googleapis.com/auth/adexchange.buyer"
-     ]
-    },
-    "search": {
-     "id": "adexchangebuyer.marketplaceorders.search",
-     "path": "marketplaceOrders/search",
-     "httpMethod": "GET",
-     "description": "Search for orders using pql query",
-     "parameters": {
-      "pqlQuery": {
-       "type": "string",
-       "description": "Query string to retrieve specific orders.",
-       "location": "query"
-      }
-     },
-     "response": {
-      "$ref": "GetOrdersResponse"
-     },
-     "scopes": [
-      "https://www.googleapis.com/auth/adexchange.buyer"
-     ]
-    },
-    "update": {
-     "id": "adexchangebuyer.marketplaceorders.update",
-     "path": "marketplaceOrders/{orderId}/{revisionNumber}/{updateAction}",
-     "httpMethod": "PUT",
-     "description": "Update the given order",
-     "parameters": {
-      "orderId": {
-       "type": "string",
-       "description": "The order id to update.",
-       "required": true,
-       "location": "path"
-      },
-      "revisionNumber": {
-       "type": "string",
-       "description": "The last known revision number to update. If the head revision in the marketplace database has since changed, an error will be thrown. The caller should then fetch the lastest order at head revision and retry the update at that revision.",
-       "required": true,
-       "format": "int64",
-       "location": "path"
-      },
-      "updateAction": {
-       "type": "string",
-       "description": "The proposed action to take on the order.",
-       "required": true,
-       "enum": [
-        "accept",
-        "cancel",
-        "propose",
-        "unknownAction",
-        "updateFinalized"
-       ],
-       "enumDescriptions": [
-        "",
-        "",
-        "",
-        "",
-        ""
-       ],
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "orderId",
-      "revisionNumber",
-      "updateAction"
-     ],
-     "request": {
-      "$ref": "MarketplaceOrder"
-     },
-     "response": {
-      "$ref": "MarketplaceOrder"
-     },
-     "scopes": [
-      "https://www.googleapis.com/auth/adexchange.buyer"
-     ]
-    }
-   }
-  },
   "performanceReport": {
    "methods": {
     "list": {
@@ -2997,6 +2780,223 @@
      ]
     }
    }
+  },
+  "products": {
+   "methods": {
+    "get": {
+     "id": "adexchangebuyer.products.get",
+     "path": "products/{productId}",
+     "httpMethod": "GET",
+     "description": "Gets the requested product by id.",
+     "parameters": {
+      "productId": {
+       "type": "string",
+       "description": "The id for the product to get the head revision for.",
+       "required": true,
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "productId"
+     ],
+     "response": {
+      "$ref": "Product"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/adexchange.buyer"
+     ]
+    },
+    "search": {
+     "id": "adexchangebuyer.products.search",
+     "path": "products/search",
+     "httpMethod": "GET",
+     "description": "Gets the requested product.",
+     "parameters": {
+      "pqlQuery": {
+       "type": "string",
+       "description": "The pql query used to query for products.",
+       "location": "query"
+      }
+     },
+     "response": {
+      "$ref": "GetOffersResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/adexchange.buyer"
+     ]
+    }
+   }
+  },
+  "proposals": {
+   "methods": {
+    "get": {
+     "id": "adexchangebuyer.proposals.get",
+     "path": "proposals/{proposalId}",
+     "httpMethod": "GET",
+     "description": "Get a proposal given its id",
+     "parameters": {
+      "proposalId": {
+       "type": "string",
+       "description": "Id of the proposal to retrieve.",
+       "required": true,
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "proposalId"
+     ],
+     "response": {
+      "$ref": "Proposal"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/adexchange.buyer"
+     ]
+    },
+    "insert": {
+     "id": "adexchangebuyer.proposals.insert",
+     "path": "proposals/insert",
+     "httpMethod": "POST",
+     "description": "Create the given list of proposals",
+     "request": {
+      "$ref": "CreateOrdersRequest"
+     },
+     "response": {
+      "$ref": "CreateOrdersResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/adexchange.buyer"
+     ]
+    },
+    "patch": {
+     "id": "adexchangebuyer.proposals.patch",
+     "path": "proposals/{proposalId}/{revisionNumber}/{updateAction}",
+     "httpMethod": "PATCH",
+     "description": "Update the given proposal. This method supports patch semantics.",
+     "parameters": {
+      "proposalId": {
+       "type": "string",
+       "description": "The proposal id to update.",
+       "required": true,
+       "location": "path"
+      },
+      "revisionNumber": {
+       "type": "string",
+       "description": "The last known revision number to update. If the head revision in the marketplace database has since changed, an error will be thrown. The caller should then fetch the latest proposal at head revision and retry the update at that revision.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "updateAction": {
+       "type": "string",
+       "description": "The proposed action to take on the proposal.",
+       "required": true,
+       "enum": [
+        "accept",
+        "cancel",
+        "propose",
+        "unknownAction",
+        "updateFinalized"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        "",
+        "",
+        ""
+       ],
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "proposalId",
+      "revisionNumber",
+      "updateAction"
+     ],
+     "request": {
+      "$ref": "Proposal"
+     },
+     "response": {
+      "$ref": "Proposal"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/adexchange.buyer"
+     ]
+    },
+    "search": {
+     "id": "adexchangebuyer.proposals.search",
+     "path": "proposals/search",
+     "httpMethod": "GET",
+     "description": "Search for proposals using pql query",
+     "parameters": {
+      "pqlQuery": {
+       "type": "string",
+       "description": "Query string to retrieve specific proposals.",
+       "location": "query"
+      }
+     },
+     "response": {
+      "$ref": "GetOrdersResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/adexchange.buyer"
+     ]
+    },
+    "update": {
+     "id": "adexchangebuyer.proposals.update",
+     "path": "proposals/{proposalId}/{revisionNumber}/{updateAction}",
+     "httpMethod": "PUT",
+     "description": "Update the given proposal",
+     "parameters": {
+      "proposalId": {
+       "type": "string",
+       "description": "The proposal id to update.",
+       "required": true,
+       "location": "path"
+      },
+      "revisionNumber": {
+       "type": "string",
+       "description": "The last known revision number to update. If the head revision in the marketplace database has since changed, an error will be thrown. The caller should then fetch the latest proposal at head revision and retry the update at that revision.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "updateAction": {
+       "type": "string",
+       "description": "The proposed action to take on the proposal.",
+       "required": true,
+       "enum": [
+        "accept",
+        "cancel",
+        "propose",
+        "unknownAction",
+        "updateFinalized"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        "",
+        "",
+        ""
+       ],
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "proposalId",
+      "revisionNumber",
+      "updateAction"
+     ],
+     "request": {
+      "$ref": "Proposal"
+     },
+     "response": {
+      "$ref": "Proposal"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/adexchange.buyer"
+     ]
+    }
+   }
   }
  }
 }
diff --git a/adexchangebuyer/v1.4/adexchangebuyer-gen.go b/adexchangebuyer/v1.4/adexchangebuyer-gen.go
index 94b6821..10bbd0f 100644
--- a/adexchangebuyer/v1.4/adexchangebuyer-gen.go
+++ b/adexchangebuyer/v1.4/adexchangebuyer-gen.go
@@ -62,10 +62,10 @@
 	s.Creatives = NewCreativesService(s)
 	s.Marketplacedeals = NewMarketplacedealsService(s)
 	s.Marketplacenotes = NewMarketplacenotesService(s)
-	s.Marketplaceoffers = NewMarketplaceoffersService(s)
-	s.Marketplaceorders = NewMarketplaceordersService(s)
 	s.PerformanceReport = NewPerformanceReportService(s)
 	s.PretargetingConfig = NewPretargetingConfigService(s)
+	s.Products = NewProductsService(s)
+	s.Proposals = NewProposalsService(s)
 	return s, nil
 }
 
@@ -86,13 +86,13 @@
 
 	Marketplacenotes *MarketplacenotesService
 
-	Marketplaceoffers *MarketplaceoffersService
-
-	Marketplaceorders *MarketplaceordersService
-
 	PerformanceReport *PerformanceReportService
 
 	PretargetingConfig *PretargetingConfigService
+
+	Products *ProductsService
+
+	Proposals *ProposalsService
 }
 
 func (s *Service) userAgent() string {
@@ -156,24 +156,6 @@
 	s *Service
 }
 
-func NewMarketplaceoffersService(s *Service) *MarketplaceoffersService {
-	rs := &MarketplaceoffersService{s: s}
-	return rs
-}
-
-type MarketplaceoffersService struct {
-	s *Service
-}
-
-func NewMarketplaceordersService(s *Service) *MarketplaceordersService {
-	rs := &MarketplaceordersService{s: s}
-	return rs
-}
-
-type MarketplaceordersService struct {
-	s *Service
-}
-
 func NewPerformanceReportService(s *Service) *PerformanceReportService {
 	rs := &PerformanceReportService{s: s}
 	return rs
@@ -192,6 +174,24 @@
 	s *Service
 }
 
+func NewProductsService(s *Service) *ProductsService {
+	rs := &ProductsService{s: s}
+	return rs
+}
+
+type ProductsService struct {
+	s *Service
+}
+
+func NewProposalsService(s *Service) *ProposalsService {
+	rs := &ProposalsService{s: s}
+	return rs
+}
+
+type ProposalsService struct {
+	s *Service
+}
+
 // Account: Configuration data for an Ad Exchange buyer account.
 type Account struct {
 	// BidderLocation: Your bidder locations that have distinct URLs.
@@ -309,10 +309,10 @@
 	// Deals: The list of deals to add
 	Deals []*MarketplaceDeal `json:"deals,omitempty"`
 
-	// OrderRevisionNumber: The last known order revision number.
-	OrderRevisionNumber int64 `json:"orderRevisionNumber,omitempty,string"`
+	// ProposalRevisionNumber: The last known proposal revision number.
+	ProposalRevisionNumber int64 `json:"proposalRevisionNumber,omitempty,string"`
 
-	// UpdateAction: Indicates an optional action to take on the order
+	// UpdateAction: Indicates an optional action to take on the proposal
 	UpdateAction string `json:"updateAction,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Deals") to
@@ -331,12 +331,12 @@
 }
 
 type AddOrderDealsResponse struct {
-	// Deals: List of deals added (in the same order as passed in the
+	// Deals: List of deals added (in the same proposal as passed in the
 	// request)
 	Deals []*MarketplaceDeal `json:"deals,omitempty"`
 
-	// OrderRevisionNumber: The updated revision number for the order.
-	OrderRevisionNumber int64 `json:"orderRevisionNumber,omitempty,string"`
+	// ProposalRevisionNumber: The updated revision number for the proposal.
+	ProposalRevisionNumber int64 `json:"proposalRevisionNumber,omitempty,string"`
 
 	// ServerResponse contains the HTTP response code and headers from the
 	// server.
@@ -548,12 +548,12 @@
 }
 
 type CreateOrdersRequest struct {
-	// Orders: The list of orders to create.
-	Orders []*MarketplaceOrder `json:"orders,omitempty"`
+	// Proposals: The list of proposals to create.
+	Proposals []*Proposal `json:"proposals,omitempty"`
 
 	WebPropertyCode string `json:"webPropertyCode,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "Orders") to
+	// ForceSendFields is a list of field names (e.g. "Proposals") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -569,14 +569,14 @@
 }
 
 type CreateOrdersResponse struct {
-	// Orders: The list of orders successfully created.
-	Orders []*MarketplaceOrder `json:"orders,omitempty"`
+	// Proposals: The list of proposals successfully created.
+	Proposals []*Proposal `json:"proposals,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
 	// server.
 	googleapi.ServerResponse `json:"-"`
 
-	// ForceSendFields is a list of field names (e.g. "Orders") to
+	// ForceSendFields is a list of field names (e.g. "Proposals") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -1088,7 +1088,7 @@
 	GuaranteedImpressions int64 `json:"guaranteedImpressions,omitempty,string"`
 
 	// GuaranteedLooks: Count of guaranteed looks. Required for deal,
-	// optional for offer.
+	// optional for product.
 	GuaranteedLooks int64 `json:"guaranteedLooks,omitempty,string"`
 
 	// ForceSendFields is a list of field names (e.g. "FixedPrices") to
@@ -1148,11 +1148,11 @@
 }
 
 type DeleteOrderDealsRequest struct {
-	// DealIds: List of deals to delete for a given order
+	// DealIds: List of deals to delete for a given proposal
 	DealIds []string `json:"dealIds,omitempty"`
 
-	// OrderRevisionNumber: The last known order revision number.
-	OrderRevisionNumber int64 `json:"orderRevisionNumber,omitempty,string"`
+	// ProposalRevisionNumber: The last known proposal revision number.
+	ProposalRevisionNumber int64 `json:"proposalRevisionNumber,omitempty,string"`
 
 	UpdateAction string `json:"updateAction,omitempty"`
 
@@ -1172,12 +1172,12 @@
 }
 
 type DeleteOrderDealsResponse struct {
-	// Deals: List of deals deleted (in the same order as passed in the
+	// Deals: List of deals deleted (in the same proposal as passed in the
 	// request)
 	Deals []*MarketplaceDeal `json:"deals,omitempty"`
 
-	// OrderRevisionNumber: The updated revision number for the order.
-	OrderRevisionNumber int64 `json:"orderRevisionNumber,omitempty,string"`
+	// ProposalRevisionNumber: The updated revision number for the proposal.
+	ProposalRevisionNumber int64 `json:"proposalRevisionNumber,omitempty,string"`
 
 	// ServerResponse contains the HTTP response code and headers from the
 	// server.
@@ -1246,27 +1246,28 @@
 type EditAllOrderDealsRequest struct {
 	// Deals: List of deals to edit. Service may perform 3 different
 	// operations based on comparison of deals in this list vs deals already
-	// persisted in database: 1. Add new deal to order If a deal in this
-	// list does not exist in the order, the service will create a new deal
-	// and add it to the order. Validation will follow AddOrderDealsRequest.
-	// 2. Update existing deal in the order If a deal in this list already
-	// exist in the order, the service will update that existing deal to
-	// this new deal in the request. Validation will follow
-	// UpdateOrderDealsRequest. 3. Delete deals from the order (just need
-	// the id) If a existing deal in the order is not present in this list,
-	// the service will delete that deal from the order. Validation will
-	// follow DeleteOrderDealsRequest.
+	// persisted in database: 1. Add new deal to proposal If a deal in this
+	// list does not exist in the proposal, the service will create a new
+	// deal and add it to the proposal. Validation will follow
+	// AddOrderDealsRequest. 2. Update existing deal in the proposal If a
+	// deal in this list already exist in the proposal, the service will
+	// update that existing deal to this new deal in the request. Validation
+	// will follow UpdateOrderDealsRequest. 3. Delete deals from the
+	// proposal (just need the id) If a existing deal in the proposal is not
+	// present in this list, the service will delete that deal from the
+	// proposal. Validation will follow DeleteOrderDealsRequest.
 	Deals []*MarketplaceDeal `json:"deals,omitempty"`
 
-	// Order: If specified, also updates the order in the batch transaction.
-	// This is useful when the order and the deals need to be updated in one
-	// transaction.
-	Order *MarketplaceOrder `json:"order,omitempty"`
+	// Proposal: If specified, also updates the proposal in the batch
+	// transaction. This is useful when the proposal and the deals need to
+	// be updated in one transaction.
+	Proposal *Proposal `json:"proposal,omitempty"`
 
-	// OrderRevisionNumber: The last known revision number for the order.
-	OrderRevisionNumber int64 `json:"orderRevisionNumber,omitempty,string"`
+	// ProposalRevisionNumber: The last known revision number for the
+	// proposal.
+	ProposalRevisionNumber int64 `json:"proposalRevisionNumber,omitempty,string"`
 
-	// UpdateAction: Indicates an optional action to take on the order
+	// UpdateAction: Indicates an optional action to take on the proposal
 	UpdateAction string `json:"updateAction,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Deals") to
@@ -1285,7 +1286,7 @@
 }
 
 type EditAllOrderDealsResponse struct {
-	// Deals: List of all deals in the order after edit.
+	// Deals: List of all deals in the proposal after edit.
 	Deals []*MarketplaceDeal `json:"deals,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -1308,14 +1309,14 @@
 }
 
 type GetOffersResponse struct {
-	// Offers: The returned list of offers.
-	Offers []*MarketplaceOffer `json:"offers,omitempty"`
+	// Products: The returned list of products.
+	Products []*Product `json:"products,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
 	// server.
 	googleapi.ServerResponse `json:"-"`
 
-	// ForceSendFields is a list of field names (e.g. "Offers") to
+	// ForceSendFields is a list of field names (e.g. "Products") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -1331,7 +1332,7 @@
 }
 
 type GetOrderDealsResponse struct {
-	// Deals: List of deals for the order
+	// Deals: List of deals for the proposal
 	Deals []*MarketplaceDeal `json:"deals,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -1377,14 +1378,14 @@
 }
 
 type GetOrdersResponse struct {
-	// Orders: The list of matching orders.
-	Orders []*MarketplaceOrder `json:"orders,omitempty"`
+	// Proposals: The list of matching proposals.
+	Proposals []*Proposal `json:"proposals,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
 	// server.
 	googleapi.ServerResponse `json:"-"`
 
-	// ForceSendFields is a list of field names (e.g. "Orders") to
+	// ForceSendFields is a list of field names (e.g. "Proposals") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -1399,8 +1400,9 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
-// MarketplaceDeal: An order can contain multiple deals. A deal contains
-// the terms and targeting information that is used for serving.
+// MarketplaceDeal: A proposal can contain multiple deals. A deal
+// contains the terms and targeting information that is used for
+// serving.
 type MarketplaceDeal struct {
 	// BuyerPrivateData: Buyer private data (hidden from seller).
 	BuyerPrivateData *PrivateData `json:"buyerPrivateData,omitempty"`
@@ -1451,15 +1453,15 @@
 	// Name: The name of the deal. (updatable)
 	Name string `json:"name,omitempty"`
 
-	// OfferId: The offer-id from which this deal was created. (readonly,
-	// except on create)
-	OfferId string `json:"offerId,omitempty"`
+	// ProductId: The product-id from which this deal was created.
+	// (readonly, except on create)
+	ProductId string `json:"productId,omitempty"`
 
-	// OfferRevisionNumber: The revision number of the offer that the deal
-	// was created from (readonly, except on create)
-	OfferRevisionNumber int64 `json:"offerRevisionNumber,omitempty,string"`
+	// ProductRevisionNumber: The revision number of the product that the
+	// deal was created from (readonly, except on create)
+	ProductRevisionNumber int64 `json:"productRevisionNumber,omitempty,string"`
 
-	OrderId string `json:"orderId,omitempty"`
+	ProposalId string `json:"proposalId,omitempty"`
 
 	// SellerContacts: Optional Seller contact information for the deal
 	// (buyer-readonly)
@@ -1546,7 +1548,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
-// MarketplaceNote: An order is associated with a bunch of notes which
+// MarketplaceNote: A proposal is associated with a bunch of notes which
 // may optionally be associated with a deal and/or revision number.
 type MarketplaceNote struct {
 	// CreatorRole: The role of the person (buyer/seller) creating the note.
@@ -1567,12 +1569,12 @@
 	// NoteId: The unique id for the note. (readonly)
 	NoteId string `json:"noteId,omitempty"`
 
-	// OrderId: The order_id that a note is attached to. (readonly)
-	OrderId string `json:"orderId,omitempty"`
+	// ProposalId: The proposalId that a note is attached to. (readonly)
+	ProposalId string `json:"proposalId,omitempty"`
 
-	// OrderRevisionNumber: If the note is associated with an order revision
-	// number, then store that here. (readonly, except on create)
-	OrderRevisionNumber int64 `json:"orderRevisionNumber,omitempty,string"`
+	// ProposalRevisionNumber: If the note is associated with a proposal
+	// revision number, then store that here. (readonly, except on create)
+	ProposalRevisionNumber int64 `json:"proposalRevisionNumber,omitempty,string"`
 
 	// TimestampMs: The timestamp (ms since epoch) that this note was
 	// created. (readonly)
@@ -1593,209 +1595,6 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
-// MarketplaceOffer: An offer is segment of inventory that a seller
-// wishes to sell. It is associated with certain terms and targeting
-// information which helps buyer know more about the inventory. Each
-// field in an order can have one of the following setting:
-//
-// (readonly) - It is an error to try and set this field.
-// (buyer-readonly) - Only the seller can set this field.
-// (seller-readonly) - Only the buyer can set this field. (updatable) -
-// The field is updatable at all times by either buyer or the seller.
-type MarketplaceOffer struct {
-	// CreationTimeMs: Creation time in ms. since epoch (readonly)
-	CreationTimeMs int64 `json:"creationTimeMs,omitempty,string"`
-
-	// CreatorContacts: Optional contact information for the creator of this
-	// offer. (buyer-readonly)
-	CreatorContacts []*ContactInformation `json:"creatorContacts,omitempty"`
-
-	// FlightEndTimeMs: The proposed end time for the deal (ms since epoch)
-	// (buyer-readonly)
-	FlightEndTimeMs int64 `json:"flightEndTimeMs,omitempty,string"`
-
-	// FlightStartTimeMs: Inventory availability dates. (times are in ms
-	// since epoch) The granularity is generally in the order of seconds.
-	// (buyer-readonly)
-	FlightStartTimeMs int64 `json:"flightStartTimeMs,omitempty,string"`
-
-	// HasCreatorSignedOff: If the creator has already signed off on the
-	// offer, then the buyer can finalize the deal by accepting the offer as
-	// is. When copying to an order, if any of the terms are changed, then
-	// auto_finalize is automatically set to false.
-	HasCreatorSignedOff bool `json:"hasCreatorSignedOff,omitempty"`
-
-	// InventorySource: What exchange will provide this inventory (readonly,
-	// except on create).
-	InventorySource string `json:"inventorySource,omitempty"`
-
-	// Kind: Identifies what kind of resource this is. Value: the fixed
-	// string "adexchangebuyer#marketplaceOffer".
-	Kind string `json:"kind,omitempty"`
-
-	// Labels: Optional List of labels for the offer (optional,
-	// buyer-readonly).
-	Labels []*MarketplaceLabel `json:"labels,omitempty"`
-
-	// LastUpdateTimeMs: Time of last update in ms. since epoch (readonly)
-	LastUpdateTimeMs int64 `json:"lastUpdateTimeMs,omitempty,string"`
-
-	// Name: The name for this offer as set by the seller. (buyer-readonly)
-	Name string `json:"name,omitempty"`
-
-	// OfferId: The unique id for the offer (readonly)
-	OfferId string `json:"offerId,omitempty"`
-
-	// RevisionNumber: The revision number of the offer. (readonly)
-	RevisionNumber int64 `json:"revisionNumber,omitempty,string"`
-
-	// Seller: Information about the seller that created this offer
-	// (readonly, except on create)
-	Seller *Seller `json:"seller,omitempty"`
-
-	// SharedTargetings: Targeting that is shared between the buyer and the
-	// seller. Each targeting criteria has a specified key and for each key
-	// there is a list of inclusion value or exclusion values.
-	// (buyer-readonly)
-	SharedTargetings []*SharedTargeting `json:"sharedTargetings,omitempty"`
-
-	// State: The state of the offer. (buyer-readonly)
-	State string `json:"state,omitempty"`
-
-	// SyndicationProduct: The syndication product associated with the deal.
-	// (readonly, except on create)
-	SyndicationProduct string `json:"syndicationProduct,omitempty"`
-
-	// Terms: The negotiable terms of the deal (buyer-readonly)
-	Terms *DealTerms `json:"terms,omitempty"`
-
-	WebPropertyCode string `json:"webPropertyCode,omitempty"`
-
-	// ServerResponse contains the HTTP response code and headers from the
-	// server.
-	googleapi.ServerResponse `json:"-"`
-
-	// ForceSendFields is a list of field names (e.g. "CreationTimeMs") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-}
-
-func (s *MarketplaceOffer) MarshalJSON() ([]byte, error) {
-	type noMethod MarketplaceOffer
-	raw := noMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields)
-}
-
-// MarketplaceOrder: Represents an order in the marketplace. An order is
-// the unit of negotiation between a seller and a buyer and contains
-// deals which are served. Each field in an order can have one of the
-// following setting:
-//
-// (readonly) - It is an error to try and set this field.
-// (buyer-readonly) - Only the seller can set this field.
-// (seller-readonly) - Only the buyer can set this field. (updatable) -
-// The field is updatable at all times by either buyer or the seller.
-type MarketplaceOrder struct {
-	// BilledBuyer: Reference to the buyer that will get billed for this
-	// order. (readonly)
-	BilledBuyer *Buyer `json:"billedBuyer,omitempty"`
-
-	// Buyer: Reference to the buyer on the order. (readonly, except on
-	// create)
-	Buyer *Buyer `json:"buyer,omitempty"`
-
-	// BuyerContacts: Optional contact information fort the buyer.
-	// (seller-readonly)
-	BuyerContacts []*ContactInformation `json:"buyerContacts,omitempty"`
-
-	// BuyerPrivateData: Private data for buyer. (hidden from seller).
-	BuyerPrivateData *PrivateData `json:"buyerPrivateData,omitempty"`
-
-	// HasBuyerSignedOff: When an order is in an accepted state, indicates
-	// whether the buyer has signed off Once both sides have signed off on a
-	// deal, the order can be finalized by the seller. (seller-readonly)
-	HasBuyerSignedOff bool `json:"hasBuyerSignedOff,omitempty"`
-
-	// HasSellerSignedOff: When an order is in an accepted state, indicates
-	// whether the buyer has signed off Once both sides have signed off on a
-	// deal, the order can be finalized by the seller. (buyer-readonly)
-	HasSellerSignedOff bool `json:"hasSellerSignedOff,omitempty"`
-
-	// InventorySource: What exchange will provide this inventory (readonly,
-	// except on create).
-	InventorySource string `json:"inventorySource,omitempty"`
-
-	// IsRenegotiating: True if the order is being renegotiated (readonly).
-	IsRenegotiating bool `json:"isRenegotiating,omitempty"`
-
-	// IsSetupComplete: True, if the buyside inventory setup is complete for
-	// this order. (readonly)
-	IsSetupComplete bool `json:"isSetupComplete,omitempty"`
-
-	// Kind: Identifies what kind of resource this is. Value: the fixed
-	// string "adexchangebuyer#marketplaceOrder".
-	Kind string `json:"kind,omitempty"`
-
-	// Labels: List of labels associated with the order. (readonly)
-	Labels []*MarketplaceLabel `json:"labels,omitempty"`
-
-	// LastUpdaterOrCommentorRole: The role of the last user that either
-	// updated the order or left a comment. (readonly)
-	LastUpdaterOrCommentorRole string `json:"lastUpdaterOrCommentorRole,omitempty"`
-
-	LastUpdaterRole string `json:"lastUpdaterRole,omitempty"`
-
-	// Name: The name for the order (updatable)
-	Name string `json:"name,omitempty"`
-
-	// OrderId: The unique id of the order. (readonly).
-	OrderId string `json:"orderId,omitempty"`
-
-	// OrderState: The current state of the order. (readonly)
-	OrderState string `json:"orderState,omitempty"`
-
-	// OriginatorRole: Indicates whether the buyer/seller created the
-	// offer.(readonly)
-	OriginatorRole string `json:"originatorRole,omitempty"`
-
-	// RevisionNumber: The revision number for the order (readonly).
-	RevisionNumber int64 `json:"revisionNumber,omitempty,string"`
-
-	// RevisionTimeMs: The time (ms since epoch) when the order was last
-	// revised (readonly).
-	RevisionTimeMs int64 `json:"revisionTimeMs,omitempty,string"`
-
-	// Seller: Reference to the seller on the order. (readonly, except on
-	// create)
-	Seller *Seller `json:"seller,omitempty"`
-
-	// SellerContacts: Optional contact information for the seller
-	// (buyer-readonly).
-	SellerContacts []*ContactInformation `json:"sellerContacts,omitempty"`
-
-	// ServerResponse contains the HTTP response code and headers from the
-	// server.
-	googleapi.ServerResponse `json:"-"`
-
-	// ForceSendFields is a list of field names (e.g. "BilledBuyer") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-}
-
-func (s *MarketplaceOrder) MarshalJSON() ([]byte, error) {
-	type noMethod MarketplaceOrder
-	raw := noMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields)
-}
-
 // PerformanceReport: The configuration data for an Ad Exchange
 // performance report list.
 type PerformanceReport struct {
@@ -2180,7 +1979,7 @@
 	// CurrencyCode: The currency code for the price.
 	CurrencyCode string `json:"currencyCode,omitempty"`
 
-	// PricingType: The pricing type for the deal/offer.
+	// PricingType: The pricing type for the deal/product.
 	PricingType string `json:"pricingType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AmountMicros") to
@@ -2199,7 +1998,7 @@
 }
 
 // PricePerBuyer: Used to specify pricing rules for buyers/advertisers.
-// Each PricePerBuyer in an offer can become [0,1] deals. To check if
+// Each PricePerBuyer in an product can become [0,1] deals. To check if
 // there is a PricePerBuyer for a particular buyer or buyer/advertiser
 // pair, we look for the most specific matching rule - we first look for
 // a rule matching the buyer and advertiser, next a rule with the buyer
@@ -2249,9 +2048,217 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
+// Product: A product is segment of inventory that a seller wishes to
+// sell. It is associated with certain terms and targeting information
+// which helps buyer know more about the inventory. Each field in a
+// product can have one of the following setting:
+//
+// (readonly) - It is an error to try and set this field.
+// (buyer-readonly) - Only the seller can set this field.
+// (seller-readonly) - Only the buyer can set this field. (updatable) -
+// The field is updatable at all times by either buyer or the seller.
+type Product struct {
+	// CreationTimeMs: Creation time in ms. since epoch (readonly)
+	CreationTimeMs int64 `json:"creationTimeMs,omitempty,string"`
+
+	// CreatorContacts: Optional contact information for the creator of this
+	// product. (buyer-readonly)
+	CreatorContacts []*ContactInformation `json:"creatorContacts,omitempty"`
+
+	// FlightEndTimeMs: The proposed end time for the deal (ms since epoch)
+	// (buyer-readonly)
+	FlightEndTimeMs int64 `json:"flightEndTimeMs,omitempty,string"`
+
+	// FlightStartTimeMs: Inventory availability dates. (times are in ms
+	// since epoch) The granularity is generally in the order of seconds.
+	// (buyer-readonly)
+	FlightStartTimeMs int64 `json:"flightStartTimeMs,omitempty,string"`
+
+	// HasCreatorSignedOff: If the creator has already signed off on the
+	// product, then the buyer can finalize the deal by accepting the
+	// product as is. When copying to a proposal, if any of the terms are
+	// changed, then auto_finalize is automatically set to false.
+	HasCreatorSignedOff bool `json:"hasCreatorSignedOff,omitempty"`
+
+	// InventorySource: What exchange will provide this inventory (readonly,
+	// except on create).
+	InventorySource string `json:"inventorySource,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "adexchangebuyer#product".
+	Kind string `json:"kind,omitempty"`
+
+	// Labels: Optional List of labels for the product (optional,
+	// buyer-readonly).
+	Labels []*MarketplaceLabel `json:"labels,omitempty"`
+
+	// LastUpdateTimeMs: Time of last update in ms. since epoch (readonly)
+	LastUpdateTimeMs int64 `json:"lastUpdateTimeMs,omitempty,string"`
+
+	// Name: The name for this product as set by the seller.
+	// (buyer-readonly)
+	Name string `json:"name,omitempty"`
+
+	// ProductId: The unique id for the product (readonly)
+	ProductId string `json:"productId,omitempty"`
+
+	// RevisionNumber: The revision number of the product. (readonly)
+	RevisionNumber int64 `json:"revisionNumber,omitempty,string"`
+
+	// Seller: Information about the seller that created this product
+	// (readonly, except on create)
+	Seller *Seller `json:"seller,omitempty"`
+
+	// SharedTargetings: Targeting that is shared between the buyer and the
+	// seller. Each targeting criteria has a specified key and for each key
+	// there is a list of inclusion value or exclusion values.
+	// (buyer-readonly)
+	SharedTargetings []*SharedTargeting `json:"sharedTargetings,omitempty"`
+
+	// State: The state of the product. (buyer-readonly)
+	State string `json:"state,omitempty"`
+
+	// SyndicationProduct: The syndication product associated with the deal.
+	// (readonly, except on create)
+	SyndicationProduct string `json:"syndicationProduct,omitempty"`
+
+	// Terms: The negotiable terms of the deal (buyer-readonly)
+	Terms *DealTerms `json:"terms,omitempty"`
+
+	WebPropertyCode string `json:"webPropertyCode,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CreationTimeMs") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Product) MarshalJSON() ([]byte, error) {
+	type noMethod Product
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Proposal: Represents a proposal in the marketplace. A proposal is the
+// unit of negotiation between a seller and a buyer and contains deals
+// which are served. Each field in a proposal can have one of the
+// following setting:
+//
+// (readonly) - It is an error to try and set this field.
+// (buyer-readonly) - Only the seller can set this field.
+// (seller-readonly) - Only the buyer can set this field. (updatable) -
+// The field is updatable at all times by either buyer or the seller.
+type Proposal struct {
+	// BilledBuyer: Reference to the buyer that will get billed for this
+	// proposal. (readonly)
+	BilledBuyer *Buyer `json:"billedBuyer,omitempty"`
+
+	// Buyer: Reference to the buyer on the proposal. (readonly, except on
+	// create)
+	Buyer *Buyer `json:"buyer,omitempty"`
+
+	// BuyerContacts: Optional contact information fort the buyer.
+	// (seller-readonly)
+	BuyerContacts []*ContactInformation `json:"buyerContacts,omitempty"`
+
+	// BuyerPrivateData: Private data for buyer. (hidden from seller).
+	BuyerPrivateData *PrivateData `json:"buyerPrivateData,omitempty"`
+
+	// HasBuyerSignedOff: When an proposal is in an accepted state,
+	// indicates whether the buyer has signed off Once both sides have
+	// signed off on a deal, the proposal can be finalized by the seller.
+	// (seller-readonly)
+	HasBuyerSignedOff bool `json:"hasBuyerSignedOff,omitempty"`
+
+	// HasSellerSignedOff: When an proposal is in an accepted state,
+	// indicates whether the buyer has signed off Once both sides have
+	// signed off on a deal, the proposal can be finalized by the seller.
+	// (buyer-readonly)
+	HasSellerSignedOff bool `json:"hasSellerSignedOff,omitempty"`
+
+	// InventorySource: What exchange will provide this inventory (readonly,
+	// except on create).
+	InventorySource string `json:"inventorySource,omitempty"`
+
+	// IsRenegotiating: True if the proposal is being renegotiated
+	// (readonly).
+	IsRenegotiating bool `json:"isRenegotiating,omitempty"`
+
+	// IsSetupComplete: True, if the buyside inventory setup is complete for
+	// this proposal. (readonly)
+	IsSetupComplete bool `json:"isSetupComplete,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "adexchangebuyer#proposal".
+	Kind string `json:"kind,omitempty"`
+
+	// Labels: List of labels associated with the proposal. (readonly)
+	Labels []*MarketplaceLabel `json:"labels,omitempty"`
+
+	// LastUpdaterOrCommentorRole: The role of the last user that either
+	// updated the proposal or left a comment. (readonly)
+	LastUpdaterOrCommentorRole string `json:"lastUpdaterOrCommentorRole,omitempty"`
+
+	LastUpdaterRole string `json:"lastUpdaterRole,omitempty"`
+
+	// Name: The name for the proposal (updatable)
+	Name string `json:"name,omitempty"`
+
+	// OriginatorRole: Indicates whether the buyer/seller created the
+	// proposal.(readonly)
+	OriginatorRole string `json:"originatorRole,omitempty"`
+
+	// ProposalId: The unique id of the proposal. (readonly).
+	ProposalId string `json:"proposalId,omitempty"`
+
+	// ProposalState: The current state of the proposal. (readonly)
+	ProposalState string `json:"proposalState,omitempty"`
+
+	// RevisionNumber: The revision number for the proposal (readonly).
+	RevisionNumber int64 `json:"revisionNumber,omitempty,string"`
+
+	// RevisionTimeMs: The time (ms since epoch) when the proposal was last
+	// revised (readonly).
+	RevisionTimeMs int64 `json:"revisionTimeMs,omitempty,string"`
+
+	// Seller: Reference to the seller on the proposal. (readonly, except on
+	// create)
+	Seller *Seller `json:"seller,omitempty"`
+
+	// SellerContacts: Optional contact information for the seller
+	// (buyer-readonly).
+	SellerContacts []*ContactInformation `json:"sellerContacts,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "BilledBuyer") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Proposal) MarshalJSON() ([]byte, error) {
+	type noMethod Proposal
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
 type Seller struct {
 	// AccountId: The unique id for the seller. The seller fills in this
-	// field. The seller account id is then available to buyer in the offer.
+	// field. The seller account id is then available to buyer in the
+	// product.
 	AccountId string `json:"accountId,omitempty"`
 
 	// SubAccountId: Optional sub-account id for the seller.
@@ -4262,16 +4269,16 @@
 
 type MarketplacedealsDeleteCall struct {
 	s                       *Service
-	orderId                 string
+	proposalId              string
 	deleteorderdealsrequest *DeleteOrderDealsRequest
 	urlParams_              gensupport.URLParams
 	ctx_                    context.Context
 }
 
-// Delete: Delete the specified deals from the order
-func (r *MarketplacedealsService) Delete(orderId string, deleteorderdealsrequest *DeleteOrderDealsRequest) *MarketplacedealsDeleteCall {
+// Delete: Delete the specified deals from the proposal
+func (r *MarketplacedealsService) Delete(proposalId string, deleteorderdealsrequest *DeleteOrderDealsRequest) *MarketplacedealsDeleteCall {
 	c := &MarketplacedealsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.orderId = orderId
+	c.proposalId = proposalId
 	c.deleteorderdealsrequest = deleteorderdealsrequest
 	return c
 }
@@ -4300,11 +4307,11 @@
 	}
 	ctype := "application/json"
 	c.urlParams_.Set("alt", alt)
-	urls := googleapi.ResolveRelative(c.s.BasePath, "marketplaceOrders/{orderId}/deals/delete")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "proposals/{proposalId}/deals/delete")
 	urls += "?" + c.urlParams_.Encode()
 	req, _ := http.NewRequest("POST", urls, body)
 	googleapi.Expand(req.URL, map[string]string{
-		"orderId": c.orderId,
+		"proposalId": c.proposalId,
 	})
 	req.Header.Set("Content-Type", ctype)
 	req.Header.Set("User-Agent", c.s.userAgent())
@@ -4351,21 +4358,21 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Delete the specified deals from the order",
+	//   "description": "Delete the specified deals from the proposal",
 	//   "httpMethod": "POST",
 	//   "id": "adexchangebuyer.marketplacedeals.delete",
 	//   "parameterOrder": [
-	//     "orderId"
+	//     "proposalId"
 	//   ],
 	//   "parameters": {
-	//     "orderId": {
-	//       "description": "The orderId to delete deals from.",
+	//     "proposalId": {
+	//       "description": "The proposalId to delete deals from.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "marketplaceOrders/{orderId}/deals/delete",
+	//   "path": "proposals/{proposalId}/deals/delete",
 	//   "request": {
 	//     "$ref": "DeleteOrderDealsRequest"
 	//   },
@@ -4383,16 +4390,16 @@
 
 type MarketplacedealsInsertCall struct {
 	s                    *Service
-	orderId              string
+	proposalId           string
 	addorderdealsrequest *AddOrderDealsRequest
 	urlParams_           gensupport.URLParams
 	ctx_                 context.Context
 }
 
-// Insert: Add new deals for the specified order
-func (r *MarketplacedealsService) Insert(orderId string, addorderdealsrequest *AddOrderDealsRequest) *MarketplacedealsInsertCall {
+// Insert: Add new deals for the specified proposal
+func (r *MarketplacedealsService) Insert(proposalId string, addorderdealsrequest *AddOrderDealsRequest) *MarketplacedealsInsertCall {
 	c := &MarketplacedealsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.orderId = orderId
+	c.proposalId = proposalId
 	c.addorderdealsrequest = addorderdealsrequest
 	return c
 }
@@ -4421,11 +4428,11 @@
 	}
 	ctype := "application/json"
 	c.urlParams_.Set("alt", alt)
-	urls := googleapi.ResolveRelative(c.s.BasePath, "marketplaceOrders/{orderId}/deals/insert")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "proposals/{proposalId}/deals/insert")
 	urls += "?" + c.urlParams_.Encode()
 	req, _ := http.NewRequest("POST", urls, body)
 	googleapi.Expand(req.URL, map[string]string{
-		"orderId": c.orderId,
+		"proposalId": c.proposalId,
 	})
 	req.Header.Set("Content-Type", ctype)
 	req.Header.Set("User-Agent", c.s.userAgent())
@@ -4472,21 +4479,21 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Add new deals for the specified order",
+	//   "description": "Add new deals for the specified proposal",
 	//   "httpMethod": "POST",
 	//   "id": "adexchangebuyer.marketplacedeals.insert",
 	//   "parameterOrder": [
-	//     "orderId"
+	//     "proposalId"
 	//   ],
 	//   "parameters": {
-	//     "orderId": {
-	//       "description": "OrderId for which deals need to be added.",
+	//     "proposalId": {
+	//       "description": "proposalId for which deals need to be added.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "marketplaceOrders/{orderId}/deals/insert",
+	//   "path": "proposals/{proposalId}/deals/insert",
 	//   "request": {
 	//     "$ref": "AddOrderDealsRequest"
 	//   },
@@ -4504,16 +4511,16 @@
 
 type MarketplacedealsListCall struct {
 	s            *Service
-	orderId      string
+	proposalId   string
 	urlParams_   gensupport.URLParams
 	ifNoneMatch_ string
 	ctx_         context.Context
 }
 
-// List: List all the deals for a given order
-func (r *MarketplacedealsService) List(orderId string) *MarketplacedealsListCall {
+// List: List all the deals for a given proposal
+func (r *MarketplacedealsService) List(proposalId string) *MarketplacedealsListCall {
 	c := &MarketplacedealsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.orderId = orderId
+	c.proposalId = proposalId
 	return c
 }
 
@@ -4546,11 +4553,11 @@
 func (c *MarketplacedealsListCall) doRequest(alt string) (*http.Response, error) {
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
-	urls := googleapi.ResolveRelative(c.s.BasePath, "marketplaceOrders/{orderId}/deals")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "proposals/{proposalId}/deals")
 	urls += "?" + c.urlParams_.Encode()
 	req, _ := http.NewRequest("GET", urls, body)
 	googleapi.Expand(req.URL, map[string]string{
-		"orderId": c.orderId,
+		"proposalId": c.proposalId,
 	})
 	req.Header.Set("User-Agent", c.s.userAgent())
 	if c.ifNoneMatch_ != "" {
@@ -4599,21 +4606,21 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "List all the deals for a given order",
+	//   "description": "List all the deals for a given proposal",
 	//   "httpMethod": "GET",
 	//   "id": "adexchangebuyer.marketplacedeals.list",
 	//   "parameterOrder": [
-	//     "orderId"
+	//     "proposalId"
 	//   ],
 	//   "parameters": {
-	//     "orderId": {
-	//       "description": "The orderId to get deals for.",
+	//     "proposalId": {
+	//       "description": "The proposalId to get deals for.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "marketplaceOrders/{orderId}/deals",
+	//   "path": "proposals/{proposalId}/deals",
 	//   "response": {
 	//     "$ref": "GetOrderDealsResponse"
 	//   },
@@ -4628,16 +4635,17 @@
 
 type MarketplacedealsUpdateCall struct {
 	s                        *Service
-	orderId                  string
+	proposalId               string
 	editallorderdealsrequest *EditAllOrderDealsRequest
 	urlParams_               gensupport.URLParams
 	ctx_                     context.Context
 }
 
-// Update: Replaces all the deals in the order with the passed in deals
-func (r *MarketplacedealsService) Update(orderId string, editallorderdealsrequest *EditAllOrderDealsRequest) *MarketplacedealsUpdateCall {
+// Update: Replaces all the deals in the proposal with the passed in
+// deals
+func (r *MarketplacedealsService) Update(proposalId string, editallorderdealsrequest *EditAllOrderDealsRequest) *MarketplacedealsUpdateCall {
 	c := &MarketplacedealsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.orderId = orderId
+	c.proposalId = proposalId
 	c.editallorderdealsrequest = editallorderdealsrequest
 	return c
 }
@@ -4666,11 +4674,11 @@
 	}
 	ctype := "application/json"
 	c.urlParams_.Set("alt", alt)
-	urls := googleapi.ResolveRelative(c.s.BasePath, "marketplaceOrders/{orderId}/deals/update")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "proposals/{proposalId}/deals/update")
 	urls += "?" + c.urlParams_.Encode()
 	req, _ := http.NewRequest("POST", urls, body)
 	googleapi.Expand(req.URL, map[string]string{
-		"orderId": c.orderId,
+		"proposalId": c.proposalId,
 	})
 	req.Header.Set("Content-Type", ctype)
 	req.Header.Set("User-Agent", c.s.userAgent())
@@ -4717,21 +4725,21 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Replaces all the deals in the order with the passed in deals",
+	//   "description": "Replaces all the deals in the proposal with the passed in deals",
 	//   "httpMethod": "POST",
 	//   "id": "adexchangebuyer.marketplacedeals.update",
 	//   "parameterOrder": [
-	//     "orderId"
+	//     "proposalId"
 	//   ],
 	//   "parameters": {
-	//     "orderId": {
-	//       "description": "The orderId to edit deals on.",
+	//     "proposalId": {
+	//       "description": "The proposalId to edit deals on.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "marketplaceOrders/{orderId}/deals/update",
+	//   "path": "proposals/{proposalId}/deals/update",
 	//   "request": {
 	//     "$ref": "EditAllOrderDealsRequest"
 	//   },
@@ -4749,16 +4757,16 @@
 
 type MarketplacenotesInsertCall struct {
 	s                    *Service
-	orderId              string
+	proposalId           string
 	addordernotesrequest *AddOrderNotesRequest
 	urlParams_           gensupport.URLParams
 	ctx_                 context.Context
 }
 
-// Insert: Add notes to the order
-func (r *MarketplacenotesService) Insert(orderId string, addordernotesrequest *AddOrderNotesRequest) *MarketplacenotesInsertCall {
+// Insert: Add notes to the proposal
+func (r *MarketplacenotesService) Insert(proposalId string, addordernotesrequest *AddOrderNotesRequest) *MarketplacenotesInsertCall {
 	c := &MarketplacenotesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.orderId = orderId
+	c.proposalId = proposalId
 	c.addordernotesrequest = addordernotesrequest
 	return c
 }
@@ -4787,11 +4795,11 @@
 	}
 	ctype := "application/json"
 	c.urlParams_.Set("alt", alt)
-	urls := googleapi.ResolveRelative(c.s.BasePath, "marketplaceOrders/{orderId}/notes/insert")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "proposals/{proposalId}/notes/insert")
 	urls += "?" + c.urlParams_.Encode()
 	req, _ := http.NewRequest("POST", urls, body)
 	googleapi.Expand(req.URL, map[string]string{
-		"orderId": c.orderId,
+		"proposalId": c.proposalId,
 	})
 	req.Header.Set("Content-Type", ctype)
 	req.Header.Set("User-Agent", c.s.userAgent())
@@ -4838,21 +4846,21 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Add notes to the order",
+	//   "description": "Add notes to the proposal",
 	//   "httpMethod": "POST",
 	//   "id": "adexchangebuyer.marketplacenotes.insert",
 	//   "parameterOrder": [
-	//     "orderId"
+	//     "proposalId"
 	//   ],
 	//   "parameters": {
-	//     "orderId": {
-	//       "description": "The orderId to add notes for.",
+	//     "proposalId": {
+	//       "description": "The proposalId to add notes for.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "marketplaceOrders/{orderId}/notes/insert",
+	//   "path": "proposals/{proposalId}/notes/insert",
 	//   "request": {
 	//     "$ref": "AddOrderNotesRequest"
 	//   },
@@ -4870,16 +4878,16 @@
 
 type MarketplacenotesListCall struct {
 	s            *Service
-	orderId      string
+	proposalId   string
 	urlParams_   gensupport.URLParams
 	ifNoneMatch_ string
 	ctx_         context.Context
 }
 
-// List: Get all the notes associated with an order
-func (r *MarketplacenotesService) List(orderId string) *MarketplacenotesListCall {
+// List: Get all the notes associated with a proposal
+func (r *MarketplacenotesService) List(proposalId string) *MarketplacenotesListCall {
 	c := &MarketplacenotesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.orderId = orderId
+	c.proposalId = proposalId
 	return c
 }
 
@@ -4912,11 +4920,11 @@
 func (c *MarketplacenotesListCall) doRequest(alt string) (*http.Response, error) {
 	var body io.Reader = nil
 	c.urlParams_.Set("alt", alt)
-	urls := googleapi.ResolveRelative(c.s.BasePath, "marketplaceOrders/{orderId}/notes")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "proposals/{proposalId}/notes")
 	urls += "?" + c.urlParams_.Encode()
 	req, _ := http.NewRequest("GET", urls, body)
 	googleapi.Expand(req.URL, map[string]string{
-		"orderId": c.orderId,
+		"proposalId": c.proposalId,
 	})
 	req.Header.Set("User-Agent", c.s.userAgent())
 	if c.ifNoneMatch_ != "" {
@@ -4965,21 +4973,21 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Get all the notes associated with an order",
+	//   "description": "Get all the notes associated with a proposal",
 	//   "httpMethod": "GET",
 	//   "id": "adexchangebuyer.marketplacenotes.list",
 	//   "parameterOrder": [
-	//     "orderId"
+	//     "proposalId"
 	//   ],
 	//   "parameters": {
-	//     "orderId": {
-	//       "description": "The orderId to get notes for.",
+	//     "proposalId": {
+	//       "description": "The proposalId to get notes for.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     }
 	//   },
-	//   "path": "marketplaceOrders/{orderId}/notes",
+	//   "path": "proposals/{proposalId}/notes",
 	//   "response": {
 	//     "$ref": "GetOrderNotesResponse"
 	//   },
@@ -4990,918 +4998,6 @@
 
 }
 
-// method id "adexchangebuyer.marketplaceoffers.get":
-
-type MarketplaceoffersGetCall struct {
-	s            *Service
-	offerId      string
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-}
-
-// Get: Gets the requested negotiation.
-func (r *MarketplaceoffersService) Get(offerId string) *MarketplaceoffersGetCall {
-	c := &MarketplaceoffersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.offerId = offerId
-	return c
-}
-
-// Fields allows partial responses to be retrieved. See
-// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
-// for more information.
-func (c *MarketplaceoffersGetCall) Fields(s ...googleapi.Field) *MarketplaceoffersGetCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// IfNoneMatch sets the optional parameter which makes the operation
-// fail if the object's ETag matches the given value. This is useful for
-// getting updates only after the object has changed since the last
-// request. Use googleapi.IsNotModified to check whether the response
-// error from Do is the result of In-None-Match.
-func (c *MarketplaceoffersGetCall) IfNoneMatch(entityTag string) *MarketplaceoffersGetCall {
-	c.ifNoneMatch_ = entityTag
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *MarketplaceoffersGetCall) Context(ctx context.Context) *MarketplaceoffersGetCall {
-	c.ctx_ = ctx
-	return c
-}
-
-func (c *MarketplaceoffersGetCall) doRequest(alt string) (*http.Response, error) {
-	var body io.Reader = nil
-	c.urlParams_.Set("alt", alt)
-	urls := googleapi.ResolveRelative(c.s.BasePath, "marketplaceOffers/{offerId}")
-	urls += "?" + c.urlParams_.Encode()
-	req, _ := http.NewRequest("GET", urls, body)
-	googleapi.Expand(req.URL, map[string]string{
-		"offerId": c.offerId,
-	})
-	req.Header.Set("User-Agent", c.s.userAgent())
-	if c.ifNoneMatch_ != "" {
-		req.Header.Set("If-None-Match", c.ifNoneMatch_)
-	}
-	if c.ctx_ != nil {
-		return ctxhttp.Do(c.ctx_, c.s.client, req)
-	}
-	return c.s.client.Do(req)
-}
-
-// Do executes the "adexchangebuyer.marketplaceoffers.get" call.
-// Exactly one of *MarketplaceOffer or error will be non-nil. Any
-// non-2xx status code is an error. Response headers are in either
-// *MarketplaceOffer.ServerResponse.Header or (if a response was
-// returned at all) in error.(*googleapi.Error).Header. Use
-// googleapi.IsNotModified to check whether the returned error was
-// because http.StatusNotModified was returned.
-func (c *MarketplaceoffersGetCall) Do(opts ...googleapi.CallOption) (*MarketplaceOffer, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if res != nil && res.StatusCode == http.StatusNotModified {
-		if res.Body != nil {
-			res.Body.Close()
-		}
-		return nil, &googleapi.Error{
-			Code:   res.StatusCode,
-			Header: res.Header,
-		}
-	}
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	ret := &MarketplaceOffer{
-		ServerResponse: googleapi.ServerResponse{
-			Header:         res.Header,
-			HTTPStatusCode: res.StatusCode,
-		},
-	}
-	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "description": "Gets the requested negotiation.",
-	//   "httpMethod": "GET",
-	//   "id": "adexchangebuyer.marketplaceoffers.get",
-	//   "parameterOrder": [
-	//     "offerId"
-	//   ],
-	//   "parameters": {
-	//     "offerId": {
-	//       "description": "The offerId for the offer to get the head revision for.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "marketplaceOffers/{offerId}",
-	//   "response": {
-	//     "$ref": "MarketplaceOffer"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/adexchange.buyer"
-	//   ]
-	// }
-
-}
-
-// method id "adexchangebuyer.marketplaceoffers.search":
-
-type MarketplaceoffersSearchCall struct {
-	s            *Service
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-}
-
-// Search: Gets the requested negotiation.
-func (r *MarketplaceoffersService) Search() *MarketplaceoffersSearchCall {
-	c := &MarketplaceoffersSearchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	return c
-}
-
-// PqlQuery sets the optional parameter "pqlQuery": The pql query used
-// to query for offers.
-func (c *MarketplaceoffersSearchCall) PqlQuery(pqlQuery string) *MarketplaceoffersSearchCall {
-	c.urlParams_.Set("pqlQuery", pqlQuery)
-	return c
-}
-
-// Fields allows partial responses to be retrieved. See
-// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
-// for more information.
-func (c *MarketplaceoffersSearchCall) Fields(s ...googleapi.Field) *MarketplaceoffersSearchCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// IfNoneMatch sets the optional parameter which makes the operation
-// fail if the object's ETag matches the given value. This is useful for
-// getting updates only after the object has changed since the last
-// request. Use googleapi.IsNotModified to check whether the response
-// error from Do is the result of In-None-Match.
-func (c *MarketplaceoffersSearchCall) IfNoneMatch(entityTag string) *MarketplaceoffersSearchCall {
-	c.ifNoneMatch_ = entityTag
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *MarketplaceoffersSearchCall) Context(ctx context.Context) *MarketplaceoffersSearchCall {
-	c.ctx_ = ctx
-	return c
-}
-
-func (c *MarketplaceoffersSearchCall) doRequest(alt string) (*http.Response, error) {
-	var body io.Reader = nil
-	c.urlParams_.Set("alt", alt)
-	urls := googleapi.ResolveRelative(c.s.BasePath, "marketplaceOffers/search")
-	urls += "?" + c.urlParams_.Encode()
-	req, _ := http.NewRequest("GET", urls, body)
-	googleapi.SetOpaque(req.URL)
-	req.Header.Set("User-Agent", c.s.userAgent())
-	if c.ifNoneMatch_ != "" {
-		req.Header.Set("If-None-Match", c.ifNoneMatch_)
-	}
-	if c.ctx_ != nil {
-		return ctxhttp.Do(c.ctx_, c.s.client, req)
-	}
-	return c.s.client.Do(req)
-}
-
-// Do executes the "adexchangebuyer.marketplaceoffers.search" call.
-// Exactly one of *GetOffersResponse or error will be non-nil. Any
-// non-2xx status code is an error. Response headers are in either
-// *GetOffersResponse.ServerResponse.Header or (if a response was
-// returned at all) in error.(*googleapi.Error).Header. Use
-// googleapi.IsNotModified to check whether the returned error was
-// because http.StatusNotModified was returned.
-func (c *MarketplaceoffersSearchCall) Do(opts ...googleapi.CallOption) (*GetOffersResponse, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if res != nil && res.StatusCode == http.StatusNotModified {
-		if res.Body != nil {
-			res.Body.Close()
-		}
-		return nil, &googleapi.Error{
-			Code:   res.StatusCode,
-			Header: res.Header,
-		}
-	}
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	ret := &GetOffersResponse{
-		ServerResponse: googleapi.ServerResponse{
-			Header:         res.Header,
-			HTTPStatusCode: res.StatusCode,
-		},
-	}
-	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "description": "Gets the requested negotiation.",
-	//   "httpMethod": "GET",
-	//   "id": "adexchangebuyer.marketplaceoffers.search",
-	//   "parameters": {
-	//     "pqlQuery": {
-	//       "description": "The pql query used to query for offers.",
-	//       "location": "query",
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "marketplaceOffers/search",
-	//   "response": {
-	//     "$ref": "GetOffersResponse"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/adexchange.buyer"
-	//   ]
-	// }
-
-}
-
-// method id "adexchangebuyer.marketplaceorders.get":
-
-type MarketplaceordersGetCall struct {
-	s            *Service
-	orderId      string
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-}
-
-// Get: Get an order given its id
-func (r *MarketplaceordersService) Get(orderId string) *MarketplaceordersGetCall {
-	c := &MarketplaceordersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.orderId = orderId
-	return c
-}
-
-// Fields allows partial responses to be retrieved. See
-// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
-// for more information.
-func (c *MarketplaceordersGetCall) Fields(s ...googleapi.Field) *MarketplaceordersGetCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// IfNoneMatch sets the optional parameter which makes the operation
-// fail if the object's ETag matches the given value. This is useful for
-// getting updates only after the object has changed since the last
-// request. Use googleapi.IsNotModified to check whether the response
-// error from Do is the result of In-None-Match.
-func (c *MarketplaceordersGetCall) IfNoneMatch(entityTag string) *MarketplaceordersGetCall {
-	c.ifNoneMatch_ = entityTag
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *MarketplaceordersGetCall) Context(ctx context.Context) *MarketplaceordersGetCall {
-	c.ctx_ = ctx
-	return c
-}
-
-func (c *MarketplaceordersGetCall) doRequest(alt string) (*http.Response, error) {
-	var body io.Reader = nil
-	c.urlParams_.Set("alt", alt)
-	urls := googleapi.ResolveRelative(c.s.BasePath, "marketplaceOrders/{orderId}")
-	urls += "?" + c.urlParams_.Encode()
-	req, _ := http.NewRequest("GET", urls, body)
-	googleapi.Expand(req.URL, map[string]string{
-		"orderId": c.orderId,
-	})
-	req.Header.Set("User-Agent", c.s.userAgent())
-	if c.ifNoneMatch_ != "" {
-		req.Header.Set("If-None-Match", c.ifNoneMatch_)
-	}
-	if c.ctx_ != nil {
-		return ctxhttp.Do(c.ctx_, c.s.client, req)
-	}
-	return c.s.client.Do(req)
-}
-
-// Do executes the "adexchangebuyer.marketplaceorders.get" call.
-// Exactly one of *MarketplaceOrder or error will be non-nil. Any
-// non-2xx status code is an error. Response headers are in either
-// *MarketplaceOrder.ServerResponse.Header or (if a response was
-// returned at all) in error.(*googleapi.Error).Header. Use
-// googleapi.IsNotModified to check whether the returned error was
-// because http.StatusNotModified was returned.
-func (c *MarketplaceordersGetCall) Do(opts ...googleapi.CallOption) (*MarketplaceOrder, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if res != nil && res.StatusCode == http.StatusNotModified {
-		if res.Body != nil {
-			res.Body.Close()
-		}
-		return nil, &googleapi.Error{
-			Code:   res.StatusCode,
-			Header: res.Header,
-		}
-	}
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	ret := &MarketplaceOrder{
-		ServerResponse: googleapi.ServerResponse{
-			Header:         res.Header,
-			HTTPStatusCode: res.StatusCode,
-		},
-	}
-	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "description": "Get an order given its id",
-	//   "httpMethod": "GET",
-	//   "id": "adexchangebuyer.marketplaceorders.get",
-	//   "parameterOrder": [
-	//     "orderId"
-	//   ],
-	//   "parameters": {
-	//     "orderId": {
-	//       "description": "Id of the order to retrieve.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "marketplaceOrders/{orderId}",
-	//   "response": {
-	//     "$ref": "MarketplaceOrder"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/adexchange.buyer"
-	//   ]
-	// }
-
-}
-
-// method id "adexchangebuyer.marketplaceorders.insert":
-
-type MarketplaceordersInsertCall struct {
-	s                   *Service
-	createordersrequest *CreateOrdersRequest
-	urlParams_          gensupport.URLParams
-	ctx_                context.Context
-}
-
-// Insert: Create the given list of orders
-func (r *MarketplaceordersService) Insert(createordersrequest *CreateOrdersRequest) *MarketplaceordersInsertCall {
-	c := &MarketplaceordersInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.createordersrequest = createordersrequest
-	return c
-}
-
-// Fields allows partial responses to be retrieved. See
-// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
-// for more information.
-func (c *MarketplaceordersInsertCall) Fields(s ...googleapi.Field) *MarketplaceordersInsertCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *MarketplaceordersInsertCall) Context(ctx context.Context) *MarketplaceordersInsertCall {
-	c.ctx_ = ctx
-	return c
-}
-
-func (c *MarketplaceordersInsertCall) doRequest(alt string) (*http.Response, error) {
-	var body io.Reader = nil
-	body, err := googleapi.WithoutDataWrapper.JSONReader(c.createordersrequest)
-	if err != nil {
-		return nil, err
-	}
-	ctype := "application/json"
-	c.urlParams_.Set("alt", alt)
-	urls := googleapi.ResolveRelative(c.s.BasePath, "marketplaceOrders/insert")
-	urls += "?" + c.urlParams_.Encode()
-	req, _ := http.NewRequest("POST", urls, body)
-	googleapi.SetOpaque(req.URL)
-	req.Header.Set("Content-Type", ctype)
-	req.Header.Set("User-Agent", c.s.userAgent())
-	if c.ctx_ != nil {
-		return ctxhttp.Do(c.ctx_, c.s.client, req)
-	}
-	return c.s.client.Do(req)
-}
-
-// Do executes the "adexchangebuyer.marketplaceorders.insert" call.
-// Exactly one of *CreateOrdersResponse or error will be non-nil. Any
-// non-2xx status code is an error. Response headers are in either
-// *CreateOrdersResponse.ServerResponse.Header or (if a response was
-// returned at all) in error.(*googleapi.Error).Header. Use
-// googleapi.IsNotModified to check whether the returned error was
-// because http.StatusNotModified was returned.
-func (c *MarketplaceordersInsertCall) Do(opts ...googleapi.CallOption) (*CreateOrdersResponse, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if res != nil && res.StatusCode == http.StatusNotModified {
-		if res.Body != nil {
-			res.Body.Close()
-		}
-		return nil, &googleapi.Error{
-			Code:   res.StatusCode,
-			Header: res.Header,
-		}
-	}
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	ret := &CreateOrdersResponse{
-		ServerResponse: googleapi.ServerResponse{
-			Header:         res.Header,
-			HTTPStatusCode: res.StatusCode,
-		},
-	}
-	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "description": "Create the given list of orders",
-	//   "httpMethod": "POST",
-	//   "id": "adexchangebuyer.marketplaceorders.insert",
-	//   "path": "marketplaceOrders/insert",
-	//   "request": {
-	//     "$ref": "CreateOrdersRequest"
-	//   },
-	//   "response": {
-	//     "$ref": "CreateOrdersResponse"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/adexchange.buyer"
-	//   ]
-	// }
-
-}
-
-// method id "adexchangebuyer.marketplaceorders.patch":
-
-type MarketplaceordersPatchCall struct {
-	s                *Service
-	orderId          string
-	revisionNumber   int64
-	updateAction     string
-	marketplaceorder *MarketplaceOrder
-	urlParams_       gensupport.URLParams
-	ctx_             context.Context
-}
-
-// Patch: Update the given order. This method supports patch semantics.
-func (r *MarketplaceordersService) Patch(orderId string, revisionNumber int64, updateAction string, marketplaceorder *MarketplaceOrder) *MarketplaceordersPatchCall {
-	c := &MarketplaceordersPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.orderId = orderId
-	c.revisionNumber = revisionNumber
-	c.updateAction = updateAction
-	c.marketplaceorder = marketplaceorder
-	return c
-}
-
-// Fields allows partial responses to be retrieved. See
-// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
-// for more information.
-func (c *MarketplaceordersPatchCall) Fields(s ...googleapi.Field) *MarketplaceordersPatchCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *MarketplaceordersPatchCall) Context(ctx context.Context) *MarketplaceordersPatchCall {
-	c.ctx_ = ctx
-	return c
-}
-
-func (c *MarketplaceordersPatchCall) doRequest(alt string) (*http.Response, error) {
-	var body io.Reader = nil
-	body, err := googleapi.WithoutDataWrapper.JSONReader(c.marketplaceorder)
-	if err != nil {
-		return nil, err
-	}
-	ctype := "application/json"
-	c.urlParams_.Set("alt", alt)
-	urls := googleapi.ResolveRelative(c.s.BasePath, "marketplaceOrders/{orderId}/{revisionNumber}/{updateAction}")
-	urls += "?" + c.urlParams_.Encode()
-	req, _ := http.NewRequest("PATCH", urls, body)
-	googleapi.Expand(req.URL, map[string]string{
-		"orderId":        c.orderId,
-		"revisionNumber": strconv.FormatInt(c.revisionNumber, 10),
-		"updateAction":   c.updateAction,
-	})
-	req.Header.Set("Content-Type", ctype)
-	req.Header.Set("User-Agent", c.s.userAgent())
-	if c.ctx_ != nil {
-		return ctxhttp.Do(c.ctx_, c.s.client, req)
-	}
-	return c.s.client.Do(req)
-}
-
-// Do executes the "adexchangebuyer.marketplaceorders.patch" call.
-// Exactly one of *MarketplaceOrder or error will be non-nil. Any
-// non-2xx status code is an error. Response headers are in either
-// *MarketplaceOrder.ServerResponse.Header or (if a response was
-// returned at all) in error.(*googleapi.Error).Header. Use
-// googleapi.IsNotModified to check whether the returned error was
-// because http.StatusNotModified was returned.
-func (c *MarketplaceordersPatchCall) Do(opts ...googleapi.CallOption) (*MarketplaceOrder, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if res != nil && res.StatusCode == http.StatusNotModified {
-		if res.Body != nil {
-			res.Body.Close()
-		}
-		return nil, &googleapi.Error{
-			Code:   res.StatusCode,
-			Header: res.Header,
-		}
-	}
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	ret := &MarketplaceOrder{
-		ServerResponse: googleapi.ServerResponse{
-			Header:         res.Header,
-			HTTPStatusCode: res.StatusCode,
-		},
-	}
-	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "description": "Update the given order. This method supports patch semantics.",
-	//   "httpMethod": "PATCH",
-	//   "id": "adexchangebuyer.marketplaceorders.patch",
-	//   "parameterOrder": [
-	//     "orderId",
-	//     "revisionNumber",
-	//     "updateAction"
-	//   ],
-	//   "parameters": {
-	//     "orderId": {
-	//       "description": "The order id to update.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     },
-	//     "revisionNumber": {
-	//       "description": "The last known revision number to update. If the head revision in the marketplace database has since changed, an error will be thrown. The caller should then fetch the lastest order at head revision and retry the update at that revision.",
-	//       "format": "int64",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     },
-	//     "updateAction": {
-	//       "description": "The proposed action to take on the order.",
-	//       "enum": [
-	//         "accept",
-	//         "cancel",
-	//         "propose",
-	//         "unknownAction",
-	//         "updateFinalized"
-	//       ],
-	//       "enumDescriptions": [
-	//         "",
-	//         "",
-	//         "",
-	//         "",
-	//         ""
-	//       ],
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "marketplaceOrders/{orderId}/{revisionNumber}/{updateAction}",
-	//   "request": {
-	//     "$ref": "MarketplaceOrder"
-	//   },
-	//   "response": {
-	//     "$ref": "MarketplaceOrder"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/adexchange.buyer"
-	//   ]
-	// }
-
-}
-
-// method id "adexchangebuyer.marketplaceorders.search":
-
-type MarketplaceordersSearchCall struct {
-	s            *Service
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-}
-
-// Search: Search for orders using pql query
-func (r *MarketplaceordersService) Search() *MarketplaceordersSearchCall {
-	c := &MarketplaceordersSearchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	return c
-}
-
-// PqlQuery sets the optional parameter "pqlQuery": Query string to
-// retrieve specific orders.
-func (c *MarketplaceordersSearchCall) PqlQuery(pqlQuery string) *MarketplaceordersSearchCall {
-	c.urlParams_.Set("pqlQuery", pqlQuery)
-	return c
-}
-
-// Fields allows partial responses to be retrieved. See
-// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
-// for more information.
-func (c *MarketplaceordersSearchCall) Fields(s ...googleapi.Field) *MarketplaceordersSearchCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// IfNoneMatch sets the optional parameter which makes the operation
-// fail if the object's ETag matches the given value. This is useful for
-// getting updates only after the object has changed since the last
-// request. Use googleapi.IsNotModified to check whether the response
-// error from Do is the result of In-None-Match.
-func (c *MarketplaceordersSearchCall) IfNoneMatch(entityTag string) *MarketplaceordersSearchCall {
-	c.ifNoneMatch_ = entityTag
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *MarketplaceordersSearchCall) Context(ctx context.Context) *MarketplaceordersSearchCall {
-	c.ctx_ = ctx
-	return c
-}
-
-func (c *MarketplaceordersSearchCall) doRequest(alt string) (*http.Response, error) {
-	var body io.Reader = nil
-	c.urlParams_.Set("alt", alt)
-	urls := googleapi.ResolveRelative(c.s.BasePath, "marketplaceOrders/search")
-	urls += "?" + c.urlParams_.Encode()
-	req, _ := http.NewRequest("GET", urls, body)
-	googleapi.SetOpaque(req.URL)
-	req.Header.Set("User-Agent", c.s.userAgent())
-	if c.ifNoneMatch_ != "" {
-		req.Header.Set("If-None-Match", c.ifNoneMatch_)
-	}
-	if c.ctx_ != nil {
-		return ctxhttp.Do(c.ctx_, c.s.client, req)
-	}
-	return c.s.client.Do(req)
-}
-
-// Do executes the "adexchangebuyer.marketplaceorders.search" call.
-// Exactly one of *GetOrdersResponse or error will be non-nil. Any
-// non-2xx status code is an error. Response headers are in either
-// *GetOrdersResponse.ServerResponse.Header or (if a response was
-// returned at all) in error.(*googleapi.Error).Header. Use
-// googleapi.IsNotModified to check whether the returned error was
-// because http.StatusNotModified was returned.
-func (c *MarketplaceordersSearchCall) Do(opts ...googleapi.CallOption) (*GetOrdersResponse, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if res != nil && res.StatusCode == http.StatusNotModified {
-		if res.Body != nil {
-			res.Body.Close()
-		}
-		return nil, &googleapi.Error{
-			Code:   res.StatusCode,
-			Header: res.Header,
-		}
-	}
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	ret := &GetOrdersResponse{
-		ServerResponse: googleapi.ServerResponse{
-			Header:         res.Header,
-			HTTPStatusCode: res.StatusCode,
-		},
-	}
-	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "description": "Search for orders using pql query",
-	//   "httpMethod": "GET",
-	//   "id": "adexchangebuyer.marketplaceorders.search",
-	//   "parameters": {
-	//     "pqlQuery": {
-	//       "description": "Query string to retrieve specific orders.",
-	//       "location": "query",
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "marketplaceOrders/search",
-	//   "response": {
-	//     "$ref": "GetOrdersResponse"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/adexchange.buyer"
-	//   ]
-	// }
-
-}
-
-// method id "adexchangebuyer.marketplaceorders.update":
-
-type MarketplaceordersUpdateCall struct {
-	s                *Service
-	orderId          string
-	revisionNumber   int64
-	updateAction     string
-	marketplaceorder *MarketplaceOrder
-	urlParams_       gensupport.URLParams
-	ctx_             context.Context
-}
-
-// Update: Update the given order
-func (r *MarketplaceordersService) Update(orderId string, revisionNumber int64, updateAction string, marketplaceorder *MarketplaceOrder) *MarketplaceordersUpdateCall {
-	c := &MarketplaceordersUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.orderId = orderId
-	c.revisionNumber = revisionNumber
-	c.updateAction = updateAction
-	c.marketplaceorder = marketplaceorder
-	return c
-}
-
-// Fields allows partial responses to be retrieved. See
-// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
-// for more information.
-func (c *MarketplaceordersUpdateCall) Fields(s ...googleapi.Field) *MarketplaceordersUpdateCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *MarketplaceordersUpdateCall) Context(ctx context.Context) *MarketplaceordersUpdateCall {
-	c.ctx_ = ctx
-	return c
-}
-
-func (c *MarketplaceordersUpdateCall) doRequest(alt string) (*http.Response, error) {
-	var body io.Reader = nil
-	body, err := googleapi.WithoutDataWrapper.JSONReader(c.marketplaceorder)
-	if err != nil {
-		return nil, err
-	}
-	ctype := "application/json"
-	c.urlParams_.Set("alt", alt)
-	urls := googleapi.ResolveRelative(c.s.BasePath, "marketplaceOrders/{orderId}/{revisionNumber}/{updateAction}")
-	urls += "?" + c.urlParams_.Encode()
-	req, _ := http.NewRequest("PUT", urls, body)
-	googleapi.Expand(req.URL, map[string]string{
-		"orderId":        c.orderId,
-		"revisionNumber": strconv.FormatInt(c.revisionNumber, 10),
-		"updateAction":   c.updateAction,
-	})
-	req.Header.Set("Content-Type", ctype)
-	req.Header.Set("User-Agent", c.s.userAgent())
-	if c.ctx_ != nil {
-		return ctxhttp.Do(c.ctx_, c.s.client, req)
-	}
-	return c.s.client.Do(req)
-}
-
-// Do executes the "adexchangebuyer.marketplaceorders.update" call.
-// Exactly one of *MarketplaceOrder or error will be non-nil. Any
-// non-2xx status code is an error. Response headers are in either
-// *MarketplaceOrder.ServerResponse.Header or (if a response was
-// returned at all) in error.(*googleapi.Error).Header. Use
-// googleapi.IsNotModified to check whether the returned error was
-// because http.StatusNotModified was returned.
-func (c *MarketplaceordersUpdateCall) Do(opts ...googleapi.CallOption) (*MarketplaceOrder, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if res != nil && res.StatusCode == http.StatusNotModified {
-		if res.Body != nil {
-			res.Body.Close()
-		}
-		return nil, &googleapi.Error{
-			Code:   res.StatusCode,
-			Header: res.Header,
-		}
-	}
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	ret := &MarketplaceOrder{
-		ServerResponse: googleapi.ServerResponse{
-			Header:         res.Header,
-			HTTPStatusCode: res.StatusCode,
-		},
-	}
-	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "description": "Update the given order",
-	//   "httpMethod": "PUT",
-	//   "id": "adexchangebuyer.marketplaceorders.update",
-	//   "parameterOrder": [
-	//     "orderId",
-	//     "revisionNumber",
-	//     "updateAction"
-	//   ],
-	//   "parameters": {
-	//     "orderId": {
-	//       "description": "The order id to update.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     },
-	//     "revisionNumber": {
-	//       "description": "The last known revision number to update. If the head revision in the marketplace database has since changed, an error will be thrown. The caller should then fetch the lastest order at head revision and retry the update at that revision.",
-	//       "format": "int64",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     },
-	//     "updateAction": {
-	//       "description": "The proposed action to take on the order.",
-	//       "enum": [
-	//         "accept",
-	//         "cancel",
-	//         "propose",
-	//         "unknownAction",
-	//         "updateFinalized"
-	//       ],
-	//       "enumDescriptions": [
-	//         "",
-	//         "",
-	//         "",
-	//         "",
-	//         ""
-	//       ],
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "marketplaceOrders/{orderId}/{revisionNumber}/{updateAction}",
-	//   "request": {
-	//     "$ref": "MarketplaceOrder"
-	//   },
-	//   "response": {
-	//     "$ref": "MarketplaceOrder"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/adexchange.buyer"
-	//   ]
-	// }
-
-}
-
 // method id "adexchangebuyer.performanceReport.list":
 
 type PerformanceReportListCall struct {
@@ -6815,3 +5911,916 @@
 	// }
 
 }
+
+// method id "adexchangebuyer.products.get":
+
+type ProductsGetCall struct {
+	s            *Service
+	productId    string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets the requested product by id.
+func (r *ProductsService) Get(productId string) *ProductsGetCall {
+	c := &ProductsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.productId = productId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProductsGetCall) Fields(s ...googleapi.Field) *ProductsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProductsGetCall) IfNoneMatch(entityTag string) *ProductsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProductsGetCall) Context(ctx context.Context) *ProductsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProductsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "products/{productId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"productId": c.productId,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "adexchangebuyer.products.get" call.
+// Exactly one of *Product or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Product.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProductsGetCall) Do(opts ...googleapi.CallOption) (*Product, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Product{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the requested product by id.",
+	//   "httpMethod": "GET",
+	//   "id": "adexchangebuyer.products.get",
+	//   "parameterOrder": [
+	//     "productId"
+	//   ],
+	//   "parameters": {
+	//     "productId": {
+	//       "description": "The id for the product to get the head revision for.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "products/{productId}",
+	//   "response": {
+	//     "$ref": "Product"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer.products.search":
+
+type ProductsSearchCall struct {
+	s            *Service
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Search: Gets the requested product.
+func (r *ProductsService) Search() *ProductsSearchCall {
+	c := &ProductsSearchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	return c
+}
+
+// PqlQuery sets the optional parameter "pqlQuery": The pql query used
+// to query for products.
+func (c *ProductsSearchCall) PqlQuery(pqlQuery string) *ProductsSearchCall {
+	c.urlParams_.Set("pqlQuery", pqlQuery)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProductsSearchCall) Fields(s ...googleapi.Field) *ProductsSearchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProductsSearchCall) IfNoneMatch(entityTag string) *ProductsSearchCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProductsSearchCall) Context(ctx context.Context) *ProductsSearchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProductsSearchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "products/search")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.SetOpaque(req.URL)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "adexchangebuyer.products.search" call.
+// Exactly one of *GetOffersResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *GetOffersResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProductsSearchCall) Do(opts ...googleapi.CallOption) (*GetOffersResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &GetOffersResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the requested product.",
+	//   "httpMethod": "GET",
+	//   "id": "adexchangebuyer.products.search",
+	//   "parameters": {
+	//     "pqlQuery": {
+	//       "description": "The pql query used to query for products.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "products/search",
+	//   "response": {
+	//     "$ref": "GetOffersResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer.proposals.get":
+
+type ProposalsGetCall struct {
+	s            *Service
+	proposalId   string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Get a proposal given its id
+func (r *ProposalsService) Get(proposalId string) *ProposalsGetCall {
+	c := &ProposalsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.proposalId = proposalId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProposalsGetCall) Fields(s ...googleapi.Field) *ProposalsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProposalsGetCall) IfNoneMatch(entityTag string) *ProposalsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProposalsGetCall) Context(ctx context.Context) *ProposalsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProposalsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "proposals/{proposalId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"proposalId": c.proposalId,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "adexchangebuyer.proposals.get" call.
+// Exactly one of *Proposal or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Proposal.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProposalsGetCall) Do(opts ...googleapi.CallOption) (*Proposal, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Proposal{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Get a proposal given its id",
+	//   "httpMethod": "GET",
+	//   "id": "adexchangebuyer.proposals.get",
+	//   "parameterOrder": [
+	//     "proposalId"
+	//   ],
+	//   "parameters": {
+	//     "proposalId": {
+	//       "description": "Id of the proposal to retrieve.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "proposals/{proposalId}",
+	//   "response": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer.proposals.insert":
+
+type ProposalsInsertCall struct {
+	s                   *Service
+	createordersrequest *CreateOrdersRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+}
+
+// Insert: Create the given list of proposals
+func (r *ProposalsService) Insert(createordersrequest *CreateOrdersRequest) *ProposalsInsertCall {
+	c := &ProposalsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.createordersrequest = createordersrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProposalsInsertCall) Fields(s ...googleapi.Field) *ProposalsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProposalsInsertCall) Context(ctx context.Context) *ProposalsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProposalsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.createordersrequest)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "proposals/insert")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.SetOpaque(req.URL)
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "adexchangebuyer.proposals.insert" call.
+// Exactly one of *CreateOrdersResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *CreateOrdersResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProposalsInsertCall) Do(opts ...googleapi.CallOption) (*CreateOrdersResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreateOrdersResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Create the given list of proposals",
+	//   "httpMethod": "POST",
+	//   "id": "adexchangebuyer.proposals.insert",
+	//   "path": "proposals/insert",
+	//   "request": {
+	//     "$ref": "CreateOrdersRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "CreateOrdersResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer.proposals.patch":
+
+type ProposalsPatchCall struct {
+	s              *Service
+	proposalId     string
+	revisionNumber int64
+	updateAction   string
+	proposal       *Proposal
+	urlParams_     gensupport.URLParams
+	ctx_           context.Context
+}
+
+// Patch: Update the given proposal. This method supports patch
+// semantics.
+func (r *ProposalsService) Patch(proposalId string, revisionNumber int64, updateAction string, proposal *Proposal) *ProposalsPatchCall {
+	c := &ProposalsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.proposalId = proposalId
+	c.revisionNumber = revisionNumber
+	c.updateAction = updateAction
+	c.proposal = proposal
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProposalsPatchCall) Fields(s ...googleapi.Field) *ProposalsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProposalsPatchCall) Context(ctx context.Context) *ProposalsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProposalsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.proposal)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "proposals/{proposalId}/{revisionNumber}/{updateAction}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"proposalId":     c.proposalId,
+		"revisionNumber": strconv.FormatInt(c.revisionNumber, 10),
+		"updateAction":   c.updateAction,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "adexchangebuyer.proposals.patch" call.
+// Exactly one of *Proposal or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Proposal.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProposalsPatchCall) Do(opts ...googleapi.CallOption) (*Proposal, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Proposal{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Update the given proposal. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "adexchangebuyer.proposals.patch",
+	//   "parameterOrder": [
+	//     "proposalId",
+	//     "revisionNumber",
+	//     "updateAction"
+	//   ],
+	//   "parameters": {
+	//     "proposalId": {
+	//       "description": "The proposal id to update.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "revisionNumber": {
+	//       "description": "The last known revision number to update. If the head revision in the marketplace database has since changed, an error will be thrown. The caller should then fetch the latest proposal at head revision and retry the update at that revision.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateAction": {
+	//       "description": "The proposed action to take on the proposal.",
+	//       "enum": [
+	//         "accept",
+	//         "cancel",
+	//         "propose",
+	//         "unknownAction",
+	//         "updateFinalized"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "proposals/{proposalId}/{revisionNumber}/{updateAction}",
+	//   "request": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "response": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer.proposals.search":
+
+type ProposalsSearchCall struct {
+	s            *Service
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Search: Search for proposals using pql query
+func (r *ProposalsService) Search() *ProposalsSearchCall {
+	c := &ProposalsSearchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	return c
+}
+
+// PqlQuery sets the optional parameter "pqlQuery": Query string to
+// retrieve specific proposals.
+func (c *ProposalsSearchCall) PqlQuery(pqlQuery string) *ProposalsSearchCall {
+	c.urlParams_.Set("pqlQuery", pqlQuery)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProposalsSearchCall) Fields(s ...googleapi.Field) *ProposalsSearchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProposalsSearchCall) IfNoneMatch(entityTag string) *ProposalsSearchCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProposalsSearchCall) Context(ctx context.Context) *ProposalsSearchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProposalsSearchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "proposals/search")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.SetOpaque(req.URL)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "adexchangebuyer.proposals.search" call.
+// Exactly one of *GetOrdersResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *GetOrdersResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProposalsSearchCall) Do(opts ...googleapi.CallOption) (*GetOrdersResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &GetOrdersResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Search for proposals using pql query",
+	//   "httpMethod": "GET",
+	//   "id": "adexchangebuyer.proposals.search",
+	//   "parameters": {
+	//     "pqlQuery": {
+	//       "description": "Query string to retrieve specific proposals.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "proposals/search",
+	//   "response": {
+	//     "$ref": "GetOrdersResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
+
+// method id "adexchangebuyer.proposals.update":
+
+type ProposalsUpdateCall struct {
+	s              *Service
+	proposalId     string
+	revisionNumber int64
+	updateAction   string
+	proposal       *Proposal
+	urlParams_     gensupport.URLParams
+	ctx_           context.Context
+}
+
+// Update: Update the given proposal
+func (r *ProposalsService) Update(proposalId string, revisionNumber int64, updateAction string, proposal *Proposal) *ProposalsUpdateCall {
+	c := &ProposalsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.proposalId = proposalId
+	c.revisionNumber = revisionNumber
+	c.updateAction = updateAction
+	c.proposal = proposal
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProposalsUpdateCall) Fields(s ...googleapi.Field) *ProposalsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProposalsUpdateCall) Context(ctx context.Context) *ProposalsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProposalsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.proposal)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "proposals/{proposalId}/{revisionNumber}/{updateAction}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"proposalId":     c.proposalId,
+		"revisionNumber": strconv.FormatInt(c.revisionNumber, 10),
+		"updateAction":   c.updateAction,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "adexchangebuyer.proposals.update" call.
+// Exactly one of *Proposal or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Proposal.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProposalsUpdateCall) Do(opts ...googleapi.CallOption) (*Proposal, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Proposal{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Update the given proposal",
+	//   "httpMethod": "PUT",
+	//   "id": "adexchangebuyer.proposals.update",
+	//   "parameterOrder": [
+	//     "proposalId",
+	//     "revisionNumber",
+	//     "updateAction"
+	//   ],
+	//   "parameters": {
+	//     "proposalId": {
+	//       "description": "The proposal id to update.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "revisionNumber": {
+	//       "description": "The last known revision number to update. If the head revision in the marketplace database has since changed, an error will be thrown. The caller should then fetch the latest proposal at head revision and retry the update at that revision.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateAction": {
+	//       "description": "The proposed action to take on the proposal.",
+	//       "enum": [
+	//         "accept",
+	//         "cancel",
+	//         "propose",
+	//         "unknownAction",
+	//         "updateFinalized"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "proposals/{proposalId}/{revisionNumber}/{updateAction}",
+	//   "request": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "response": {
+	//     "$ref": "Proposal"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/adexchange.buyer"
+	//   ]
+	// }
+
+}
diff --git a/adsense/v1.2/adsense-api.json b/adsense/v1.2/adsense-api.json
index 5e8ef7c..6cbfa8f 100644
--- a/adsense/v1.2/adsense-api.json
+++ b/adsense/v1.2/adsense-api.json
@@ -1,12 +1,12 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/4sbh2CScTU4USzSvCohsjZ1YVxQ\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/nb2AlVMrzC93FBmRoviVtVbDszY\"",
  "discoveryVersion": "v1",
  "id": "adsense:v1.2",
  "name": "adsense",
  "canonicalName": "AdSense",
  "version": "v1.2",
- "revision": "20141218",
+ "revision": "20160202",
  "title": "AdSense Management API",
  "description": "Gives AdSense publishers access to their inventory and the ability to generate reports",
  "ownerDomain": "google.com",
@@ -256,7 +256,7 @@
     },
     "contentAdsSettings": {
      "type": "object",
-     "description": "Settings specific to content ads (AFC) and highend mobile content ads (AFMC).",
+     "description": "Settings specific to content ads (AFC) and highend mobile content ads (AFMC - deprecated).",
      "properties": {
       "backupOption": {
        "type": "object",
@@ -292,7 +292,7 @@
     },
     "feedAdsSettings": {
      "type": "object",
-     "description": "Settings specific to feed ads (AFF).",
+     "description": "Settings specific to feed ads (AFF) - deprecated.",
      "properties": {
       "adPosition": {
        "type": "string",
@@ -325,7 +325,7 @@
     },
     "mobileContentAdsSettings": {
      "type": "object",
-     "description": "Settings specific to WAP mobile content ads (AFMC).",
+     "description": "Settings specific to WAP mobile content ads (AFMC) - deprecated.",
      "properties": {
       "markupLanguage": {
        "type": "string",
@@ -488,7 +488,7 @@
       },
       "location": {
        "type": "string",
-       "description": "The locations in which ads appear. (Only valid for content and mobile content ads). Acceptable values for content ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable values for mobile content ads are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS."
+       "description": "The locations in which ads appear. (Only valid for content and mobile content ads (deprecated)). Acceptable values for content ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable values for mobile content ads (deprecated) are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS."
       },
       "siteLanguage": {
        "type": "string",
diff --git a/adsense/v1.2/adsense-gen.go b/adsense/v1.2/adsense-gen.go
index 14ee116..69e7a34 100644
--- a/adsense/v1.2/adsense-gen.go
+++ b/adsense/v1.2/adsense-gen.go
@@ -531,13 +531,13 @@
 	Code string `json:"code,omitempty"`
 
 	// ContentAdsSettings: Settings specific to content ads (AFC) and
-	// highend mobile content ads (AFMC).
+	// highend mobile content ads (AFMC - deprecated).
 	ContentAdsSettings *AdUnitContentAdsSettings `json:"contentAdsSettings,omitempty"`
 
 	// CustomStyle: Custom style information specific to this ad unit.
 	CustomStyle *AdStyle `json:"customStyle,omitempty"`
 
-	// FeedAdsSettings: Settings specific to feed ads (AFF).
+	// FeedAdsSettings: Settings specific to feed ads (AFF) - deprecated.
 	FeedAdsSettings *AdUnitFeedAdsSettings `json:"feedAdsSettings,omitempty"`
 
 	// Id: Unique identifier of this ad unit. This should be considered an
@@ -549,7 +549,7 @@
 	Kind string `json:"kind,omitempty"`
 
 	// MobileContentAdsSettings: Settings specific to WAP mobile content ads
-	// (AFMC).
+	// (AFMC) - deprecated.
 	MobileContentAdsSettings *AdUnitMobileContentAdsSettings `json:"mobileContentAdsSettings,omitempty"`
 
 	// Name: Name of this ad unit.
@@ -590,7 +590,7 @@
 }
 
 // AdUnitContentAdsSettings: Settings specific to content ads (AFC) and
-// highend mobile content ads (AFMC).
+// highend mobile content ads (AFMC - deprecated).
 type AdUnitContentAdsSettings struct {
 	// BackupOption: The backup option to be used in instances where no ad
 	// is available.
@@ -645,7 +645,8 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
-// AdUnitFeedAdsSettings: Settings specific to feed ads (AFF).
+// AdUnitFeedAdsSettings: Settings specific to feed ads (AFF) -
+// deprecated.
 type AdUnitFeedAdsSettings struct {
 	// AdPosition: The position of the ads relative to the feed entries.
 	AdPosition string `json:"adPosition,omitempty"`
@@ -677,7 +678,7 @@
 }
 
 // AdUnitMobileContentAdsSettings: Settings specific to WAP mobile
-// content ads (AFMC).
+// content ads (AFMC) - deprecated.
 type AdUnitMobileContentAdsSettings struct {
 	// MarkupLanguage: The markup language to use for this ad unit.
 	MarkupLanguage string `json:"markupLanguage,omitempty"`
@@ -868,11 +869,11 @@
 	Description string `json:"description,omitempty"`
 
 	// Location: The locations in which ads appear. (Only valid for content
-	// and mobile content ads). Acceptable values for content ads are:
-	// TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER,
+	// and mobile content ads (deprecated)). Acceptable values for content
+	// ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER,
 	// MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT,
-	// MULTIPLE_LOCATIONS. Acceptable values for mobile content ads are:
-	// TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS.
+	// MULTIPLE_LOCATIONS. Acceptable values for mobile content ads
+	// (deprecated) are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS.
 	Location string `json:"location,omitempty"`
 
 	// SiteLanguage: The language of the sites ads will be displayed on.
diff --git a/adsense/v1.3/adsense-api.json b/adsense/v1.3/adsense-api.json
index 1bcbaef..6c55a15 100644
--- a/adsense/v1.3/adsense-api.json
+++ b/adsense/v1.3/adsense-api.json
@@ -1,12 +1,12 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/gTf3J_Tcqy5jzBteF-x9VlOxF-c\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/GPgPfQReATQaSRB3CaS8FwPCKTM\"",
  "discoveryVersion": "v1",
  "id": "adsense:v1.3",
  "name": "adsense",
  "canonicalName": "AdSense",
  "version": "v1.3",
- "revision": "20141218",
+ "revision": "20160202",
  "title": "AdSense Management API",
  "description": "Gives AdSense publishers access to their inventory and the ability to generate reports",
  "ownerDomain": "google.com",
@@ -271,7 +271,7 @@
     },
     "contentAdsSettings": {
      "type": "object",
-     "description": "Settings specific to content ads (AFC) and highend mobile content ads (AFMC).",
+     "description": "Settings specific to content ads (AFC) and highend mobile content ads (AFMC - deprecated).",
      "properties": {
       "backupOption": {
        "type": "object",
@@ -307,7 +307,7 @@
     },
     "feedAdsSettings": {
      "type": "object",
-     "description": "Settings specific to feed ads (AFF).",
+     "description": "Settings specific to feed ads (AFF) - deprecated.",
      "properties": {
       "adPosition": {
        "type": "string",
@@ -340,7 +340,7 @@
     },
     "mobileContentAdsSettings": {
      "type": "object",
-     "description": "Settings specific to WAP mobile content ads (AFMC).",
+     "description": "Settings specific to WAP mobile content ads (AFMC) - deprecated.",
      "properties": {
       "markupLanguage": {
        "type": "string",
@@ -548,7 +548,7 @@
       },
       "location": {
        "type": "string",
-       "description": "The locations in which ads appear. (Only valid for content and mobile content ads). Acceptable values for content ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable values for mobile content ads are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS."
+       "description": "The locations in which ads appear. (Only valid for content and mobile content ads (deprecated)). Acceptable values for content ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable values for mobile content ads (deprecated) are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS."
       },
       "siteLanguage": {
        "type": "string",
diff --git a/adsense/v1.3/adsense-gen.go b/adsense/v1.3/adsense-gen.go
index d8edc36..83b4aeb 100644
--- a/adsense/v1.3/adsense-gen.go
+++ b/adsense/v1.3/adsense-gen.go
@@ -617,13 +617,13 @@
 	Code string `json:"code,omitempty"`
 
 	// ContentAdsSettings: Settings specific to content ads (AFC) and
-	// highend mobile content ads (AFMC).
+	// highend mobile content ads (AFMC - deprecated).
 	ContentAdsSettings *AdUnitContentAdsSettings `json:"contentAdsSettings,omitempty"`
 
 	// CustomStyle: Custom style information specific to this ad unit.
 	CustomStyle *AdStyle `json:"customStyle,omitempty"`
 
-	// FeedAdsSettings: Settings specific to feed ads (AFF).
+	// FeedAdsSettings: Settings specific to feed ads (AFF) - deprecated.
 	FeedAdsSettings *AdUnitFeedAdsSettings `json:"feedAdsSettings,omitempty"`
 
 	// Id: Unique identifier of this ad unit. This should be considered an
@@ -635,7 +635,7 @@
 	Kind string `json:"kind,omitempty"`
 
 	// MobileContentAdsSettings: Settings specific to WAP mobile content ads
-	// (AFMC).
+	// (AFMC) - deprecated.
 	MobileContentAdsSettings *AdUnitMobileContentAdsSettings `json:"mobileContentAdsSettings,omitempty"`
 
 	// Name: Name of this ad unit.
@@ -676,7 +676,7 @@
 }
 
 // AdUnitContentAdsSettings: Settings specific to content ads (AFC) and
-// highend mobile content ads (AFMC).
+// highend mobile content ads (AFMC - deprecated).
 type AdUnitContentAdsSettings struct {
 	// BackupOption: The backup option to be used in instances where no ad
 	// is available.
@@ -731,7 +731,8 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
-// AdUnitFeedAdsSettings: Settings specific to feed ads (AFF).
+// AdUnitFeedAdsSettings: Settings specific to feed ads (AFF) -
+// deprecated.
 type AdUnitFeedAdsSettings struct {
 	// AdPosition: The position of the ads relative to the feed entries.
 	AdPosition string `json:"adPosition,omitempty"`
@@ -763,7 +764,7 @@
 }
 
 // AdUnitMobileContentAdsSettings: Settings specific to WAP mobile
-// content ads (AFMC).
+// content ads (AFMC) - deprecated.
 type AdUnitMobileContentAdsSettings struct {
 	// MarkupLanguage: The markup language to use for this ad unit.
 	MarkupLanguage string `json:"markupLanguage,omitempty"`
@@ -1017,11 +1018,11 @@
 	Description string `json:"description,omitempty"`
 
 	// Location: The locations in which ads appear. (Only valid for content
-	// and mobile content ads). Acceptable values for content ads are:
-	// TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER,
+	// and mobile content ads (deprecated)). Acceptable values for content
+	// ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER,
 	// MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT,
-	// MULTIPLE_LOCATIONS. Acceptable values for mobile content ads are:
-	// TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS.
+	// MULTIPLE_LOCATIONS. Acceptable values for mobile content ads
+	// (deprecated) are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS.
 	Location string `json:"location,omitempty"`
 
 	// SiteLanguage: The language of the sites ads will be displayed on.
diff --git a/adsense/v1.4/adsense-api.json b/adsense/v1.4/adsense-api.json
index f67a90c..47205cb 100644
--- a/adsense/v1.4/adsense-api.json
+++ b/adsense/v1.4/adsense-api.json
@@ -1,12 +1,12 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/0LJdy3bhVfuPDmaGtJK4_nceDoU\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/8xF6aInTiXwv-cCvrNPWo73X66U\"",
  "discoveryVersion": "v1",
  "id": "adsense:v1.4",
  "name": "adsense",
  "canonicalName": "AdSense",
  "version": "v1.4",
- "revision": "20151013",
+ "revision": "20160202",
  "title": "AdSense Management API",
  "description": "Gives AdSense publishers access to their inventory and the ability to generate reports",
  "ownerDomain": "google.com",
@@ -283,7 +283,7 @@
     },
     "contentAdsSettings": {
      "type": "object",
-     "description": "Settings specific to content ads (AFC) and highend mobile content ads (AFMC).",
+     "description": "Settings specific to content ads (AFC) and highend mobile content ads (AFMC - deprecated).",
      "properties": {
       "backupOption": {
        "type": "object",
@@ -319,7 +319,7 @@
     },
     "feedAdsSettings": {
      "type": "object",
-     "description": "Settings specific to feed ads (AFF).",
+     "description": "Settings specific to feed ads (AFF) - deprecated.",
      "properties": {
       "adPosition": {
        "type": "string",
@@ -352,7 +352,7 @@
     },
     "mobileContentAdsSettings": {
      "type": "object",
-     "description": "Settings specific to WAP mobile content ads (AFMC).",
+     "description": "Settings specific to WAP mobile content ads (AFMC) - deprecated.",
      "properties": {
       "markupLanguage": {
        "type": "string",
@@ -572,7 +572,7 @@
       },
       "location": {
        "type": "string",
-       "description": "The locations in which ads appear. (Only valid for content and mobile content ads). Acceptable values for content ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable values for mobile content ads are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS."
+       "description": "The locations in which ads appear. (Only valid for content and mobile content ads (deprecated)). Acceptable values for content ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable values for mobile content ads (deprecated) are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS."
       },
       "siteLanguage": {
        "type": "string",
diff --git a/adsense/v1.4/adsense-gen.go b/adsense/v1.4/adsense-gen.go
index 0a1d064..4a60413 100644
--- a/adsense/v1.4/adsense-gen.go
+++ b/adsense/v1.4/adsense-gen.go
@@ -651,13 +651,13 @@
 	Code string `json:"code,omitempty"`
 
 	// ContentAdsSettings: Settings specific to content ads (AFC) and
-	// highend mobile content ads (AFMC).
+	// highend mobile content ads (AFMC - deprecated).
 	ContentAdsSettings *AdUnitContentAdsSettings `json:"contentAdsSettings,omitempty"`
 
 	// CustomStyle: Custom style information specific to this ad unit.
 	CustomStyle *AdStyle `json:"customStyle,omitempty"`
 
-	// FeedAdsSettings: Settings specific to feed ads (AFF).
+	// FeedAdsSettings: Settings specific to feed ads (AFF) - deprecated.
 	FeedAdsSettings *AdUnitFeedAdsSettings `json:"feedAdsSettings,omitempty"`
 
 	// Id: Unique identifier of this ad unit. This should be considered an
@@ -669,7 +669,7 @@
 	Kind string `json:"kind,omitempty"`
 
 	// MobileContentAdsSettings: Settings specific to WAP mobile content ads
-	// (AFMC).
+	// (AFMC) - deprecated.
 	MobileContentAdsSettings *AdUnitMobileContentAdsSettings `json:"mobileContentAdsSettings,omitempty"`
 
 	// Name: Name of this ad unit.
@@ -710,7 +710,7 @@
 }
 
 // AdUnitContentAdsSettings: Settings specific to content ads (AFC) and
-// highend mobile content ads (AFMC).
+// highend mobile content ads (AFMC - deprecated).
 type AdUnitContentAdsSettings struct {
 	// BackupOption: The backup option to be used in instances where no ad
 	// is available.
@@ -765,7 +765,8 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
-// AdUnitFeedAdsSettings: Settings specific to feed ads (AFF).
+// AdUnitFeedAdsSettings: Settings specific to feed ads (AFF) -
+// deprecated.
 type AdUnitFeedAdsSettings struct {
 	// AdPosition: The position of the ads relative to the feed entries.
 	AdPosition string `json:"adPosition,omitempty"`
@@ -797,7 +798,7 @@
 }
 
 // AdUnitMobileContentAdsSettings: Settings specific to WAP mobile
-// content ads (AFMC).
+// content ads (AFMC) - deprecated.
 type AdUnitMobileContentAdsSettings struct {
 	// MarkupLanguage: The markup language to use for this ad unit.
 	MarkupLanguage string `json:"markupLanguage,omitempty"`
@@ -1060,11 +1061,11 @@
 	Description string `json:"description,omitempty"`
 
 	// Location: The locations in which ads appear. (Only valid for content
-	// and mobile content ads). Acceptable values for content ads are:
-	// TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER,
+	// and mobile content ads (deprecated)). Acceptable values for content
+	// ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER,
 	// MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT,
-	// MULTIPLE_LOCATIONS. Acceptable values for mobile content ads are:
-	// TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS.
+	// MULTIPLE_LOCATIONS. Acceptable values for mobile content ads
+	// (deprecated) are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS.
 	Location string `json:"location,omitempty"`
 
 	// SiteLanguage: The language of the sites ads will be displayed on.
diff --git a/adsensehost/v4.1/adsensehost-api.json b/adsensehost/v4.1/adsensehost-api.json
index e4979b1..b74f316 100644
--- a/adsensehost/v4.1/adsensehost-api.json
+++ b/adsensehost/v4.1/adsensehost-api.json
@@ -1,12 +1,12 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/yoGXlEwGPLEAr1fmq3U4dFpyoyQ\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/0792tS8OXrtZA0Ibtc7HcL4LqGc\"",
  "discoveryVersion": "v1",
  "id": "adsensehost:v4.1",
  "name": "adsensehost",
  "canonicalName": "AdSense Host",
  "version": "v4.1",
- "revision": "20141229",
+ "revision": "20160202",
  "title": "AdSense Host API",
  "description": "Gives AdSense Hosts access to report generation, ad code generation, and publisher management capabilities.",
  "ownerDomain": "google.com",
@@ -260,7 +260,7 @@
     },
     "contentAdsSettings": {
      "type": "object",
-     "description": "Settings specific to content ads (AFC) and highend mobile content ads (AFMC).",
+     "description": "Settings specific to content ads (AFC) and highend mobile content ads (AFMC - deprecated).",
      "properties": {
       "backupOption": {
        "type": "object",
@@ -305,7 +305,7 @@
     },
     "mobileContentAdsSettings": {
      "type": "object",
-     "description": "Settings specific to WAP mobile content ads (AFMC).",
+     "description": "Settings specific to WAP mobile content ads (AFMC - deprecated).",
      "properties": {
       "markupLanguage": {
        "type": "string",
@@ -380,7 +380,7 @@
     },
     "productCodes": {
      "type": "array",
-     "description": "The products to associate with the user. Options: AFC, AFF, AFS, AFMC",
+     "description": "The products to associate with the user. Options: AFC, AFG, AFV, AFS (deprecated), AFMC (deprecated)",
      "items": {
       "type": "string"
      }
@@ -1138,8 +1138,8 @@
        "enumDescriptions": [
         "AdSense For Content",
         "AdSense For Games",
-        "AdSense For Mobile Content",
-        "AdSense For Search",
+        "AdSense For Mobile Content - deprecated",
+        "AdSense For Search - deprecated",
         "AdSense For Video"
        ],
        "repeated": true,
diff --git a/adsensehost/v4.1/adsensehost-gen.go b/adsensehost/v4.1/adsensehost-gen.go
index e19f010..d0fc007 100644
--- a/adsensehost/v4.1/adsensehost-gen.go
+++ b/adsensehost/v4.1/adsensehost-gen.go
@@ -435,7 +435,7 @@
 	Code string `json:"code,omitempty"`
 
 	// ContentAdsSettings: Settings specific to content ads (AFC) and
-	// highend mobile content ads (AFMC).
+	// highend mobile content ads (AFMC - deprecated).
 	ContentAdsSettings *AdUnitContentAdsSettings `json:"contentAdsSettings,omitempty"`
 
 	// CustomStyle: Custom style information specific to this ad unit.
@@ -450,7 +450,7 @@
 	Kind string `json:"kind,omitempty"`
 
 	// MobileContentAdsSettings: Settings specific to WAP mobile content ads
-	// (AFMC).
+	// (AFMC - deprecated).
 	MobileContentAdsSettings *AdUnitMobileContentAdsSettings `json:"mobileContentAdsSettings,omitempty"`
 
 	// Name: Name of this ad unit.
@@ -487,7 +487,7 @@
 }
 
 // AdUnitContentAdsSettings: Settings specific to content ads (AFC) and
-// highend mobile content ads (AFMC).
+// highend mobile content ads (AFMC - deprecated).
 type AdUnitContentAdsSettings struct {
 	// BackupOption: The backup option to be used in instances where no ad
 	// is available.
@@ -547,7 +547,7 @@
 }
 
 // AdUnitMobileContentAdsSettings: Settings specific to WAP mobile
-// content ads (AFMC).
+// content ads (AFMC - deprecated).
 type AdUnitMobileContentAdsSettings struct {
 	// MarkupLanguage: The markup language to use for this ad unit.
 	MarkupLanguage string `json:"markupLanguage,omitempty"`
@@ -623,7 +623,7 @@
 	Kind string `json:"kind,omitempty"`
 
 	// ProductCodes: The products to associate with the user. Options: AFC,
-	// AFF, AFS, AFMC
+	// AFG, AFV, AFS (deprecated), AFMC (deprecated)
 	ProductCodes []string `json:"productCodes,omitempty"`
 
 	// RedirectUrl: Redirect URL of this association session. Used to
@@ -3132,8 +3132,8 @@
 	//       "enumDescriptions": [
 	//         "AdSense For Content",
 	//         "AdSense For Games",
-	//         "AdSense For Mobile Content",
-	//         "AdSense For Search",
+	//         "AdSense For Mobile Content - deprecated",
+	//         "AdSense For Search - deprecated",
 	//         "AdSense For Video"
 	//       ],
 	//       "location": "query",
diff --git a/androidenterprise/v1/androidenterprise-api.json b/androidenterprise/v1/androidenterprise-api.json
index 0effc82..1bbe88a 100644
--- a/androidenterprise/v1/androidenterprise-api.json
+++ b/androidenterprise/v1/androidenterprise-api.json
@@ -1,12 +1,12 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/Is5ylelsw5UqvuGXXB6cSzQKB_A\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/4xdfCsFKqY63nj0AgziCWDL1CtA\"",
  "discoveryVersion": "v1",
  "id": "androidenterprise:v1",
  "name": "androidenterprise",
  "canonicalName": "Android Enterprise",
  "version": "v1",
- "revision": "20151215",
+ "revision": "20160106",
  "title": "Google Play EMM API",
  "description": "Allows MDMs/EMMs and enterprises to manage the deployment of apps to Android for Work users.",
  "ownerDomain": "google.com",
@@ -645,6 +645,10 @@
      "type": "string",
      "description": "A string of the form app:\u003cpackage name\u003e. For example, app:com.google.android.gm represents the Gmail app."
     },
+    "productPricing": {
+     "type": "string",
+     "description": "Whether this product is free, free with in-app purchases, or paid."
+    },
     "requiresContainerApp": {
      "type": "boolean",
      "description": "Whether this app can only be installed on devices using the Android for Work container app."
diff --git a/androidenterprise/v1/androidenterprise-gen.go b/androidenterprise/v1/androidenterprise-gen.go
index 39da364..3203571 100644
--- a/androidenterprise/v1/androidenterprise-gen.go
+++ b/androidenterprise/v1/androidenterprise-gen.go
@@ -1189,6 +1189,10 @@
 	// app:com.google.android.gm represents the Gmail app.
 	ProductId string `json:"productId,omitempty"`
 
+	// ProductPricing: Whether this product is free, free with in-app
+	// purchases, or paid.
+	ProductPricing string `json:"productPricing,omitempty"`
+
 	// RequiresContainerApp: Whether this app can only be installed on
 	// devices using the Android for Work container app.
 	RequiresContainerApp bool `json:"requiresContainerApp,omitempty"`
diff --git a/api-list.json b/api-list.json
index 8207561..aa73f11 100644
--- a/api-list.json
+++ b/api-list.json
@@ -10,7 +10,6 @@
    "title": "Ad Exchange Buyer API",
    "description": "Accesses your bidding-account information, submits creatives for validation, finds available direct deals, and retrieves performance reports.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangebuyer/v1.2/rest",
-   "discoveryLink": "./apis/adexchangebuyer/v1.2/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -26,7 +25,6 @@
    "title": "Ad Exchange Buyer API",
    "description": "Accesses your bidding-account information, submits creatives for validation, finds available direct deals, and retrieves performance reports.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangebuyer/v1.3/rest",
-   "discoveryLink": "./apis/adexchangebuyer/v1.3/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -42,7 +40,6 @@
    "title": "Ad Exchange Buyer API",
    "description": "Accesses your bidding-account information, submits creatives for validation, finds available direct deals, and retrieves performance reports.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangebuyer/v1.4/rest",
-   "discoveryLink": "./apis/adexchangebuyer/v1.4/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -58,7 +55,6 @@
    "title": "Ad Exchange Seller API",
    "description": "Gives Ad Exchange seller users access to their inventory and the ability to generate reports",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangeseller/v1/rest",
-   "discoveryLink": "./apis/adexchangeseller/v1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -74,7 +70,6 @@
    "title": "Ad Exchange Seller API",
    "description": "Gives Ad Exchange seller users access to their inventory and the ability to generate reports",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangeseller/v1.1/rest",
-   "discoveryLink": "./apis/adexchangeseller/v1.1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -90,7 +85,6 @@
    "title": "Ad Exchange Seller API",
    "description": "Gives Ad Exchange seller users access to their inventory and the ability to generate reports",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangeseller/v2.0/rest",
-   "discoveryLink": "./apis/adexchangeseller/v2.0/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -106,7 +100,6 @@
    "title": "Admin Data Transfer API",
    "description": "Admin Data Transfer API lets you transfer user data from one user to another.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/admin/datatransfer_v1/rest",
-   "discoveryLink": "./apis/admin/datatransfer_v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -122,7 +115,6 @@
    "title": "Admin Directory API",
    "description": "The Admin SDK Directory API lets you view and manage enterprise resources such as users and groups, administrative notifications, security features, and more.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/admin/directory_v1/rest",
-   "discoveryLink": "./apis/admin/directory_v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -132,29 +124,12 @@
   },
   {
    "kind": "discovery#directoryItem",
-   "id": "admin:email_migration_v2",
-   "name": "admin",
-   "version": "email_migration_v2",
-   "title": "Email Migration API v2",
-   "description": "Email Migration API lets you migrate emails of users to Google backends.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/admin/email_migration_v2/rest",
-   "discoveryLink": "./apis/admin/email_migration_v2/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/googlemail-16.png",
-    "x32": "https://www.google.com/images/icons/product/googlemail-32.png"
-   },
-   "documentationLink": "https://developers.google.com/admin-sdk/email-migration/v2/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
    "id": "admin:reports_v1",
    "name": "admin",
    "version": "reports_v1",
    "title": "Admin Reports API",
    "description": "Allows the administrators of Google Apps customers to fetch reports about the usage, collaboration, security and risk for their users.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/admin/reports_v1/rest",
-   "discoveryLink": "./apis/admin/reports_v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -170,7 +145,6 @@
    "title": "AdSense Management API",
    "description": "Gives AdSense publishers access to their inventory and the ability to generate reports",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adsense/v1.2/rest",
-   "discoveryLink": "./apis/adsense/v1.2/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/adsense-16.png",
     "x32": "https://www.google.com/images/icons/product/adsense-32.png"
@@ -186,7 +160,6 @@
    "title": "AdSense Management API",
    "description": "Gives AdSense publishers access to their inventory and the ability to generate reports",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adsense/v1.3/rest",
-   "discoveryLink": "./apis/adsense/v1.3/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/adsense-16.png",
     "x32": "https://www.google.com/images/icons/product/adsense-32.png"
@@ -202,7 +175,6 @@
    "title": "AdSense Management API",
    "description": "Gives AdSense publishers access to their inventory and the ability to generate reports",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adsense/v1.4/rest",
-   "discoveryLink": "./apis/adsense/v1.4/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/adsense-16.png",
     "x32": "https://www.google.com/images/icons/product/adsense-32.png"
@@ -218,7 +190,6 @@
    "title": "AdSense Host API",
    "description": "Gives AdSense Hosts access to report generation, ad code generation, and publisher management capabilities.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adsensehost/v4.1/rest",
-   "discoveryLink": "./apis/adsensehost/v4.1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/adsense-16.png",
     "x32": "https://www.google.com/images/icons/product/adsense-32.png"
@@ -237,7 +208,6 @@
    "title": "Google Analytics API",
    "description": "View and manage your Google Analytics data",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/analytics/v2.4/rest",
-   "discoveryLink": "./apis/analytics/v2.4/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/analytics-16.png",
     "x32": "https://www.google.com/images/icons/product/analytics-32.png"
@@ -253,7 +223,6 @@
    "title": "Google Analytics API",
    "description": "View and manage your Google Analytics data",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/analytics/v3/rest",
-   "discoveryLink": "./apis/analytics/v3/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/analytics-16.png",
     "x32": "https://www.google.com/images/icons/product/analytics-32.png"
@@ -269,7 +238,6 @@
    "title": "Google Play EMM API",
    "description": "Allows MDMs/EMMs and enterprises to manage the deployment of apps to Android for Work users.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/androidenterprise/v1/rest",
-   "discoveryLink": "./apis/androidenterprise/v1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/android-16.png",
     "x32": "https://www.google.com/images/icons/product/android-32.png"
@@ -285,7 +253,6 @@
    "title": "Google Play Developer API",
    "description": "Lets Android application developers access their Google Play accounts.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/androidpublisher/v1/rest",
-   "discoveryLink": "./apis/androidpublisher/v1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/android-16.png",
     "x32": "https://www.google.com/images/icons/product/android-32.png"
@@ -301,7 +268,6 @@
    "title": "Google Play Developer API",
    "description": "Lets Android application developers access their Google Play accounts.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/androidpublisher/v1.1/rest",
-   "discoveryLink": "./apis/androidpublisher/v1.1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/android-16.png",
     "x32": "https://www.google.com/images/icons/product/android-32.png"
@@ -317,7 +283,6 @@
    "title": "Google Play Developer API",
    "description": "Lets Android application developers access their Google Play accounts.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/androidpublisher/v2/rest",
-   "discoveryLink": "./apis/androidpublisher/v2/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/android-16.png",
     "x32": "https://www.google.com/images/icons/product/android-32.png"
@@ -333,7 +298,6 @@
    "title": "Google Apps Activity API",
    "description": "Provides a historical view of activity.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/appsactivity/v1/rest",
-   "discoveryLink": "./apis/appsactivity/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -349,7 +313,6 @@
    "title": "Google App State API",
    "description": "The Google App State API.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/appstate/v1/rest",
-   "discoveryLink": "./apis/appstate/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -365,7 +328,6 @@
    "title": "Google Compute Engine Autoscaler API",
    "description": "The Google Compute Engine Autoscaler API provides autoscaling for groups of Cloud VMs.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/autoscaler/v1beta2/rest",
-   "discoveryLink": "./apis/autoscaler/v1beta2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -384,7 +346,6 @@
    "title": "BigQuery API",
    "description": "A data platform for customers to create, manage, share and query data.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/bigquery/v2/rest",
-   "discoveryLink": "./apis/bigquery/v2/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/search-16.gif",
     "x32": "https://www.google.com/images/icons/product/search-32.gif"
@@ -400,7 +361,6 @@
    "title": "Blogger API",
    "description": "API for access to the data within Blogger.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/blogger/v2/rest",
-   "discoveryLink": "./apis/blogger/v2/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/blogger-16.png",
     "x32": "https://www.google.com/images/icons/product/blogger-32.png"
@@ -419,7 +379,6 @@
    "title": "Blogger API",
    "description": "API for access to the data within Blogger.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/blogger/v3/rest",
-   "discoveryLink": "./apis/blogger/v3/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/blogger-16.png",
     "x32": "https://www.google.com/images/icons/product/blogger-32.png"
@@ -438,7 +397,6 @@
    "title": "Books API",
    "description": "Lets you search for books and manage your Google Books library.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/books/v1/rest",
-   "discoveryLink": "./apis/books/v1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/ebooks-16.png",
     "x32": "https://www.google.com/images/icons/product/ebooks-32.png"
@@ -454,7 +412,6 @@
    "title": "Calendar API",
    "description": "Lets you manipulate events and other calendar data.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest",
-   "discoveryLink": "./apis/calendar/v3/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/calendar-16.png",
     "x32": "http://www.google.com/images/icons/product/calendar-32.png"
@@ -470,7 +427,6 @@
    "title": "Google Civic Information API",
    "description": "An API for accessing civic information.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/civicinfo/v2/rest",
-   "discoveryLink": "./apis/civicinfo/v2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -480,13 +436,27 @@
   },
   {
    "kind": "discovery#directoryItem",
+   "id": "cloudbuild:v1",
+   "name": "cloudbuild",
+   "version": "v1",
+   "title": "Google Cloud Container Builder API",
+   "description": "The Google Cloud Container Builder API lets you build container images in the cloud.",
+   "discoveryRestUrl": "https://cloudbuild.googleapis.com/$discovery/rest",
+   "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+   },
+   "documentationLink": "",
+   "preferred": true
+  },
+  {
+   "kind": "discovery#directoryItem",
    "id": "cloudlatencytest:v2",
    "name": "cloudlatencytest",
    "version": "v2",
    "title": "Google Cloud Network Performance Monitoring API",
    "description": "A Test API to report latency data.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/cloudlatencytest/v2/rest",
-   "discoveryLink": "./apis/cloudlatencytest/v2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -502,7 +472,6 @@
    "title": "Cloud Monitoring API",
    "description": "API for accessing Google Cloud and API monitoring data.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/cloudmonitoring/v2beta2/rest",
-   "discoveryLink": "./apis/cloudmonitoring/v2beta2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -518,7 +487,6 @@
    "title": "Cloud User Accounts API",
    "description": "API for the Google Cloud User Accounts service.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/clouduseraccounts/alpha/rest",
-   "discoveryLink": "./apis/clouduseraccounts/alpha/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
     "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
@@ -534,7 +502,6 @@
    "title": "Cloud User Accounts API",
    "description": "API for the Google Cloud User Accounts service.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/clouduseraccounts/beta/rest",
-   "discoveryLink": "./apis/clouduseraccounts/beta/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
     "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
@@ -550,7 +517,6 @@
    "title": "Cloud User Accounts API",
    "description": "API for the Google Cloud User Accounts service.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/clouduseraccounts/vm_alpha/rest",
-   "discoveryLink": "./apis/clouduseraccounts/vm_alpha/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
     "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
@@ -566,7 +532,6 @@
    "title": "Cloud User Accounts API",
    "description": "API for the Google Cloud User Accounts service.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/clouduseraccounts/vm_beta/rest",
-   "discoveryLink": "./apis/clouduseraccounts/vm_beta/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
     "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
@@ -582,7 +547,6 @@
    "title": "Compute Engine API",
    "description": "API for the Google Compute Engine service.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/compute/beta/rest",
-   "discoveryLink": "./apis/compute/beta/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
     "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
@@ -598,7 +562,6 @@
    "title": "Compute Engine API",
    "description": "API for the Google Compute Engine service.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/compute/v1/rest",
-   "discoveryLink": "./apis/compute/v1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
     "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
@@ -614,7 +577,6 @@
    "title": "Content API for Shopping",
    "description": "Manage product items, inventory, and Merchant Center accounts for Google Shopping.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/content/v2sandbox/rest",
-   "discoveryLink": "./apis/content/v2sandbox/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -630,7 +592,6 @@
    "title": "Content API for Shopping",
    "description": "Manage product items, inventory, and Merchant Center accounts for Google Shopping.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/content/v2/rest",
-   "discoveryLink": "./apis/content/v2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -646,7 +607,6 @@
    "title": "Google Maps Coordinate API",
    "description": "Lets you view and manage jobs in a Coordinate team.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/coordinate/v1/rest",
-   "discoveryLink": "./apis/coordinate/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -662,7 +622,6 @@
    "title": "CustomSearch API",
    "description": "Lets you search over a website or collection of websites",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/customsearch/v1/rest",
-   "discoveryLink": "./apis/customsearch/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -678,7 +637,6 @@
    "title": "Google Cloud Datastore API",
    "description": "API for accessing Google Cloud Datastore.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/datastore/v1beta1/rest",
-   "discoveryLink": "./apis/datastore/v1beta1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -694,7 +652,6 @@
    "title": "Google Cloud Datastore API",
    "description": "API for accessing Google Cloud Datastore.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/datastore/v1beta2/rest",
-   "discoveryLink": "./apis/datastore/v1beta2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -710,7 +667,6 @@
    "title": "Google Cloud Deployment Manager API",
    "description": "The Deployment Manager API allows users to declaratively configure, deploy and run complex solutions on the Google Cloud Platform.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/deploymentmanager/v2/rest",
-   "discoveryLink": "./apis/deploymentmanager/v2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -726,7 +682,6 @@
    "title": "Google Cloud Deployment Manager API",
    "description": "The Deployment Manager API allows users to declaratively configure, deploy and run complex solutions on the Google Cloud Platform.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/deploymentmanager/v2beta1/rest",
-   "discoveryLink": "./apis/deploymentmanager/v2beta1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -745,7 +700,6 @@
    "title": "Google Cloud Deployment Manager API",
    "description": "The Deployment Manager API allows users to declaratively configure, deploy and run complex solutions on the Google Cloud Platform.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/deploymentmanager/v2beta2/rest",
-   "discoveryLink": "./apis/deploymentmanager/v2beta2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -761,7 +715,6 @@
    "title": "DFA Reporting API",
    "description": "Lets you create, run and download reports.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dfareporting/v1/rest",
-   "discoveryLink": "./apis/dfareporting/v1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -777,7 +730,6 @@
    "title": "DFA Reporting API",
    "description": "Lets you create, run and download reports.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dfareporting/v1.1/rest",
-   "discoveryLink": "./apis/dfareporting/v1.1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -793,7 +745,6 @@
    "title": "DFA Reporting API",
    "description": "Lets you create, run and download reports.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dfareporting/v1.2/rest",
-   "discoveryLink": "./apis/dfareporting/v1.2/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -809,7 +760,6 @@
    "title": "DFA Reporting API",
    "description": "Lets you create, run and download reports.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dfareporting/v1.3/rest",
-   "discoveryLink": "./apis/dfareporting/v1.3/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -825,7 +775,6 @@
    "title": "DCM/DFA Reporting And Trafficking API",
    "description": "Manage your DoubleClick Campaign Manager ad campaigns and reports.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dfareporting/v2.0/rest",
-   "discoveryLink": "./apis/dfareporting/v2.0/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -841,7 +790,6 @@
    "title": "DCM/DFA Reporting And Trafficking API",
    "description": "Manage your DoubleClick Campaign Manager ad campaigns and reports.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dfareporting/v2.1/rest",
-   "discoveryLink": "./apis/dfareporting/v2.1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -857,7 +805,6 @@
    "title": "DCM/DFA Reporting And Trafficking API",
    "description": "Manage your DoubleClick Campaign Manager ad campaigns and reports.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dfareporting/v2.2/rest",
-   "discoveryLink": "./apis/dfareporting/v2.2/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -873,7 +820,21 @@
    "title": "DCM/DFA Reporting And Trafficking API",
    "description": "Manage your DoubleClick Campaign Manager ad campaigns and reports.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dfareporting/v2.3/rest",
-   "discoveryLink": "./apis/dfareporting/v2.3/rest",
+   "icons": {
+    "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
+    "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
+   },
+   "documentationLink": "https://developers.google.com/doubleclick-advertisers/reporting/",
+   "preferred": false
+  },
+  {
+   "kind": "discovery#directoryItem",
+   "id": "dfareporting:v2.4",
+   "name": "dfareporting",
+   "version": "v2.4",
+   "title": "DCM/DFA Reporting And Trafficking API",
+   "description": "Manage your DoubleClick Campaign Manager ad campaigns and reports.",
+   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dfareporting/v2.4/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
     "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
@@ -889,7 +850,6 @@
    "title": "APIs Discovery Service",
    "description": "Lets you discover information about other Google APIs, such as what APIs are available, the resource and method details for each API.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/discovery/v1/rest",
-   "discoveryLink": "./apis/discovery/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/feature/filing_cabinet_search-g16.png",
     "x32": "http://www.google.com/images/icons/feature/filing_cabinet_search-g32.png"
@@ -905,7 +865,6 @@
    "title": "Google Cloud DNS API",
    "description": "The Google Cloud DNS API provides services for configuring and serving authoritative DNS records.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dns/v1/rest",
-   "discoveryLink": "./apis/dns/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -921,7 +880,6 @@
    "title": "DoubleClick Bid Manager API",
    "description": "API for viewing and managing your reports in DoubleClick Bid Manager.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/doubleclickbidmanager/v1/rest",
-   "discoveryLink": "./apis/doubleclickbidmanager/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -940,7 +898,6 @@
    "title": "DoubleClick Search API",
    "description": "Report and modify your advertising data in DoubleClick Search (for example, campaigns, ad groups, keywords, and conversions).",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/doubleclicksearch/v2/rest",
-   "discoveryLink": "./apis/doubleclicksearch/v2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -956,7 +913,6 @@
    "title": "Drive API",
    "description": "The API to interact with Drive.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/drive/v1/rest",
-   "discoveryLink": "./apis/drive/v1/rest",
    "icons": {
     "x16": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_16.png",
     "x32": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_32.png"
@@ -972,7 +928,6 @@
    "title": "Drive API",
    "description": "The API to interact with Drive.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/drive/v2/rest",
-   "discoveryLink": "./apis/drive/v2/rest",
    "icons": {
     "x16": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_16.png",
     "x32": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_32.png"
@@ -988,7 +943,6 @@
    "title": "Drive API",
    "description": "The API to interact with Drive.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/drive/v3/rest",
-   "discoveryLink": "./apis/drive/v3/rest",
    "icons": {
     "x16": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_16.png",
     "x32": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_32.png"
@@ -1004,7 +958,6 @@
    "title": "Fitness",
    "description": "Google Fit API",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/fitness/v1/rest",
-   "discoveryLink": "./apis/fitness/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1020,7 +973,6 @@
    "title": "Freebase Search",
    "description": "Find Freebase entities using textual queries and other constraints.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/freebase/v1/rest",
-   "discoveryLink": "./apis/freebase/v1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/freebase-16.png",
     "x32": "https://www.google.com/images/icons/product/freebase-32.png"
@@ -1036,7 +988,6 @@
    "title": "Fusion Tables API",
    "description": "API for working with Fusion Tables data.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/fusiontables/v1/rest",
-   "discoveryLink": "./apis/fusiontables/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1052,7 +1003,6 @@
    "title": "Fusion Tables API",
    "description": "API for working with Fusion Tables data.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/fusiontables/v2/rest",
-   "discoveryLink": "./apis/fusiontables/v2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1068,7 +1018,6 @@
    "title": "Google Play Game Services API",
    "description": "The API for Google Play Game Services.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/games/v1/rest",
-   "discoveryLink": "./apis/games/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1084,7 +1033,6 @@
    "title": "Google Play Game Services Publishing API",
    "description": "The Publishing API for Google Play Game Services.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/gamesConfiguration/v1configuration/rest",
-   "discoveryLink": "./apis/gamesConfiguration/v1configuration/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1100,7 +1048,6 @@
    "title": "Google Play Game Services Management API",
    "description": "The Management API for Google Play Game Services.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/gamesManagement/v1management/rest",
-   "discoveryLink": "./apis/gamesManagement/v1management/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1116,7 +1063,6 @@
    "title": "Google Affiliate Network API",
    "description": "Lets you have programmatic access to your Google Affiliate Network data.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/gan/v1beta1/rest",
-   "discoveryLink": "./apis/gan/v1beta1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/affiliatenetwork-16.png",
     "x32": "http://www.google.com/images/icons/product/affiliatenetwork-32.png"
@@ -1132,7 +1078,6 @@
    "title": "Genomics API",
    "description": "Provides access to Genomics data.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/genomics/v1beta2/rest",
-   "discoveryLink": "./apis/genomics/v1beta2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1148,7 +1093,6 @@
    "title": "Gmail API",
    "description": "The Gmail REST API.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/gmail/v1/rest",
-   "discoveryLink": "./apis/gmail/v1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/googlemail-16.png",
     "x32": "https://www.google.com/images/icons/product/googlemail-32.png"
@@ -1164,7 +1108,6 @@
    "title": "Groups Migration API",
    "description": "Groups Migration Api.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/groupsmigration/v1/rest",
-   "discoveryLink": "./apis/groupsmigration/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/discussions-16.gif",
     "x32": "http://www.google.com/images/icons/product/discussions-32.gif"
@@ -1180,7 +1123,6 @@
    "title": "Groups Settings API",
    "description": "Lets you manage permission levels and related settings of a group.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/groupssettings/v1/rest",
-   "discoveryLink": "./apis/groupssettings/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1196,7 +1138,21 @@
    "title": "Google App Engine Admin API",
    "description": "The Google App Engine Admin API enables developers to provision and manage their App Engine applications.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/appengine/v1beta4/rest",
-   "discoveryLink": "./apis/appengine/v1beta4/rest",
+   "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+   },
+   "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/",
+   "preferred": false
+  },
+  {
+   "kind": "discovery#directoryItem",
+   "id": "appengine:v1beta5",
+   "name": "appengine",
+   "version": "v1beta5",
+   "title": "Google App Engine Admin API",
+   "description": "The Google App Engine Admin API enables developers to provision and manage their App Engine applications.",
+   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/appengine/v1beta5/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1212,7 +1168,6 @@
    "title": "Google Classroom API",
    "description": "Google Classroom API",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/classroom/v1/rest",
-   "discoveryLink": "./apis/classroom/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1228,7 +1183,6 @@
    "title": "Google Cloud Billing API",
    "description": "Retrieves Google Developers Console billing accounts and associates them with projects.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/cloudbilling/v1/rest",
-   "discoveryLink": "./apis/cloudbilling/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1244,7 +1198,6 @@
    "title": "Google Cloud Debugger API",
    "description": "Lets you examine the stack and variables of your running application without stopping or slowing it down.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/clouddebugger/v2/rest",
-   "discoveryLink": "./apis/clouddebugger/v2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1260,7 +1213,6 @@
    "title": "Google Cloud Resource Manager API",
    "description": "The Google Cloud Resource Manager API provides methods for creating, reading, and updating project metadata.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/cloudresourcemanager/v1beta1/rest",
-   "discoveryLink": "./apis/cloudresourcemanager/v1beta1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1276,7 +1228,6 @@
    "title": "Google Cloud Trace API",
    "description": "The Cloud Trace API allows you to send traces to and retrieve traces from Google Cloud Trace.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/cloudtrace/v1/rest",
-   "discoveryLink": "./apis/cloudtrace/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1292,7 +1243,6 @@
    "title": "Google Container Engine API",
    "description": "The Google Container Engine API is used for building and managing container based applications, powered by the open source Kubernetes technology.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/container/v1/rest",
-   "discoveryLink": "./apis/container/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1308,7 +1258,6 @@
    "title": "Google Dataflow API",
    "description": "Google Dataflow API.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dataflow/v1b3/rest",
-   "discoveryLink": "./apis/dataflow/v1b3/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1324,7 +1273,6 @@
    "title": "Google Cloud Dataproc API",
    "description": "An API for managing Hadoop-based clusters and jobs on Google Cloud Platform.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dataproc/v1alpha1/rest",
-   "discoveryLink": "./apis/dataproc/v1alpha1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1340,7 +1288,6 @@
    "title": "Google Cloud Dataproc API",
    "description": "An API for managing Hadoop-based clusters and jobs on Google Cloud Platform.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dataproc/v1/rest",
-   "discoveryLink": "./apis/dataproc/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1356,7 +1303,6 @@
    "title": "Google Cloud Dataproc API",
    "description": "An API for managing Hadoop-based clusters and jobs on Google Cloud Platform.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dataproc/v1beta1/rest",
-   "discoveryLink": "./apis/dataproc/v1beta1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1366,18 +1312,62 @@
   },
   {
    "kind": "discovery#directoryItem",
-   "id": "genomics:v1",
+   "id": "genomics:v1alpha2",
    "name": "genomics",
-   "version": "v1",
+   "version": "v1alpha2",
    "title": "Genomics API",
-   "description": "An API to store, process, explore, and share genomic data. It supports reference-based alignements, genetic variants, and reference genomes. This API provides an implementation of the Global Alliance for Genomics and Health (GA4GH) v0.5.1 API as well as several extensions.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/genomics/v1/rest",
-   "discoveryLink": "./apis/genomics/v1/rest",
+   "description": "An API to store, process, explore, and share genomic data. It supports reference-based alignments, genetic variants, and reference genomes. This API provides an implementation of the Global Alliance for Genomics and Health (GA4GH) v0.5.1 API as well as several extensions.",
+   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/genomics/v1alpha2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
    },
    "documentationLink": "",
+   "preferred": false
+  },
+  {
+   "kind": "discovery#directoryItem",
+   "id": "genomics:v1",
+   "name": "genomics",
+   "version": "v1",
+   "title": "Genomics API",
+   "description": "An API to store, process, explore, and share genomic data. It supports reference-based alignments, genetic variants, and reference genomes. This API provides an implementation of the Global Alliance for Genomics and Health (GA4GH) v0.5.1 API as well as several extensions.",
+   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/genomics/v1/rest",
+   "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+   },
+   "documentationLink": "",
+   "preferred": true
+  },
+  {
+   "kind": "discovery#directoryItem",
+   "id": "iam:v1alpha1",
+   "name": "iam",
+   "version": "v1alpha1",
+   "title": "Google Identity and Access Management API",
+   "description": "Manages identity and access control for Google Cloud Platform resources, including the creation of service accounts, which you can use to authenticate to Google and make API calls.",
+   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/iam/v1alpha1/rest",
+   "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+   },
+   "documentationLink": "https://cloud.google.com/iam/",
+   "preferred": false
+  },
+  {
+   "kind": "discovery#directoryItem",
+   "id": "iam:v1",
+   "name": "iam",
+   "version": "v1",
+   "title": "Google Identity and Access Management API",
+   "description": "Manages identity and access control for Google Cloud Platform resources, including the creation of service accounts, which you can use to authenticate to Google and make API calls.",
+   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/iam/v1/rest",
+   "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+   },
+   "documentationLink": "https://cloud.google.com/iam/",
    "preferred": true
   },
   {
@@ -1388,7 +1378,6 @@
    "title": "Knowledge Graph Search API",
    "description": "Knowledge Graph Search API allows developers to search the Google Knowledge Graph for entities.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/kgsearch/v1/rest",
-   "discoveryLink": "./apis/kgsearch/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1404,7 +1393,6 @@
    "title": "Google Cloud Logging API",
    "description": "The Google Cloud Logging API lets you write log entries and manage your logs, log sinks and logs-based metrics.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/logging/v2beta1/rest",
-   "discoveryLink": "./apis/logging/v2beta1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1420,7 +1408,6 @@
    "title": "Google Partners API",
    "description": "Lets advertisers search certified companies and create contact leads with them, and also audits the usage of clients.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/partners/v2/rest",
-   "discoveryLink": "./apis/partners/v2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1436,7 +1423,6 @@
    "title": "Google Play Movies Partner API",
    "description": "Lets Google Play Movies Partners get the delivery status of their titles.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/playmoviespartner/v1/rest",
-   "discoveryLink": "./apis/playmoviespartner/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1452,7 +1438,6 @@
    "title": "Google Proximity Beacon API",
    "description": "This API provides services to register, manage, index, and search beacons.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/proximitybeacon/v1beta1/rest",
-   "discoveryLink": "./apis/proximitybeacon/v1beta1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1468,7 +1453,6 @@
    "title": "Google Cloud Pub/Sub API",
    "description": "Provides reliable, many-to-many, asynchronous messaging between applications.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/pubsub/v1beta1a/rest",
-   "discoveryLink": "./apis/pubsub/v1beta1a/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1484,7 +1468,6 @@
    "title": "Google Cloud Pub/Sub API",
    "description": "Provides reliable, many-to-many, asynchronous messaging between applications.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/pubsub/v1/rest",
-   "discoveryLink": "./apis/pubsub/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1500,7 +1483,6 @@
    "title": "Google Cloud Pub/Sub API",
    "description": "Provides reliable, many-to-many, asynchronous messaging between applications.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/pubsub/v1beta2/rest",
-   "discoveryLink": "./apis/pubsub/v1beta2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1516,7 +1498,6 @@
    "title": "Google Apps Script Execution API",
    "description": "An API for executing Google Apps Script projects.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/script/v1/rest",
-   "discoveryLink": "./apis/script/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1532,7 +1513,6 @@
    "title": "Google Storage Transfer API",
    "description": "Transfers data from external data sources to a Google Cloud Storage bucket or between Google Cloud Storage buckets.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/storagetransfer/v1/rest",
-   "discoveryLink": "./apis/storagetransfer/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1548,7 +1528,6 @@
    "title": "YouTube Reporting API",
    "description": "An API to schedule reporting jobs and download the resulting bulk data reports about YouTube channels, videos etc. in the form of CSV files.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/youtubereporting/v1/rest",
-   "discoveryLink": "./apis/youtubereporting/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1564,7 +1543,6 @@
    "title": "Google Identity Toolkit API",
    "description": "Help the third party sites to implement federated login.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/identitytoolkit/v3/rest",
-   "discoveryLink": "./apis/identitytoolkit/v3/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1580,7 +1558,6 @@
    "title": "Enterprise License Manager API",
    "description": "Licensing API to view and manage license for your domain.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/licensing/v1/rest",
-   "discoveryLink": "./apis/licensing/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1596,7 +1573,6 @@
    "title": "Deployment Manager API",
    "description": "The Deployment Manager API allows users to declaratively configure, deploy and run complex solutions on the Google Cloud Platform.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/manager/v1beta2/rest",
-   "discoveryLink": "./apis/manager/v1beta2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1615,7 +1591,6 @@
    "title": "Google Maps Engine API",
    "description": "The Google Maps Engine API allows developers to store and query geospatial vector and raster data.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/mapsengine/exp2/rest",
-   "discoveryLink": "./apis/mapsengine/exp2/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/maps_engine-16.png",
     "x32": "https://www.google.com/images/icons/product/maps_engine-32.png"
@@ -1631,7 +1606,6 @@
    "title": "Google Maps Engine API",
    "description": "The Google Maps Engine API allows developers to store and query geospatial vector and raster data.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/mapsengine/v1/rest",
-   "discoveryLink": "./apis/mapsengine/v1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/maps_engine-16.png",
     "x32": "https://www.google.com/images/icons/product/maps_engine-32.png"
@@ -1647,7 +1621,6 @@
    "title": "Google Mirror API",
    "description": "API for interacting with Glass users via the timeline.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/mirror/v1/rest",
-   "discoveryLink": "./apis/mirror/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1666,7 +1639,6 @@
    "title": "Google OAuth2 API",
    "description": "Lets you access OAuth2 protocol related APIs.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/oauth2/v1/rest",
-   "discoveryLink": "./apis/oauth2/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1682,7 +1654,6 @@
    "title": "Google OAuth2 API",
    "description": "Lets you access OAuth2 protocol related APIs.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/oauth2/v2/rest",
-   "discoveryLink": "./apis/oauth2/v2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1698,7 +1669,6 @@
    "title": "PageSpeed Insights API",
    "description": "Lets you analyze the performance of a web page and get tailored suggestions to make that page faster.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v1/rest",
-   "discoveryLink": "./apis/pagespeedonline/v1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/pagespeed-16.png",
     "x32": "https://www.google.com/images/icons/product/pagespeed-32.png"
@@ -1714,7 +1684,6 @@
    "title": "PageSpeed Insights API",
    "description": "Lets you analyze the performance of a web page and get tailored suggestions to make that page faster.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v2/rest",
-   "discoveryLink": "./apis/pagespeedonline/v2/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/pagespeed-16.png",
     "x32": "https://www.google.com/images/icons/product/pagespeed-32.png"
@@ -1730,7 +1699,6 @@
    "title": "Google+ API",
    "description": "The Google+ API enables developers to build on top of the Google+ platform.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/plus/v1/rest",
-   "discoveryLink": "./apis/plus/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/gplus-16.png",
     "x32": "http://www.google.com/images/icons/product/gplus-32.png"
@@ -1746,7 +1714,6 @@
    "title": "Google+ Domains API",
    "description": "The Google+ API enables developers to build on top of the Google+ platform.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/plusDomains/v1/rest",
-   "discoveryLink": "./apis/plusDomains/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/gplus-16.png",
     "x32": "http://www.google.com/images/icons/product/gplus-32.png"
@@ -1762,7 +1729,6 @@
    "title": "Prediction API",
    "description": "Lets you access a cloud hosted machine learning service that makes it easy to build smart apps",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/prediction/v1.2/rest",
-   "discoveryLink": "./apis/prediction/v1.2/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/feature/predictionapi-16.png",
     "x32": "https://www.google.com/images/icons/feature/predictionapi-32.png"
@@ -1778,7 +1744,6 @@
    "title": "Prediction API",
    "description": "Lets you access a cloud hosted machine learning service that makes it easy to build smart apps",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/prediction/v1.3/rest",
-   "discoveryLink": "./apis/prediction/v1.3/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/feature/predictionapi-16.png",
     "x32": "https://www.google.com/images/icons/feature/predictionapi-32.png"
@@ -1794,7 +1759,6 @@
    "title": "Prediction API",
    "description": "Lets you access a cloud hosted machine learning service that makes it easy to build smart apps",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/prediction/v1.4/rest",
-   "discoveryLink": "./apis/prediction/v1.4/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/feature/predictionapi-16.png",
     "x32": "https://www.google.com/images/icons/feature/predictionapi-32.png"
@@ -1810,7 +1774,6 @@
    "title": "Prediction API",
    "description": "Lets you access a cloud hosted machine learning service that makes it easy to build smart apps",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/prediction/v1.5/rest",
-   "discoveryLink": "./apis/prediction/v1.5/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/feature/predictionapi-16.png",
     "x32": "https://www.google.com/images/icons/feature/predictionapi-32.png"
@@ -1826,7 +1789,6 @@
    "title": "Prediction API",
    "description": "Lets you access a cloud hosted machine learning service that makes it easy to build smart apps",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/prediction/v1.6/rest",
-   "discoveryLink": "./apis/prediction/v1.6/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/feature/predictionapi-16.png",
     "x32": "https://www.google.com/images/icons/feature/predictionapi-32.png"
@@ -1842,7 +1804,6 @@
    "title": "QPX Express API",
    "description": "Lets you find the least expensive flights between an origin and a destination.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/qpxExpress/v1/rest",
-   "discoveryLink": "./apis/qpxExpress/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1858,7 +1819,6 @@
    "title": "Replica Pool API",
    "description": "The Replica Pool API allows users to declaratively provision and manage groups of Google Compute Engine instances based on a common template.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/replicapool/v1beta1/rest",
-   "discoveryLink": "./apis/replicapool/v1beta1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1877,7 +1837,6 @@
    "title": "Google Compute Engine Instance Group Manager API",
    "description": "The Google Compute Engine Instance Group Manager API provides groups of homogenous Compute Engine Instances.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/replicapool/v1beta2/rest",
-   "discoveryLink": "./apis/replicapool/v1beta2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1896,7 +1855,6 @@
    "title": "Google Compute Engine Instance Group Updater API",
    "description": "The Google Compute Engine Instance Group Updater API provides services for updating groups of Compute Engine Instances.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/replicapoolupdater/v1beta1/rest",
-   "discoveryLink": "./apis/replicapoolupdater/v1beta1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1915,7 +1873,6 @@
    "title": "Enterprise Apps Reseller API",
    "description": "Lets you create and manage your customers and their subscriptions.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/reseller/v1sandbox/rest",
-   "discoveryLink": "./apis/reseller/v1sandbox/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1934,7 +1891,6 @@
    "title": "Enterprise Apps Reseller API",
    "description": "Lets you create and manage your customers and their subscriptions.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/reseller/v1/rest",
-   "discoveryLink": "./apis/reseller/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1953,7 +1909,6 @@
    "title": "Resource Views API",
    "description": "The Resource View API allows users to create and manage logical sets of Google Compute Engine instances.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/resourceviews/v1beta1/rest",
-   "discoveryLink": "./apis/resourceviews/v1beta1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1972,7 +1927,6 @@
    "title": "Google Compute Engine Instance Groups API",
    "description": "The Resource View API allows users to create and manage logical sets of Google Compute Engine instances.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/resourceviews/v1beta2/rest",
-   "discoveryLink": "./apis/resourceviews/v1beta2/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -1985,13 +1939,30 @@
   },
   {
    "kind": "discovery#directoryItem",
+   "id": "serviceregistry:alpha",
+   "name": "serviceregistry",
+   "version": "alpha",
+   "title": "Google Cloud Service Registry API V1",
+   "description": "The Service Registry API allows users to manage service endpoints in Service Registry and use DNS-based service discovery / name resolution.",
+   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/serviceregistry/alpha/rest",
+   "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+   },
+   "documentationLink": "https://developers.google.com/cloud-serviceregistry/",
+   "labels": [
+    "limited_availability"
+   ],
+   "preferred": true
+  },
+  {
+   "kind": "discovery#directoryItem",
    "id": "siteVerification:v1",
    "name": "siteVerification",
    "version": "v1",
    "title": "Google Site Verification API",
    "description": "Lets you programatically verify ownership of websites or domains with Google.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/siteVerification/v1/rest",
-   "discoveryLink": "./apis/siteVerification/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -2007,7 +1978,6 @@
    "title": "Google Spectrum Database API",
    "description": "API for spectrum-management functions.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/spectrum/v1explorer/rest",
-   "discoveryLink": "./apis/spectrum/v1explorer/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -2023,7 +1993,6 @@
    "title": "Cloud SQL Administration API",
    "description": "API for Cloud SQL database instance management.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/sqladmin/v1beta3/rest",
-   "discoveryLink": "./apis/sqladmin/v1beta3/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -2039,7 +2008,6 @@
    "title": "Cloud SQL Administration API",
    "description": "API for Cloud SQL database instance management.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/sqladmin/v1beta4/rest",
-   "discoveryLink": "./apis/sqladmin/v1beta4/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -2055,7 +2023,6 @@
    "title": "Cloud Storage JSON API",
    "description": "Lets you store and retrieve potentially-large, immutable data objects.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/storage/v1/rest",
-   "discoveryLink": "./apis/storage/v1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/cloud_storage-16.png",
     "x32": "https://www.google.com/images/icons/product/cloud_storage-32.png"
@@ -2074,7 +2041,6 @@
    "title": "Cloud Storage JSON API",
    "description": "Lets you store and retrieve potentially-large, immutable data objects.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/storage/v1beta1/rest",
-   "discoveryLink": "./apis/storage/v1beta1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/cloud_storage-16.png",
     "x32": "https://www.google.com/images/icons/product/cloud_storage-32.png"
@@ -2093,7 +2059,6 @@
    "title": "Cloud Storage JSON API",
    "description": "Lets you store and retrieve potentially-large, immutable data objects.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/storage/v1beta2/rest",
-   "discoveryLink": "./apis/storage/v1beta2/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/cloud_storage-16.png",
     "x32": "https://www.google.com/images/icons/product/cloud_storage-32.png"
@@ -2112,7 +2077,6 @@
    "title": "Tag Manager API",
    "description": "API for accessing Tag Manager accounts and containers.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/tagmanager/v1/rest",
-   "discoveryLink": "./apis/tagmanager/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -2128,7 +2092,6 @@
    "title": "TaskQueue API",
    "description": "Lets you access a Google App Engine Pull Task Queue over REST.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/taskqueue/v1beta1/rest",
-   "discoveryLink": "./apis/taskqueue/v1beta1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/app_engine-16.png",
     "x32": "https://www.google.com/images/icons/product/app_engine-32.png"
@@ -2144,7 +2107,6 @@
    "title": "TaskQueue API",
    "description": "Lets you access a Google App Engine Pull Task Queue over REST.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/taskqueue/v1beta2/rest",
-   "discoveryLink": "./apis/taskqueue/v1beta2/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/app_engine-16.png",
     "x32": "https://www.google.com/images/icons/product/app_engine-32.png"
@@ -2160,7 +2122,6 @@
    "title": "Tasks API",
    "description": "Lets you manage your tasks and task lists.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/tasks/v1/rest",
-   "discoveryLink": "./apis/tasks/v1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/tasks-16.png",
     "x32": "https://www.google.com/images/icons/product/tasks-32.png"
@@ -2176,7 +2137,6 @@
    "title": "Translate API",
    "description": "Lets you translate text from one language to another",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/translate/v2/rest",
-   "discoveryLink": "./apis/translate/v2/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/translate-16.png",
     "x32": "https://www.google.com/images/icons/product/translate-32.png"
@@ -2192,7 +2152,6 @@
    "title": "URL Shortener API",
    "description": "Lets you create, inspect, and manage goo.gl short URLs",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/urlshortener/v1/rest",
-   "discoveryLink": "./apis/urlshortener/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -2202,13 +2161,27 @@
   },
   {
    "kind": "discovery#directoryItem",
+   "id": "vision:v1",
+   "name": "vision",
+   "version": "v1",
+   "title": "Cloud Vision API",
+   "description": "The Google Cloud Vision API allows developers to easily integrate Google vision features, including image labeling, face, logo, and landmark detection, optical character recognition (OCR), and detection of explicit content, into applications.",
+   "discoveryRestUrl": "https://vision.googleapis.com/$discovery/rest",
+   "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+   },
+   "documentationLink": "",
+   "preferred": true
+  },
+  {
+   "kind": "discovery#directoryItem",
    "id": "webfonts:v1",
    "name": "webfonts",
    "version": "v1",
    "title": "Google Fonts Developer API",
    "description": "The Google Fonts Developer API.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/webfonts/v1/rest",
-   "discoveryLink": "./apis/webfonts/v1/rest",
    "icons": {
     "x16": "http://www.google.com/images/icons/feature/font_api-16.png",
     "x32": "http://www.google.com/images/icons/feature/font_api-32.gif"
@@ -2224,7 +2197,6 @@
    "title": "Search Console API",
    "description": "Lets you view Google Search Console data for your verified sites.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/webmasters/v3/rest",
-   "discoveryLink": "./apis/webmasters/v3/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/webmaster_tools-16.png",
     "x32": "https://www.google.com/images/icons/product/webmaster_tools-32.png"
@@ -2240,7 +2212,6 @@
    "title": "YouTube Data API",
    "description": "Programmatic access to YouTube features.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest",
-   "discoveryLink": "./apis/youtube/v3/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/youtube-16.png",
     "x32": "https://www.google.com/images/icons/product/youtube-32.png"
@@ -2256,7 +2227,6 @@
    "title": "YouTube Analytics API",
    "description": "Retrieve your YouTube Analytics reports.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/youtubeAnalytics/v1/rest",
-   "discoveryLink": "./apis/youtubeAnalytics/v1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/youtube-16.png",
     "x32": "https://www.google.com/images/icons/product/youtube-32.png"
@@ -2272,7 +2242,6 @@
    "title": "YouTube Analytics API",
    "description": "Retrieve your YouTube Analytics reports.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/youtubeAnalytics/v1beta1/rest",
-   "discoveryLink": "./apis/youtubeAnalytics/v1beta1/rest",
    "icons": {
     "x16": "https://www.google.com/images/icons/product/youtube-16.png",
     "x32": "https://www.google.com/images/icons/product/youtube-32.png"
diff --git a/appengine/v1beta4/appengine-api.json b/appengine/v1beta4/appengine-api.json
index 5b844be..34076c4 100644
--- a/appengine/v1beta4/appengine-api.json
+++ b/appengine/v1beta4/appengine-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/vvUD0_smJPc-NyKG_6O2ek_mUZ0\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/q1k107w8H1_Vpbv_soyd95U2Uhs\"",
  "discoveryVersion": "v1",
  "id": "appengine:v1beta4",
  "name": "appengine",
  "version": "v1beta4",
- "revision": "20151123",
+ "revision": "20160121",
  "title": "Google App Engine Admin API",
  "description": "The Google App Engine Admin API enables developers to provision and manage their App Engine applications.",
  "ownerDomain": "google.com",
@@ -137,6 +137,10 @@
     "codeBucket": {
      "type": "string",
      "description": "A Google Cloud Storage bucket which can be used for storing files associated with an application. This bucket is associated with the application and can be used by the gcloud deployment commands. @OutputOnly"
+    },
+    "defaultBucket": {
+     "type": "string",
+     "description": "A Google Cloud Storage bucket which can be used by the application to store content. @OutputOnly"
     }
    }
   },
@@ -1079,6 +1083,33 @@
      "description": "API method name that initiated the operation. Example: \"google.appengine.v1beta4.Version.CreateVersion\". @OutputOnly"
     }
    }
+  },
+  "OperationMetadataV1Beta5": {
+   "id": "OperationMetadataV1Beta5",
+   "type": "object",
+   "description": "Metadata for the given google.longrunning.Operation.",
+   "properties": {
+    "method": {
+     "type": "string",
+     "description": "API method name that initiated the operation. Example: \"google.appengine.v1beta5.Version.CreateVersion\". @OutputOnly"
+    },
+    "insertTime": {
+     "type": "string",
+     "description": "Timestamp that this operation was received. @OutputOnly"
+    },
+    "endTime": {
+     "type": "string",
+     "description": "Timestamp that this operation was completed. (Not present if the operation is still in progress.) @OutputOnly"
+    },
+    "user": {
+     "type": "string",
+     "description": "The user who requested this operation. @OutputOnly"
+    },
+    "target": {
+     "type": "string",
+     "description": "Resource that this operation is acting on. Example: \"apps/myapp/services/default\". @OutputOnly"
+    }
+   }
   }
  },
  "resources": {
@@ -1098,7 +1129,7 @@
       },
       "ensureResourcesExist": {
        "type": "boolean",
-       "description": "Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the `GET` operation. If specified and any resources cloud not be created, the request will fail with an error code.",
+       "description": "Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the `GET` operation. If specified and any resources could not be created, the request will fail with an error code. Additionally, this parameter can cause the request to take longer to complete.",
        "location": "query"
       }
      },
diff --git a/appengine/v1beta4/appengine-gen.go b/appengine/v1beta4/appengine-gen.go
index 6f05afc..57f1153 100644
--- a/appengine/v1beta4/appengine-gen.go
+++ b/appengine/v1beta4/appengine-gen.go
@@ -204,6 +204,10 @@
 	// deployment commands. @OutputOnly
 	CodeBucket string `json:"codeBucket,omitempty"`
 
+	// DefaultBucket: A Google Cloud Storage bucket which can be used by the
+	// application to store content. @OutputOnly
+	DefaultBucket string `json:"defaultBucket,omitempty"`
+
 	// DispatchRules: HTTP path dispatch rules for requests to the app that
 	// do not explicitly target a module or version. The rules are
 	// order-dependent.
@@ -892,6 +896,42 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
+// OperationMetadataV1Beta5: Metadata for the given
+// google.longrunning.Operation.
+type OperationMetadataV1Beta5 struct {
+	// EndTime: Timestamp that this operation was completed. (Not present if
+	// the operation is still in progress.) @OutputOnly
+	EndTime string `json:"endTime,omitempty"`
+
+	// InsertTime: Timestamp that this operation was received. @OutputOnly
+	InsertTime string `json:"insertTime,omitempty"`
+
+	// Method: API method name that initiated the operation. Example:
+	// "google.appengine.v1beta5.Version.CreateVersion". @OutputOnly
+	Method string `json:"method,omitempty"`
+
+	// Target: Resource that this operation is acting on. Example:
+	// "apps/myapp/services/default". @OutputOnly
+	Target string `json:"target,omitempty"`
+
+	// User: The user who requested this operation. @OutputOnly
+	User string `json:"user,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "EndTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OperationMetadataV1Beta5) MarshalJSON() ([]byte, error) {
+	type noMethod OperationMetadataV1Beta5
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
 // RequestUtilization: Target scaling by request utilization (for VM
 // runtimes only).
 type RequestUtilization struct {
@@ -1527,8 +1567,9 @@
 // "ensureResourcesExist": Certain resources associated with an
 // application are created on-demand. Controls whether these resources
 // should be created when performing the `GET` operation. If specified
-// and any resources cloud not be created, the request will fail with an
-// error code.
+// and any resources could not be created, the request will fail with an
+// error code. Additionally, this parameter can cause the request to
+// take longer to complete.
 func (c *AppsGetCall) EnsureResourcesExist(ensureResourcesExist bool) *AppsGetCall {
 	c.urlParams_.Set("ensureResourcesExist", fmt.Sprint(ensureResourcesExist))
 	return c
@@ -1630,7 +1671,7 @@
 	//       "type": "string"
 	//     },
 	//     "ensureResourcesExist": {
-	//       "description": "Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the `GET` operation. If specified and any resources cloud not be created, the request will fail with an error code.",
+	//       "description": "Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the `GET` operation. If specified and any resources could not be created, the request will fail with an error code. Additionally, this parameter can cause the request to take longer to complete.",
 	//       "location": "query",
 	//       "type": "boolean"
 	//     }
diff --git a/appengine/v1beta5/appengine-api.json b/appengine/v1beta5/appengine-api.json
new file mode 100644
index 0000000..a860d32
--- /dev/null
+++ b/appengine/v1beta5/appengine-api.json
@@ -0,0 +1,1504 @@
+{
+ "kind": "discovery#restDescription",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/zAfXnU96F6G6dh1E_ZlK9dswqE4\"",
+ "discoveryVersion": "v1",
+ "id": "appengine:v1beta5",
+ "name": "appengine",
+ "version": "v1beta5",
+ "revision": "20160121",
+ "title": "Google App Engine Admin API",
+ "description": "The Google App Engine Admin API enables developers to provision and manage their App Engine applications.",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "icons": {
+  "x16": "http://www.google.com/images/icons/product/search-16.gif",
+  "x32": "http://www.google.com/images/icons/product/search-32.gif"
+ },
+ "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/",
+ "protocol": "rest",
+ "baseUrl": "https://appengine.googleapis.com/",
+ "basePath": "",
+ "rootUrl": "https://appengine.googleapis.com/",
+ "servicePath": "",
+ "batchPath": "batch",
+ "parameters": {
+  "access_token": {
+   "type": "string",
+   "description": "OAuth access token.",
+   "location": "query"
+  },
+  "alt": {
+   "type": "string",
+   "description": "Data format for response.",
+   "default": "json",
+   "enumDescriptions": [
+    "Responses with Content-Type of application/json",
+    "Media download with context-dependent Content-Type",
+    "Responses with Content-Type of application/x-protobuf"
+   ],
+   "location": "query"
+  },
+  "bearer_token": {
+   "type": "string",
+   "description": "OAuth bearer token.",
+   "location": "query"
+  },
+  "callback": {
+   "type": "string",
+   "description": "JSONP",
+   "location": "query"
+  },
+  "fields": {
+   "type": "string",
+   "description": "Selector specifying which fields to include in a partial response.",
+   "location": "query"
+  },
+  "key": {
+   "type": "string",
+   "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+   "location": "query"
+  },
+  "oauth_token": {
+   "type": "string",
+   "description": "OAuth 2.0 token for the current user.",
+   "location": "query"
+  },
+  "pp": {
+   "type": "boolean",
+   "description": "Pretty-print response.",
+   "default": "true",
+   "location": "query"
+  },
+  "prettyPrint": {
+   "type": "boolean",
+   "description": "Returns response with indentations and line breaks.",
+   "default": "true",
+   "location": "query"
+  },
+  "quotaUser": {
+   "type": "string",
+   "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+   "location": "query"
+  },
+  "upload_protocol": {
+   "type": "string",
+   "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+   "location": "query"
+  },
+  "uploadType": {
+   "type": "string",
+   "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+   "location": "query"
+  },
+  "$.xgafv": {
+   "type": "string",
+   "description": "V1 error format.",
+   "enumDescriptions": [
+    "v1 error format",
+    "v2 error format"
+   ],
+   "location": "query"
+  }
+ },
+ "auth": {
+  "oauth2": {
+   "scopes": {
+    "https://www.googleapis.com/auth/cloud-platform": {
+     "description": "View and manage your data across Google Cloud Platform services"
+    }
+   }
+  }
+ },
+ "schemas": {
+  "Operation": {
+   "id": "Operation",
+   "type": "object",
+   "description": "This resource represents a long-running operation that is the result of a network API call.",
+   "properties": {
+    "name": {
+     "type": "string",
+     "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping above, the `name` should have the format of `operations/some/unique/name`."
+    },
+    "metadata": {
+     "type": "object",
+     "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+     "additionalProperties": {
+      "type": "any",
+      "description": "Properties of the object. Contains field @ype with type URL."
+     }
+    },
+    "done": {
+     "type": "boolean",
+     "description": "If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available."
+    },
+    "error": {
+     "$ref": "Status",
+     "description": "The error result of the operation in case of failure."
+    },
+    "response": {
+     "type": "object",
+     "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+     "additionalProperties": {
+      "type": "any",
+      "description": "Properties of the object. Contains field @ype with type URL."
+     }
+    }
+   }
+  },
+  "Status": {
+   "id": "Status",
+   "type": "object",
+   "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons.",
+   "properties": {
+    "code": {
+     "type": "integer",
+     "description": "The status code, which should be an enum value of google.rpc.Code.",
+     "format": "int32"
+    },
+    "message": {
+     "type": "string",
+     "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
+    },
+    "details": {
+     "type": "array",
+     "description": "A list of messages that carry the error details. There will be a common set of message types for APIs to use.",
+     "items": {
+      "type": "object",
+      "additionalProperties": {
+       "type": "any",
+       "description": "Properties of the object. Contains field @ype with type URL."
+      }
+     }
+    }
+   }
+  },
+  "ListOperationsResponse": {
+   "id": "ListOperationsResponse",
+   "type": "object",
+   "description": "The response message for Operations.ListOperations.",
+   "properties": {
+    "operations": {
+     "type": "array",
+     "description": "A list of operations that matches the specified filter in the request.",
+     "items": {
+      "$ref": "Operation"
+     }
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "The standard List next-page token."
+    }
+   }
+  },
+  "Application": {
+   "id": "Application",
+   "type": "object",
+   "description": "An Application contains the top-level configuration of an App Engine application.",
+   "properties": {
+    "name": {
+     "type": "string",
+     "description": "The full path to the application in the API. Example: \"apps/myapp\". @OutputOnly"
+    },
+    "id": {
+     "type": "string",
+     "description": "The relative name/path of the application. Example: \"myapp\". @OutputOnly"
+    },
+    "dispatchRules": {
+     "type": "array",
+     "description": "HTTP path dispatch rules for requests to the app that do not explicitly target a service or version. The rules are order-dependent.",
+     "items": {
+      "$ref": "UrlDispatchRule"
+     }
+    },
+    "location": {
+     "type": "string",
+     "description": "The location from which the application will be run. Choices are \"us\" for United States and \"eu\" for European Union. Application instances will run out of data centers in the chosen location and all of the application's End User Content will be stored at rest in the chosen location. The default is \"us\"."
+    },
+    "codeBucket": {
+     "type": "string",
+     "description": "A Google Cloud Storage bucket which can be used for storing files associated with an application. This bucket is associated with the application and can be used by the gcloud deployment commands. @OutputOnly"
+    },
+    "defaultBucket": {
+     "type": "string",
+     "description": "A Google Cloud Storage bucket which can be used by the application to store content. @OutputOnly"
+    }
+   }
+  },
+  "UrlDispatchRule": {
+   "id": "UrlDispatchRule",
+   "type": "object",
+   "description": "Rules to match an HTTP request and dispatch that request to a service.",
+   "properties": {
+    "domain": {
+     "type": "string",
+     "description": "The domain name to match on. Supports '*' (glob) wildcarding on the left-hand side of a '.'. If empty, all domains will be matched (the same as '*')."
+    },
+    "path": {
+     "type": "string",
+     "description": "The pathname within the host. This must start with a '/'. A single '*' (glob) can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters."
+    },
+    "service": {
+     "type": "string",
+     "description": "The resource id of a Service in this application that should service the matched request. The Service must already exist. Example: \"default\"."
+    }
+   }
+  },
+  "Version": {
+   "id": "Version",
+   "type": "object",
+   "description": "A Version is a specific set of source code and configuration files deployed to a service.",
+   "properties": {
+    "name": {
+     "type": "string",
+     "description": "The full path to the Version resource in the API. Example: \"apps/myapp/services/default/versions/v1\". @OutputOnly"
+    },
+    "id": {
+     "type": "string",
+     "description": "The relative name/path of the Version within the service. Example: \"v1\". Version specifiers can contain lowercase letters, digits, and hyphens. It cannot begin with the prefix `ah-` and the names `default` and `latest` are reserved and cannot be used."
+    },
+    "automaticScaling": {
+     "$ref": "AutomaticScaling",
+     "description": "Automatic scaling is the scaling policy that App Engine has used since its inception. It is based on request rate, response latencies, and other application metrics."
+    },
+    "basicScaling": {
+     "$ref": "BasicScaling",
+     "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity."
+    },
+    "manualScaling": {
+     "$ref": "ManualScaling",
+     "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time."
+    },
+    "inboundServices": {
+     "type": "array",
+     "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.",
+     "enumDescriptions": [
+      "Not specified.",
+      "Allows an application to receive mail.",
+      "Allows an application receive email bound notifications.",
+      "Allows an application to receive error stanzas.",
+      "Allows an application to receive instant messages.",
+      "Allows an application to receive user subscription POSTs.",
+      "Allows an application to receive a user's chat presence.",
+      "Registers an application for notifications when a client connects or disconnects from a channel.",
+      "Enables warmup requests."
+     ],
+     "items": {
+      "type": "string",
+      "enum": [
+       "INBOUND_SERVICE_UNSPECIFIED",
+       "INBOUND_SERVICE_MAIL",
+       "INBOUND_SERVICE_MAIL_BOUNCE",
+       "INBOUND_SERVICE_XMPP_ERROR",
+       "INBOUND_SERVICE_XMPP_MESSAGE",
+       "INBOUND_SERVICE_XMPP_SUBSCRIBE",
+       "INBOUND_SERVICE_XMPP_PRESENCE",
+       "INBOUND_SERVICE_CHANNEL_PRESENCE",
+       "INBOUND_SERVICE_WARMUP"
+      ]
+     }
+    },
+    "instanceClass": {
+     "type": "string",
+     "description": "The instance class to use to run this app. Valid values for AutomaticScaling are `[F1, F2, F4, F4_1G]`. Valid values for ManualScaling and BasicScaling are `[B1, B2, B4, B8, B4_1G]`. Default: \"F1\" for AutomaticScaling, \"B1\" for ManualScaling and BasicScaling"
+    },
+    "network": {
+     "$ref": "Network",
+     "description": "Used to specify extra network settings (for VM runtimes only)."
+    },
+    "resources": {
+     "$ref": "Resources",
+     "description": "Used to specify how many machine resources an app version needs (for VM runtimes only)."
+    },
+    "runtime": {
+     "type": "string",
+     "description": "The desired runtime. Values can include python27, java7, go, etc."
+    },
+    "threadsafe": {
+     "type": "boolean",
+     "description": "If true, multiple requests can be dispatched to the app at once."
+    },
+    "vm": {
+     "type": "boolean",
+     "description": "Whether to deploy this app in a VM container."
+    },
+    "betaSettings": {
+     "type": "object",
+     "description": "Beta settings supplied to the application via metadata.",
+     "additionalProperties": {
+      "type": "string"
+     }
+    },
+    "env": {
+     "type": "string",
+     "description": "The App Engine execution environment to use for this version. Default: \"1\""
+    },
+    "servingStatus": {
+     "type": "string",
+     "description": "The current serving status of this version. Only `SERVING` versions will have instances created or billed for. If this field is unset when a version is created, `SERVING` status will be assumed. It is an error to explicitly set this field to `SERVING_STATUS_UNSPECIFIED`.",
+     "enum": [
+      "SERVING_STATUS_UNSPECIFIED",
+      "SERVING",
+      "STOPPED"
+     ]
+    },
+    "deployer": {
+     "type": "string",
+     "description": "The email address of the user who created this version. @OutputOnly"
+    },
+    "creationTime": {
+     "type": "string",
+     "description": "Creation time of this version. This will be between the start and end times of the operation that creates this version. @OutputOnly"
+    },
+    "diskUsageBytes": {
+     "type": "string",
+     "description": "Total size of version files hosted on App Engine disk in bytes. @OutputOnly",
+     "format": "int64"
+    },
+    "handlers": {
+     "type": "array",
+     "description": "An ordered list of URL Matching patterns that should be applied to incoming requests. The first matching URL consumes the request, and subsequent handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.",
+     "items": {
+      "$ref": "UrlMap"
+     }
+    },
+    "errorHandlers": {
+     "type": "array",
+     "description": "Custom static error pages instead of these generic error pages, (limit 10 KB/page) Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.",
+     "items": {
+      "$ref": "ErrorHandler"
+     }
+    },
+    "libraries": {
+     "type": "array",
+     "description": "Configuration for Python runtime third-party libraries required by the application. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.",
+     "items": {
+      "$ref": "Library"
+     }
+    },
+    "apiConfig": {
+     "$ref": "ApiConfigHandler",
+     "description": "Serving configuration for Google Cloud Endpoints. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable."
+    },
+    "envVariables": {
+     "type": "object",
+     "description": "Environment variables made available to the application. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.",
+     "additionalProperties": {
+      "type": "string"
+     }
+    },
+    "defaultExpiration": {
+     "type": "string",
+     "description": "The length of time a static file served by a static file handler ought to be cached by web proxies and browsers, if the handler does not specify its own expiration. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable."
+    },
+    "healthCheck": {
+     "$ref": "HealthCheck",
+     "description": "Configure health checking for the VM instances. Unhealthy VM instances will be stopped and replaced with new instances. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable."
+    },
+    "nobuildFilesRegex": {
+     "type": "string",
+     "description": "Go only. Files that match this pattern will not be built into the app. May only be set on create requests."
+    },
+    "deployment": {
+     "$ref": "Deployment",
+     "description": "Code and application artifacts that make up this version. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable."
+    }
+   }
+  },
+  "AutomaticScaling": {
+   "id": "AutomaticScaling",
+   "type": "object",
+   "description": "Automatic scaling is the scaling policy that App Engine has used since its inception. It is based on request rate, response latencies, and other application metrics.",
+   "properties": {
+    "coolDownPeriod": {
+     "type": "string",
+     "description": "The amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Applies only to the VM runtime."
+    },
+    "cpuUtilization": {
+     "$ref": "CpuUtilization",
+     "description": "Target scaling by CPU usage."
+    },
+    "maxConcurrentRequests": {
+     "type": "integer",
+     "description": "The number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Default value is chosen based on the runtime.",
+     "format": "int32"
+    },
+    "maxIdleInstances": {
+     "type": "integer",
+     "description": "The maximum number of idle instances that App Engine should maintain for this version.",
+     "format": "int32"
+    },
+    "maxTotalInstances": {
+     "type": "integer",
+     "description": "Max number of instances that App Engine should start to handle requests.",
+     "format": "int32"
+    },
+    "maxPendingLatency": {
+     "type": "string",
+     "description": "The maximum amount of time that App Engine should allow a request to wait in the pending queue before starting a new instance to handle it."
+    },
+    "minIdleInstances": {
+     "type": "integer",
+     "description": "The minimum number of idle instances that App Engine should maintain for this version. Only applies to the default version of a service, since other versions are not expected to receive significant traffic.",
+     "format": "int32"
+    },
+    "minTotalInstances": {
+     "type": "integer",
+     "description": "Minimum number of instances that App Engine should maintain.",
+     "format": "int32"
+    },
+    "minPendingLatency": {
+     "type": "string",
+     "description": "The minimum amount of time that App Engine should allow a request to wait in the pending queue before starting a new instance to handle it."
+    },
+    "requestUtilization": {
+     "$ref": "RequestUtilization",
+     "description": "Target scaling by request utilization."
+    },
+    "diskUtilization": {
+     "$ref": "DiskUtilization",
+     "description": "Target scaling by disk usage."
+    },
+    "networkUtilization": {
+     "$ref": "NetworkUtilization",
+     "description": "Target scaling by network usage."
+    }
+   }
+  },
+  "CpuUtilization": {
+   "id": "CpuUtilization",
+   "type": "object",
+   "description": "Target scaling by CPU usage.",
+   "properties": {
+    "aggregationWindowLength": {
+     "type": "string",
+     "description": "The period of time over which CPU utilization is calculated."
+    },
+    "targetUtilization": {
+     "type": "number",
+     "description": "Target (0-1) CPU utilization ratio to maintain when scaling.",
+     "format": "double"
+    }
+   }
+  },
+  "RequestUtilization": {
+   "id": "RequestUtilization",
+   "type": "object",
+   "description": "Target scaling by request utilization (for VM runtimes only).",
+   "properties": {
+    "targetRequestCountPerSec": {
+     "type": "integer",
+     "description": "Target requests per second.",
+     "format": "int32"
+    },
+    "targetConcurrentRequests": {
+     "type": "integer",
+     "description": "Target number of concurrent requests.",
+     "format": "int32"
+    }
+   }
+  },
+  "DiskUtilization": {
+   "id": "DiskUtilization",
+   "type": "object",
+   "description": "Target scaling by disk usage (for VM runtimes only).",
+   "properties": {
+    "targetWriteBytesPerSec": {
+     "type": "integer",
+     "description": "Target bytes per second written.",
+     "format": "int32"
+    },
+    "targetWriteOpsPerSec": {
+     "type": "integer",
+     "description": "Target ops per second written.",
+     "format": "int32"
+    },
+    "targetReadBytesPerSec": {
+     "type": "integer",
+     "description": "Target bytes per second read.",
+     "format": "int32"
+    },
+    "targetReadOpsPerSec": {
+     "type": "integer",
+     "description": "Target ops per second read.",
+     "format": "int32"
+    }
+   }
+  },
+  "NetworkUtilization": {
+   "id": "NetworkUtilization",
+   "type": "object",
+   "description": "Target scaling by network usage (for VM runtimes only).",
+   "properties": {
+    "targetSentBytesPerSec": {
+     "type": "integer",
+     "description": "Target bytes per second sent.",
+     "format": "int32"
+    },
+    "targetSentPacketsPerSec": {
+     "type": "integer",
+     "description": "Target packets per second sent.",
+     "format": "int32"
+    },
+    "targetReceivedBytesPerSec": {
+     "type": "integer",
+     "description": "Target bytes per second received.",
+     "format": "int32"
+    },
+    "targetReceivedPacketsPerSec": {
+     "type": "integer",
+     "description": "Target packets per second received.",
+     "format": "int32"
+    }
+   }
+  },
+  "BasicScaling": {
+   "id": "BasicScaling",
+   "type": "object",
+   "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.",
+   "properties": {
+    "idleTimeout": {
+     "type": "string",
+     "description": "The instance will be shut down this amount of time after receiving its last request."
+    },
+    "maxInstances": {
+     "type": "integer",
+     "description": "The maximum number of instances for App Engine to create for this version.",
+     "format": "int32"
+    }
+   }
+  },
+  "ManualScaling": {
+   "id": "ManualScaling",
+   "type": "object",
+   "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.",
+   "properties": {
+    "instances": {
+     "type": "integer",
+     "description": "The number of instances to assign to the service at the start. This number can later be altered by using the [Modules API](https://cloud.google.com/appengine/docs/python/modules/functions) `set_num_instances()` function.",
+     "format": "int32"
+    }
+   }
+  },
+  "Network": {
+   "id": "Network",
+   "type": "object",
+   "description": "Used to specify extra network settings (for VM runtimes only).",
+   "properties": {
+    "forwardedPorts": {
+     "type": "array",
+     "description": "A list of ports (or port pairs) to forward from the VM into the app container.",
+     "items": {
+      "type": "string"
+     }
+    },
+    "instanceTag": {
+     "type": "string",
+     "description": "A tag to apply to the VM instance during creation."
+    },
+    "name": {
+     "type": "string",
+     "description": "The Google Compute Engine network where the VMs will be created. If not specified, or empty, the network named \"default\" will be used. (The short name should be specified, not the resource path.)"
+    }
+   }
+  },
+  "Resources": {
+   "id": "Resources",
+   "type": "object",
+   "description": "Used to specify how many machine resources an app version needs.",
+   "properties": {
+    "cpu": {
+     "type": "number",
+     "description": "How many CPU cores an app version needs.",
+     "format": "double"
+    },
+    "diskGb": {
+     "type": "number",
+     "description": "How much disk size, in GB, an app version needs.",
+     "format": "double"
+    },
+    "memoryGb": {
+     "type": "number",
+     "description": "How much memory, in GB, an app version needs.",
+     "format": "double"
+    }
+   }
+  },
+  "UrlMap": {
+   "id": "UrlMap",
+   "type": "object",
+   "description": "A URL pattern and description of how it should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the code, such as images, CSS or JavaScript.",
+   "properties": {
+    "urlRegex": {
+     "type": "string",
+     "description": "A URL prefix. This value uses regular expression syntax (and so regexp special characters must be escaped), but it should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path. This is always required."
+    },
+    "staticFiles": {
+     "$ref": "StaticFilesHandler",
+     "description": "Returns the contents of a file, such as an image, as the response."
+    },
+    "script": {
+     "$ref": "ScriptHandler",
+     "description": "Executes a script to handle the request that matches the URL pattern."
+    },
+    "apiEndpoint": {
+     "$ref": "ApiEndpointHandler",
+     "description": "Use API Endpoints to handle requests."
+    },
+    "securityLevel": {
+     "type": "string",
+     "description": "Configures whether security (HTTPS) should be enforced for this URL.",
+     "enum": [
+      "SECURE_UNSPECIFIED",
+      "SECURE_DEFAULT",
+      "SECURE_NEVER",
+      "SECURE_OPTIONAL",
+      "SECURE_ALWAYS"
+     ]
+    },
+    "login": {
+     "type": "string",
+     "description": "What level of login is required to access this resource.",
+     "enum": [
+      "LOGIN_UNSPECIFIED",
+      "LOGIN_OPTIONAL",
+      "LOGIN_ADMIN",
+      "LOGIN_REQUIRED"
+     ]
+    },
+    "authFailAction": {
+     "type": "string",
+     "description": "For users not logged in, how to handle access to resources with required login. Defaults to \"redirect\".",
+     "enum": [
+      "AUTH_FAIL_ACTION_UNSPECIFIED",
+      "AUTH_FAIL_ACTION_REDIRECT",
+      "AUTH_FAIL_ACTION_UNAUTHORIZED"
+     ]
+    },
+    "redirectHttpResponseCode": {
+     "type": "string",
+     "description": "`30x` code to use when performing redirects for the `secure` field. A `302` is used by default.",
+     "enum": [
+      "REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED",
+      "REDIRECT_HTTP_RESPONSE_CODE_301",
+      "REDIRECT_HTTP_RESPONSE_CODE_302",
+      "REDIRECT_HTTP_RESPONSE_CODE_303",
+      "REDIRECT_HTTP_RESPONSE_CODE_307"
+     ]
+    }
+   }
+  },
+  "StaticFilesHandler": {
+   "id": "StaticFilesHandler",
+   "type": "object",
+   "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.",
+   "properties": {
+    "path": {
+     "type": "string",
+     "description": "The path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern."
+    },
+    "uploadPathRegex": {
+     "type": "string",
+     "description": "A regular expression that matches the file paths for all files that will be referenced by this handler."
+    },
+    "httpHeaders": {
+     "type": "object",
+     "description": "HTTP headers to use for all responses from these URLs.",
+     "additionalProperties": {
+      "type": "string"
+     }
+    },
+    "mimeType": {
+     "type": "string",
+     "description": "If specified, all files served by this handler will be served using the specified MIME type. If not specified, the MIME type for a file will be derived from the file's filename extension."
+    },
+    "expiration": {
+     "type": "string",
+     "description": "The length of time a static file served by this handler ought to be cached by web proxies and browsers."
+    },
+    "requireMatchingFile": {
+     "type": "boolean",
+     "description": "If true, this UrlMap entry does not match the request unless the file referenced by the handler also exists. If no such file exists, processing will continue with the next UrlMap that matches the requested URL."
+    },
+    "applicationReadable": {
+     "type": "boolean",
+     "description": "By default, files declared in static file handlers are uploaded as static data and are only served to end users, they cannot be read by an application. If this field is set to true, the files are also uploaded as code data so your application can read them. Both uploads are charged against your code and static data storage resource quotas."
+    }
+   }
+  },
+  "ScriptHandler": {
+   "id": "ScriptHandler",
+   "type": "object",
+   "description": "Executes a script to handle the request that matches the URL pattern.",
+   "properties": {
+    "scriptPath": {
+     "type": "string",
+     "description": "Specifies the path to the script from the application root directory."
+    }
+   }
+  },
+  "ApiEndpointHandler": {
+   "id": "ApiEndpointHandler",
+   "type": "object",
+   "description": "Use Google Cloud Endpoints to handle requests.",
+   "properties": {
+    "scriptPath": {
+     "type": "string",
+     "description": "Specifies the path to the script from the application root directory."
+    }
+   }
+  },
+  "ErrorHandler": {
+   "id": "ErrorHandler",
+   "type": "object",
+   "description": "A custom static error page to be served when an error occurs.",
+   "properties": {
+    "errorCode": {
+     "type": "string",
+     "description": "The error condition this handler applies to.",
+     "enum": [
+      "ERROR_CODE_UNSPECIFIED",
+      "ERROR_CODE_DEFAULT",
+      "ERROR_CODE_OVER_QUOTA",
+      "ERROR_CODE_DOS_API_DENIAL",
+      "ERROR_CODE_TIMEOUT"
+     ]
+    },
+    "staticFile": {
+     "type": "string",
+     "description": "Static file content to be served for this error."
+    },
+    "mimeType": {
+     "type": "string",
+     "description": "MIME type of file. If unspecified, \"text/html\" is assumed."
+    }
+   }
+  },
+  "Library": {
+   "id": "Library",
+   "type": "object",
+   "description": "A Python runtime third-party library required by the application.",
+   "properties": {
+    "name": {
+     "type": "string",
+     "description": "The name of the library, e.g. \"PIL\" or \"django\"."
+    },
+    "version": {
+     "type": "string",
+     "description": "The version of the library to select, or \"latest\"."
+    }
+   }
+  },
+  "ApiConfigHandler": {
+   "id": "ApiConfigHandler",
+   "type": "object",
+   "description": "API Serving configuration for Cloud Endpoints.",
+   "properties": {
+    "authFailAction": {
+     "type": "string",
+     "description": "For users not logged in, how to handle access to resources with required login. Defaults to \"redirect\".",
+     "enum": [
+      "AUTH_FAIL_ACTION_UNSPECIFIED",
+      "AUTH_FAIL_ACTION_REDIRECT",
+      "AUTH_FAIL_ACTION_UNAUTHORIZED"
+     ]
+    },
+    "login": {
+     "type": "string",
+     "description": "What level of login is required to access this resource. Default is \"optional\".",
+     "enum": [
+      "LOGIN_UNSPECIFIED",
+      "LOGIN_OPTIONAL",
+      "LOGIN_ADMIN",
+      "LOGIN_REQUIRED"
+     ]
+    },
+    "script": {
+     "type": "string",
+     "description": "Specifies the path to the script from the application root directory."
+    },
+    "securityLevel": {
+     "type": "string",
+     "description": "Configures whether security (HTTPS) should be enforced for this URL.",
+     "enum": [
+      "SECURE_UNSPECIFIED",
+      "SECURE_DEFAULT",
+      "SECURE_NEVER",
+      "SECURE_OPTIONAL",
+      "SECURE_ALWAYS"
+     ]
+    },
+    "url": {
+     "type": "string",
+     "description": "URL to serve the endpoint at."
+    }
+   }
+  },
+  "HealthCheck": {
+   "id": "HealthCheck",
+   "type": "object",
+   "description": "Configure health checking for the VM instances. Unhealthy VM instances will be killed and replaced with new instances.",
+   "properties": {
+    "disableHealthCheck": {
+     "type": "boolean",
+     "description": "Whether to explicitly disable health checks for this instance."
+    },
+    "host": {
+     "type": "string",
+     "description": "The host header to send when performing an HTTP health check (e.g. myapp.appspot.com)"
+    },
+    "healthyThreshold": {
+     "type": "integer",
+     "description": "The number of consecutive successful health checks before receiving traffic.",
+     "format": "uint32"
+    },
+    "unhealthyThreshold": {
+     "type": "integer",
+     "description": "The number of consecutive failed health checks before removing traffic.",
+     "format": "uint32"
+    },
+    "restartThreshold": {
+     "type": "integer",
+     "description": "The number of consecutive failed health checks before an instance is restarted.",
+     "format": "uint32"
+    },
+    "checkInterval": {
+     "type": "string",
+     "description": "The interval between health checks."
+    },
+    "timeout": {
+     "type": "string",
+     "description": "The amount of time before the health check is considered failed."
+    }
+   }
+  },
+  "Deployment": {
+   "id": "Deployment",
+   "type": "object",
+   "description": "Code and application artifacts used to deploy a version to App Engine.",
+   "properties": {
+    "files": {
+     "type": "object",
+     "description": "A manifest of files stored in Google Cloud Storage which should be included as part of this application. All files must be readable using the credentials supplied with this call.",
+     "additionalProperties": {
+      "$ref": "FileInfo"
+     }
+    },
+    "container": {
+     "$ref": "ContainerInfo",
+     "description": "If supplied, a docker (container) image which should be used to start the application. Only applicable to the 'vm' runtime."
+    },
+    "sourceReferences": {
+     "type": "array",
+     "description": "The origin of the source code for this deployment. There can be more than one source reference per Version if source code is distributed among multiple repositories.",
+     "items": {
+      "$ref": "SourceReference"
+     }
+    }
+   }
+  },
+  "FileInfo": {
+   "id": "FileInfo",
+   "type": "object",
+   "description": "A single source file which is part of the application to be deployed.",
+   "properties": {
+    "sourceUrl": {
+     "type": "string",
+     "description": "The URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\\/\\'."
+    },
+    "sha1Sum": {
+     "type": "string",
+     "description": "The SHA1 (160 bits) hash of the file in hex."
+    },
+    "mimeType": {
+     "type": "string",
+     "description": "The MIME type of the file; if unspecified, the value from Google Cloud Storage will be used."
+    }
+   }
+  },
+  "ContainerInfo": {
+   "id": "ContainerInfo",
+   "type": "object",
+   "description": "A Docker (container) image which should be used to start the application.",
+   "properties": {
+    "image": {
+     "type": "string",
+     "description": "Reference to a hosted container image. Must be a URI to a resource in a Docker repository. Must be fully qualified, including tag or digest. e.g. gcr.io/my-project/image:tag or gcr.io/my-project/image@digest"
+    }
+   }
+  },
+  "SourceReference": {
+   "id": "SourceReference",
+   "type": "object",
+   "description": "A reference to a particular snapshot of the source tree used to build and deploy the application.",
+   "properties": {
+    "repository": {
+     "type": "string",
+     "description": "Optional. A URI string identifying the repository. Example: \"https://source.developers.google.com/p/app-123/r/default\""
+    },
+    "revisionId": {
+     "type": "string",
+     "description": "The canonical (and persistent) identifier of the deployed revision, i.e. any kind of aliases including tags or branch names are not allowed. Example (git): \"2198322f89e0bb2e25021667c2ed489d1fd34e6b\""
+    }
+   }
+  },
+  "ListVersionsResponse": {
+   "id": "ListVersionsResponse",
+   "type": "object",
+   "description": "Response message for `Versions.ListVersions`.",
+   "properties": {
+    "versions": {
+     "type": "array",
+     "description": "The versions belonging to the requested application service.",
+     "items": {
+      "$ref": "Version"
+     }
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Continuation token for fetching the next page of results."
+    }
+   }
+  },
+  "Service": {
+   "id": "Service",
+   "type": "object",
+   "description": "A service is a logical component of an application that can share state and communicate in a secure fashion with other services. For example, an application that handles customer requests might include separate services to handle other tasks such as API requests from mobile devices or backend data analysis. Each service has a collection of versions that define a specific set of code used to implement the functionality of that service.",
+   "properties": {
+    "name": {
+     "type": "string",
+     "description": "The full path to the Service resource in the API. Example: \"apps/myapp/services/default\" @OutputOnly"
+    },
+    "id": {
+     "type": "string",
+     "description": "The relative name/path of the service within the application. Example: \"default\" @OutputOnly"
+    },
+    "split": {
+     "$ref": "TrafficSplit",
+     "description": "A mapping that defines fractional HTTP traffic diversion to different versions within the service."
+    }
+   }
+  },
+  "TrafficSplit": {
+   "id": "TrafficSplit",
+   "type": "object",
+   "description": "Configuration for traffic splitting for versions within a single service. Traffic splitting allows traffic directed to the service to be assigned to one of several versions in a fractional way, enabling experiments and canarying new builds, for example.",
+   "properties": {
+    "shardBy": {
+     "type": "string",
+     "description": "Which mechanism should be used as a selector when choosing a version to send a request to. The traffic selection algorithm will be stable for either type until allocations are changed.",
+     "enum": [
+      "UNSPECIFIED",
+      "COOKIE",
+      "IP"
+     ]
+    },
+    "allocations": {
+     "type": "object",
+     "description": "Mapping from service version IDs within the service to fractional (0.000, 1] allocations of traffic for that version. Each version may only be specified once, but some versions in the service may not have any traffic allocation. Services that have traffic allocated in this field may not be deleted until the service is deleted, or their traffic allocation is removed. Allocations must sum to 1. Supports precision up to two decimal places for IP-based splits and up to three decimal places for cookie-based splits.",
+     "additionalProperties": {
+      "type": "number",
+      "format": "double"
+     }
+    }
+   }
+  },
+  "ListServicesResponse": {
+   "id": "ListServicesResponse",
+   "type": "object",
+   "description": "Response message for `Services.ListServices`.",
+   "properties": {
+    "services": {
+     "type": "array",
+     "description": "The services belonging to the requested application.",
+     "items": {
+      "$ref": "Service"
+     }
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Continuation token for fetching the next page of results."
+    }
+   }
+  },
+  "OperationMetadata": {
+   "id": "OperationMetadata",
+   "type": "object",
+   "description": "Metadata for the given google.longrunning.Operation.",
+   "properties": {
+    "operationType": {
+     "type": "string",
+     "description": "The type of the operation (deprecated, use method field instead). Example: \"create_version\". @OutputOnly"
+    },
+    "insertTime": {
+     "type": "string",
+     "description": "Timestamp that this operation was received. @OutputOnly"
+    },
+    "endTime": {
+     "type": "string",
+     "description": "Timestamp that this operation was completed. (Not present if the operation is still in progress.) @OutputOnly"
+    },
+    "user": {
+     "type": "string",
+     "description": "The user who requested this operation. @OutputOnly"
+    },
+    "target": {
+     "type": "string",
+     "description": "Resource that this operation is acting on. Example: \"apps/myapp/modules/default\". @OutputOnly"
+    },
+    "method": {
+     "type": "string",
+     "description": "API method name that initiated the operation. Example: \"google.appengine.v1beta4.Version.CreateVersion\". @OutputOnly"
+    }
+   }
+  },
+  "OperationMetadataV1Beta5": {
+   "id": "OperationMetadataV1Beta5",
+   "type": "object",
+   "description": "Metadata for the given google.longrunning.Operation.",
+   "properties": {
+    "method": {
+     "type": "string",
+     "description": "API method name that initiated the operation. Example: \"google.appengine.v1beta5.Version.CreateVersion\". @OutputOnly"
+    },
+    "insertTime": {
+     "type": "string",
+     "description": "Timestamp that this operation was received. @OutputOnly"
+    },
+    "endTime": {
+     "type": "string",
+     "description": "Timestamp that this operation was completed. (Not present if the operation is still in progress.) @OutputOnly"
+    },
+    "user": {
+     "type": "string",
+     "description": "The user who requested this operation. @OutputOnly"
+    },
+    "target": {
+     "type": "string",
+     "description": "Resource that this operation is acting on. Example: \"apps/myapp/services/default\". @OutputOnly"
+    }
+   }
+  }
+ },
+ "resources": {
+  "apps": {
+   "methods": {
+    "get": {
+     "id": "appengine.apps.get",
+     "path": "v1beta5/apps/{appsId}",
+     "httpMethod": "GET",
+     "description": "Gets information about an application.",
+     "parameters": {
+      "appsId": {
+       "type": "string",
+       "description": "Part of `name`. Name of the application to get. For example: \"apps/myapp\".",
+       "required": true,
+       "location": "path"
+      },
+      "ensureResourcesExist": {
+       "type": "boolean",
+       "description": "Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the `GET` operation. If specified and any resources could not be created, the request will fail with an error code. Additionally, this parameter can cause the request to take longer to complete. Note: This parameter will be deprecated in a future version of the API.",
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "appsId"
+     ],
+     "response": {
+      "$ref": "Application"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform"
+     ]
+    }
+   },
+   "resources": {
+    "operations": {
+     "methods": {
+      "get": {
+       "id": "appengine.apps.operations.get",
+       "path": "v1beta5/apps/{appsId}/operations/{operationsId}",
+       "httpMethod": "GET",
+       "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+       "parameters": {
+        "appsId": {
+         "type": "string",
+         "description": "Part of `name`. The name of the operation resource.",
+         "required": true,
+         "location": "path"
+        },
+        "operationsId": {
+         "type": "string",
+         "description": "Part of `name`. See documentation of `appsId`.",
+         "required": true,
+         "location": "path"
+        }
+       },
+       "parameterOrder": [
+        "appsId",
+        "operationsId"
+       ],
+       "response": {
+        "$ref": "Operation"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      },
+      "list": {
+       "id": "appengine.apps.operations.list",
+       "path": "v1beta5/apps/{appsId}/operations",
+       "httpMethod": "GET",
+       "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. NOTE: the `name` binding below allows API services to override the binding to use different resource name schemes, such as `users/*/operations`.",
+       "parameters": {
+        "appsId": {
+         "type": "string",
+         "description": "Part of `name`. The name of the operation collection.",
+         "required": true,
+         "location": "path"
+        },
+        "filter": {
+         "type": "string",
+         "description": "The standard list filter.",
+         "location": "query"
+        },
+        "pageSize": {
+         "type": "integer",
+         "description": "The standard list page size.",
+         "format": "int32",
+         "location": "query"
+        },
+        "pageToken": {
+         "type": "string",
+         "description": "The standard list page token.",
+         "location": "query"
+        }
+       },
+       "parameterOrder": [
+        "appsId"
+       ],
+       "response": {
+        "$ref": "ListOperationsResponse"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      }
+     }
+    },
+    "services": {
+     "methods": {
+      "delete": {
+       "id": "appengine.apps.services.delete",
+       "path": "v1beta5/apps/{appsId}/services/{servicesId}",
+       "httpMethod": "DELETE",
+       "description": "Deletes a service and all enclosed versions.",
+       "parameters": {
+        "appsId": {
+         "type": "string",
+         "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp/services/default\".",
+         "required": true,
+         "location": "path"
+        },
+        "servicesId": {
+         "type": "string",
+         "description": "Part of `name`. See documentation of `appsId`.",
+         "required": true,
+         "location": "path"
+        }
+       },
+       "parameterOrder": [
+        "appsId",
+        "servicesId"
+       ],
+       "response": {
+        "$ref": "Operation"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      },
+      "get": {
+       "id": "appengine.apps.services.get",
+       "path": "v1beta5/apps/{appsId}/services/{servicesId}",
+       "httpMethod": "GET",
+       "description": "Gets the current configuration of the service.",
+       "parameters": {
+        "appsId": {
+         "type": "string",
+         "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp/services/default\".",
+         "required": true,
+         "location": "path"
+        },
+        "servicesId": {
+         "type": "string",
+         "description": "Part of `name`. See documentation of `appsId`.",
+         "required": true,
+         "location": "path"
+        }
+       },
+       "parameterOrder": [
+        "appsId",
+        "servicesId"
+       ],
+       "response": {
+        "$ref": "Service"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      },
+      "list": {
+       "id": "appengine.apps.services.list",
+       "path": "v1beta5/apps/{appsId}/services",
+       "httpMethod": "GET",
+       "description": "Lists all the services in the application.",
+       "parameters": {
+        "appsId": {
+         "type": "string",
+         "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp\".",
+         "required": true,
+         "location": "path"
+        },
+        "pageSize": {
+         "type": "integer",
+         "description": "Maximum results to return per page.",
+         "format": "int32",
+         "location": "query"
+        },
+        "pageToken": {
+         "type": "string",
+         "description": "Continuation token for fetching the next page of results.",
+         "location": "query"
+        }
+       },
+       "parameterOrder": [
+        "appsId"
+       ],
+       "response": {
+        "$ref": "ListServicesResponse"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      },
+      "patch": {
+       "id": "appengine.apps.services.patch",
+       "path": "v1beta5/apps/{appsId}/services/{servicesId}",
+       "httpMethod": "PATCH",
+       "description": "Updates the configuration of the specified service.",
+       "parameters": {
+        "appsId": {
+         "type": "string",
+         "description": "Part of `name`. Name of the resource to update. For example: \"apps/myapp/services/default\".",
+         "required": true,
+         "location": "path"
+        },
+        "servicesId": {
+         "type": "string",
+         "description": "Part of `name`. See documentation of `appsId`.",
+         "required": true,
+         "location": "path"
+        },
+        "mask": {
+         "type": "string",
+         "description": "Standard field mask for the set of fields to be updated.",
+         "location": "query"
+        },
+        "migrateTraffic": {
+         "type": "boolean",
+         "description": "Whether to use Traffic Migration to shift traffic gradually. Traffic can only be migrated from a single version to another single version.",
+         "location": "query"
+        }
+       },
+       "parameterOrder": [
+        "appsId",
+        "servicesId"
+       ],
+       "request": {
+        "$ref": "Service"
+       },
+       "response": {
+        "$ref": "Operation"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      }
+     },
+     "resources": {
+      "versions": {
+       "methods": {
+        "create": {
+         "id": "appengine.apps.services.versions.create",
+         "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions",
+         "httpMethod": "POST",
+         "description": "Deploys new code and resource files to a version.",
+         "parameters": {
+          "appsId": {
+           "type": "string",
+           "description": "Part of `name`. Name of the resource to update. For example: \"apps/myapp/services/default\".",
+           "required": true,
+           "location": "path"
+          },
+          "servicesId": {
+           "type": "string",
+           "description": "Part of `name`. See documentation of `appsId`.",
+           "required": true,
+           "location": "path"
+          }
+         },
+         "parameterOrder": [
+          "appsId",
+          "servicesId"
+         ],
+         "request": {
+          "$ref": "Version"
+         },
+         "response": {
+          "$ref": "Operation"
+         },
+         "scopes": [
+          "https://www.googleapis.com/auth/cloud-platform"
+         ]
+        },
+        "delete": {
+         "id": "appengine.apps.services.versions.delete",
+         "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
+         "httpMethod": "DELETE",
+         "description": "Deletes an existing version.",
+         "parameters": {
+          "appsId": {
+           "type": "string",
+           "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp/services/default/versions/v1\".",
+           "required": true,
+           "location": "path"
+          },
+          "servicesId": {
+           "type": "string",
+           "description": "Part of `name`. See documentation of `appsId`.",
+           "required": true,
+           "location": "path"
+          },
+          "versionsId": {
+           "type": "string",
+           "description": "Part of `name`. See documentation of `appsId`.",
+           "required": true,
+           "location": "path"
+          }
+         },
+         "parameterOrder": [
+          "appsId",
+          "servicesId",
+          "versionsId"
+         ],
+         "response": {
+          "$ref": "Operation"
+         },
+         "scopes": [
+          "https://www.googleapis.com/auth/cloud-platform"
+         ]
+        },
+        "get": {
+         "id": "appengine.apps.services.versions.get",
+         "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
+         "httpMethod": "GET",
+         "description": "Gets application deployment information.",
+         "parameters": {
+          "appsId": {
+           "type": "string",
+           "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp/services/default/versions/v1\".",
+           "required": true,
+           "location": "path"
+          },
+          "servicesId": {
+           "type": "string",
+           "description": "Part of `name`. See documentation of `appsId`.",
+           "required": true,
+           "location": "path"
+          },
+          "versionsId": {
+           "type": "string",
+           "description": "Part of `name`. See documentation of `appsId`.",
+           "required": true,
+           "location": "path"
+          },
+          "view": {
+           "type": "string",
+           "description": "Controls the set of fields returned in the `Get` response.",
+           "enum": [
+            "BASIC",
+            "FULL"
+           ],
+           "location": "query"
+          }
+         },
+         "parameterOrder": [
+          "appsId",
+          "servicesId",
+          "versionsId"
+         ],
+         "response": {
+          "$ref": "Version"
+         },
+         "scopes": [
+          "https://www.googleapis.com/auth/cloud-platform"
+         ]
+        },
+        "list": {
+         "id": "appengine.apps.services.versions.list",
+         "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions",
+         "httpMethod": "GET",
+         "description": "Lists the versions of a service.",
+         "parameters": {
+          "appsId": {
+           "type": "string",
+           "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp/services/default\".",
+           "required": true,
+           "location": "path"
+          },
+          "servicesId": {
+           "type": "string",
+           "description": "Part of `name`. See documentation of `appsId`.",
+           "required": true,
+           "location": "path"
+          },
+          "view": {
+           "type": "string",
+           "description": "Controls the set of fields returned in the `List` response.",
+           "enum": [
+            "BASIC",
+            "FULL"
+           ],
+           "location": "query"
+          },
+          "pageSize": {
+           "type": "integer",
+           "description": "Maximum results to return per page.",
+           "format": "int32",
+           "location": "query"
+          },
+          "pageToken": {
+           "type": "string",
+           "description": "Continuation token for fetching the next page of results.",
+           "location": "query"
+          }
+         },
+         "parameterOrder": [
+          "appsId",
+          "servicesId"
+         ],
+         "response": {
+          "$ref": "ListVersionsResponse"
+         },
+         "scopes": [
+          "https://www.googleapis.com/auth/cloud-platform"
+         ]
+        }
+       }
+      }
+     }
+    }
+   }
+  }
+ }
+}
diff --git a/appengine/v1beta5/appengine-gen.go b/appengine/v1beta5/appengine-gen.go
new file mode 100644
index 0000000..08fb8e3
--- /dev/null
+++ b/appengine/v1beta5/appengine-gen.go
@@ -0,0 +1,3170 @@
+// Package appengine provides access to the Google App Engine Admin API.
+//
+// See https://cloud.google.com/appengine/docs/admin-api/
+//
+// Usage example:
+//
+//   import "google.golang.org/api/appengine/v1beta5"
+//   ...
+//   appengineService, err := appengine.New(oauthHttpClient)
+package appengine // import "google.golang.org/api/appengine/v1beta5"
+
+import (
+	"bytes"
+	"encoding/json"
+	"errors"
+	"fmt"
+	context "golang.org/x/net/context"
+	ctxhttp "golang.org/x/net/context/ctxhttp"
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+var _ = ctxhttp.Do
+
+const apiId = "appengine:v1beta5"
+const apiName = "appengine"
+const apiVersion = "v1beta5"
+const basePath = "https://appengine.googleapis.com/"
+
+// OAuth2 scopes used by this API.
+const (
+	// View and manage your data across Google Cloud Platform services
+	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
+)
+
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.Apps = NewAppsService(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	Apps *AppsService
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewAppsService(s *Service) *AppsService {
+	rs := &AppsService{s: s}
+	rs.Operations = NewAppsOperationsService(s)
+	rs.Services = NewAppsServicesService(s)
+	return rs
+}
+
+type AppsService struct {
+	s *Service
+
+	Operations *AppsOperationsService
+
+	Services *AppsServicesService
+}
+
+func NewAppsOperationsService(s *Service) *AppsOperationsService {
+	rs := &AppsOperationsService{s: s}
+	return rs
+}
+
+type AppsOperationsService struct {
+	s *Service
+}
+
+func NewAppsServicesService(s *Service) *AppsServicesService {
+	rs := &AppsServicesService{s: s}
+	rs.Versions = NewAppsServicesVersionsService(s)
+	return rs
+}
+
+type AppsServicesService struct {
+	s *Service
+
+	Versions *AppsServicesVersionsService
+}
+
+func NewAppsServicesVersionsService(s *Service) *AppsServicesVersionsService {
+	rs := &AppsServicesVersionsService{s: s}
+	return rs
+}
+
+type AppsServicesVersionsService struct {
+	s *Service
+}
+
+// ApiConfigHandler: API Serving configuration for Cloud Endpoints.
+type ApiConfigHandler struct {
+	// AuthFailAction: For users not logged in, how to handle access to
+	// resources with required login. Defaults to "redirect".
+	//
+	// Possible values:
+	//   "AUTH_FAIL_ACTION_UNSPECIFIED"
+	//   "AUTH_FAIL_ACTION_REDIRECT"
+	//   "AUTH_FAIL_ACTION_UNAUTHORIZED"
+	AuthFailAction string `json:"authFailAction,omitempty"`
+
+	// Login: What level of login is required to access this resource.
+	// Default is "optional".
+	//
+	// Possible values:
+	//   "LOGIN_UNSPECIFIED"
+	//   "LOGIN_OPTIONAL"
+	//   "LOGIN_ADMIN"
+	//   "LOGIN_REQUIRED"
+	Login string `json:"login,omitempty"`
+
+	// Script: Specifies the path to the script from the application root
+	// directory.
+	Script string `json:"script,omitempty"`
+
+	// SecurityLevel: Configures whether security (HTTPS) should be enforced
+	// for this URL.
+	//
+	// Possible values:
+	//   "SECURE_UNSPECIFIED"
+	//   "SECURE_DEFAULT"
+	//   "SECURE_NEVER"
+	//   "SECURE_OPTIONAL"
+	//   "SECURE_ALWAYS"
+	SecurityLevel string `json:"securityLevel,omitempty"`
+
+	// Url: URL to serve the endpoint at.
+	Url string `json:"url,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AuthFailAction") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ApiConfigHandler) MarshalJSON() ([]byte, error) {
+	type noMethod ApiConfigHandler
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ApiEndpointHandler: Use Google Cloud Endpoints to handle requests.
+type ApiEndpointHandler struct {
+	// ScriptPath: Specifies the path to the script from the application
+	// root directory.
+	ScriptPath string `json:"scriptPath,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ScriptPath") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ApiEndpointHandler) MarshalJSON() ([]byte, error) {
+	type noMethod ApiEndpointHandler
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Application: An Application contains the top-level configuration of
+// an App Engine application.
+type Application struct {
+	// CodeBucket: A Google Cloud Storage bucket which can be used for
+	// storing files associated with an application. This bucket is
+	// associated with the application and can be used by the gcloud
+	// deployment commands. @OutputOnly
+	CodeBucket string `json:"codeBucket,omitempty"`
+
+	// DefaultBucket: A Google Cloud Storage bucket which can be used by the
+	// application to store content. @OutputOnly
+	DefaultBucket string `json:"defaultBucket,omitempty"`
+
+	// DispatchRules: HTTP path dispatch rules for requests to the app that
+	// do not explicitly target a service or version. The rules are
+	// order-dependent.
+	DispatchRules []*UrlDispatchRule `json:"dispatchRules,omitempty"`
+
+	// Id: The relative name/path of the application. Example: "myapp".
+	// @OutputOnly
+	Id string `json:"id,omitempty"`
+
+	// Location: The location from which the application will be run.
+	// Choices are "us" for United States and "eu" for European Union.
+	// Application instances will run out of data centers in the chosen
+	// location and all of the application's End User Content will be stored
+	// at rest in the chosen location. The default is "us".
+	Location string `json:"location,omitempty"`
+
+	// Name: The full path to the application in the API. Example:
+	// "apps/myapp". @OutputOnly
+	Name string `json:"name,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CodeBucket") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Application) MarshalJSON() ([]byte, error) {
+	type noMethod Application
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AutomaticScaling: Automatic scaling is the scaling policy that App
+// Engine has used since its inception. It is based on request rate,
+// response latencies, and other application metrics.
+type AutomaticScaling struct {
+	// CoolDownPeriod: The amount of time that the
+	// [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/)
+	// should wait between changes to the number of virtual machines.
+	// Applies only to the VM runtime.
+	CoolDownPeriod string `json:"coolDownPeriod,omitempty"`
+
+	// CpuUtilization: Target scaling by CPU usage.
+	CpuUtilization *CpuUtilization `json:"cpuUtilization,omitempty"`
+
+	// DiskUtilization: Target scaling by disk usage.
+	DiskUtilization *DiskUtilization `json:"diskUtilization,omitempty"`
+
+	// MaxConcurrentRequests: The number of concurrent requests an automatic
+	// scaling instance can accept before the scheduler spawns a new
+	// instance. Default value is chosen based on the runtime.
+	MaxConcurrentRequests int64 `json:"maxConcurrentRequests,omitempty"`
+
+	// MaxIdleInstances: The maximum number of idle instances that App
+	// Engine should maintain for this version.
+	MaxIdleInstances int64 `json:"maxIdleInstances,omitempty"`
+
+	// MaxPendingLatency: The maximum amount of time that App Engine should
+	// allow a request to wait in the pending queue before starting a new
+	// instance to handle it.
+	MaxPendingLatency string `json:"maxPendingLatency,omitempty"`
+
+	// MaxTotalInstances: Max number of instances that App Engine should
+	// start to handle requests.
+	MaxTotalInstances int64 `json:"maxTotalInstances,omitempty"`
+
+	// MinIdleInstances: The minimum number of idle instances that App
+	// Engine should maintain for this version. Only applies to the default
+	// version of a service, since other versions are not expected to
+	// receive significant traffic.
+	MinIdleInstances int64 `json:"minIdleInstances,omitempty"`
+
+	// MinPendingLatency: The minimum amount of time that App Engine should
+	// allow a request to wait in the pending queue before starting a new
+	// instance to handle it.
+	MinPendingLatency string `json:"minPendingLatency,omitempty"`
+
+	// MinTotalInstances: Minimum number of instances that App Engine should
+	// maintain.
+	MinTotalInstances int64 `json:"minTotalInstances,omitempty"`
+
+	// NetworkUtilization: Target scaling by network usage.
+	NetworkUtilization *NetworkUtilization `json:"networkUtilization,omitempty"`
+
+	// RequestUtilization: Target scaling by request utilization.
+	RequestUtilization *RequestUtilization `json:"requestUtilization,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CoolDownPeriod") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AutomaticScaling) MarshalJSON() ([]byte, error) {
+	type noMethod AutomaticScaling
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// BasicScaling: A service with basic scaling will create an instance
+// when the application receives a request. The instance will be turned
+// down when the app becomes idle. Basic scaling is ideal for work that
+// is intermittent or driven by user activity.
+type BasicScaling struct {
+	// IdleTimeout: The instance will be shut down this amount of time after
+	// receiving its last request.
+	IdleTimeout string `json:"idleTimeout,omitempty"`
+
+	// MaxInstances: The maximum number of instances for App Engine to
+	// create for this version.
+	MaxInstances int64 `json:"maxInstances,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "IdleTimeout") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *BasicScaling) MarshalJSON() ([]byte, error) {
+	type noMethod BasicScaling
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ContainerInfo: A Docker (container) image which should be used to
+// start the application.
+type ContainerInfo struct {
+	// Image: Reference to a hosted container image. Must be a URI to a
+	// resource in a Docker repository. Must be fully qualified, including
+	// tag or digest. e.g. gcr.io/my-project/image:tag or
+	// gcr.io/my-project/image@digest
+	Image string `json:"image,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Image") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ContainerInfo) MarshalJSON() ([]byte, error) {
+	type noMethod ContainerInfo
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CpuUtilization: Target scaling by CPU usage.
+type CpuUtilization struct {
+	// AggregationWindowLength: The period of time over which CPU
+	// utilization is calculated.
+	AggregationWindowLength string `json:"aggregationWindowLength,omitempty"`
+
+	// TargetUtilization: Target (0-1) CPU utilization ratio to maintain
+	// when scaling.
+	TargetUtilization float64 `json:"targetUtilization,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "AggregationWindowLength") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CpuUtilization) MarshalJSON() ([]byte, error) {
+	type noMethod CpuUtilization
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Deployment: Code and application artifacts used to deploy a version
+// to App Engine.
+type Deployment struct {
+	// Container: If supplied, a docker (container) image which should be
+	// used to start the application. Only applicable to the 'vm' runtime.
+	Container *ContainerInfo `json:"container,omitempty"`
+
+	// Files: A manifest of files stored in Google Cloud Storage which
+	// should be included as part of this application. All files must be
+	// readable using the credentials supplied with this call.
+	Files map[string]FileInfo `json:"files,omitempty"`
+
+	// SourceReferences: The origin of the source code for this deployment.
+	// There can be more than one source reference per Version if source
+	// code is distributed among multiple repositories.
+	SourceReferences []*SourceReference `json:"sourceReferences,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Container") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Deployment) MarshalJSON() ([]byte, error) {
+	type noMethod Deployment
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DiskUtilization: Target scaling by disk usage (for VM runtimes only).
+type DiskUtilization struct {
+	// TargetReadBytesPerSec: Target bytes per second read.
+	TargetReadBytesPerSec int64 `json:"targetReadBytesPerSec,omitempty"`
+
+	// TargetReadOpsPerSec: Target ops per second read.
+	TargetReadOpsPerSec int64 `json:"targetReadOpsPerSec,omitempty"`
+
+	// TargetWriteBytesPerSec: Target bytes per second written.
+	TargetWriteBytesPerSec int64 `json:"targetWriteBytesPerSec,omitempty"`
+
+	// TargetWriteOpsPerSec: Target ops per second written.
+	TargetWriteOpsPerSec int64 `json:"targetWriteOpsPerSec,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "TargetReadBytesPerSec") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DiskUtilization) MarshalJSON() ([]byte, error) {
+	type noMethod DiskUtilization
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ErrorHandler: A custom static error page to be served when an error
+// occurs.
+type ErrorHandler struct {
+	// ErrorCode: The error condition this handler applies to.
+	//
+	// Possible values:
+	//   "ERROR_CODE_UNSPECIFIED"
+	//   "ERROR_CODE_DEFAULT"
+	//   "ERROR_CODE_OVER_QUOTA"
+	//   "ERROR_CODE_DOS_API_DENIAL"
+	//   "ERROR_CODE_TIMEOUT"
+	ErrorCode string `json:"errorCode,omitempty"`
+
+	// MimeType: MIME type of file. If unspecified, "text/html" is assumed.
+	MimeType string `json:"mimeType,omitempty"`
+
+	// StaticFile: Static file content to be served for this error.
+	StaticFile string `json:"staticFile,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ErrorCode") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ErrorHandler) MarshalJSON() ([]byte, error) {
+	type noMethod ErrorHandler
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FileInfo: A single source file which is part of the application to be
+// deployed.
+type FileInfo struct {
+	// MimeType: The MIME type of the file; if unspecified, the value from
+	// Google Cloud Storage will be used.
+	MimeType string `json:"mimeType,omitempty"`
+
+	// Sha1Sum: The SHA1 (160 bits) hash of the file in hex.
+	Sha1Sum string `json:"sha1Sum,omitempty"`
+
+	// SourceUrl: The URL source to use to fetch this file. Must be a URL to
+	// a resource in Google Cloud Storage in the form
+	// 'http(s)://storage.googleapis.com/\/\'.
+	SourceUrl string `json:"sourceUrl,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "MimeType") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FileInfo) MarshalJSON() ([]byte, error) {
+	type noMethod FileInfo
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// HealthCheck: Configure health checking for the VM instances.
+// Unhealthy VM instances will be killed and replaced with new
+// instances.
+type HealthCheck struct {
+	// CheckInterval: The interval between health checks.
+	CheckInterval string `json:"checkInterval,omitempty"`
+
+	// DisableHealthCheck: Whether to explicitly disable health checks for
+	// this instance.
+	DisableHealthCheck bool `json:"disableHealthCheck,omitempty"`
+
+	// HealthyThreshold: The number of consecutive successful health checks
+	// before receiving traffic.
+	HealthyThreshold int64 `json:"healthyThreshold,omitempty"`
+
+	// Host: The host header to send when performing an HTTP health check
+	// (e.g. myapp.appspot.com)
+	Host string `json:"host,omitempty"`
+
+	// RestartThreshold: The number of consecutive failed health checks
+	// before an instance is restarted.
+	RestartThreshold int64 `json:"restartThreshold,omitempty"`
+
+	// Timeout: The amount of time before the health check is considered
+	// failed.
+	Timeout string `json:"timeout,omitempty"`
+
+	// UnhealthyThreshold: The number of consecutive failed health checks
+	// before removing traffic.
+	UnhealthyThreshold int64 `json:"unhealthyThreshold,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CheckInterval") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *HealthCheck) MarshalJSON() ([]byte, error) {
+	type noMethod HealthCheck
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Library: A Python runtime third-party library required by the
+// application.
+type Library struct {
+	// Name: The name of the library, e.g. "PIL" or "django".
+	Name string `json:"name,omitempty"`
+
+	// Version: The version of the library to select, or "latest".
+	Version string `json:"version,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Name") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Library) MarshalJSON() ([]byte, error) {
+	type noMethod Library
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ListOperationsResponse: The response message for
+// Operations.ListOperations.
+type ListOperationsResponse struct {
+	// NextPageToken: The standard List next-page token.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Operations: A list of operations that matches the specified filter in
+	// the request.
+	Operations []*Operation `json:"operations,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ListOperationsResponse) MarshalJSON() ([]byte, error) {
+	type noMethod ListOperationsResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ListServicesResponse: Response message for `Services.ListServices`.
+type ListServicesResponse struct {
+	// NextPageToken: Continuation token for fetching the next page of
+	// results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Services: The services belonging to the requested application.
+	Services []*Service1 `json:"services,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ListServicesResponse) MarshalJSON() ([]byte, error) {
+	type noMethod ListServicesResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ListVersionsResponse: Response message for `Versions.ListVersions`.
+type ListVersionsResponse struct {
+	// NextPageToken: Continuation token for fetching the next page of
+	// results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Versions: The versions belonging to the requested application
+	// service.
+	Versions []*Version `json:"versions,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ListVersionsResponse) MarshalJSON() ([]byte, error) {
+	type noMethod ListVersionsResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ManualScaling: A service with manual scaling runs continuously,
+// allowing you to perform complex initialization and rely on the state
+// of its memory over time.
+type ManualScaling struct {
+	// Instances: The number of instances to assign to the service at the
+	// start. This number can later be altered by using the [Modules
+	// API](https://cloud.google.com/appengine/docs/python/modules/functions)
+	//  `set_num_instances()` function.
+	Instances int64 `json:"instances,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Instances") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ManualScaling) MarshalJSON() ([]byte, error) {
+	type noMethod ManualScaling
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Network: Used to specify extra network settings (for VM runtimes
+// only).
+type Network struct {
+	// ForwardedPorts: A list of ports (or port pairs) to forward from the
+	// VM into the app container.
+	ForwardedPorts []string `json:"forwardedPorts,omitempty"`
+
+	// InstanceTag: A tag to apply to the VM instance during creation.
+	InstanceTag string `json:"instanceTag,omitempty"`
+
+	// Name: The Google Compute Engine network where the VMs will be
+	// created. If not specified, or empty, the network named "default" will
+	// be used. (The short name should be specified, not the resource path.)
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ForwardedPorts") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Network) MarshalJSON() ([]byte, error) {
+	type noMethod Network
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// NetworkUtilization: Target scaling by network usage (for VM runtimes
+// only).
+type NetworkUtilization struct {
+	// TargetReceivedBytesPerSec: Target bytes per second received.
+	TargetReceivedBytesPerSec int64 `json:"targetReceivedBytesPerSec,omitempty"`
+
+	// TargetReceivedPacketsPerSec: Target packets per second received.
+	TargetReceivedPacketsPerSec int64 `json:"targetReceivedPacketsPerSec,omitempty"`
+
+	// TargetSentBytesPerSec: Target bytes per second sent.
+	TargetSentBytesPerSec int64 `json:"targetSentBytesPerSec,omitempty"`
+
+	// TargetSentPacketsPerSec: Target packets per second sent.
+	TargetSentPacketsPerSec int64 `json:"targetSentPacketsPerSec,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "TargetReceivedBytesPerSec") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *NetworkUtilization) MarshalJSON() ([]byte, error) {
+	type noMethod NetworkUtilization
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Operation: This resource represents a long-running operation that is
+// the result of a network API call.
+type Operation struct {
+	// Done: If the value is `false`, it means the operation is still in
+	// progress. If true, the operation is completed, and either `error` or
+	// `response` is available.
+	Done bool `json:"done,omitempty"`
+
+	// Error: The error result of the operation in case of failure.
+	Error *Status `json:"error,omitempty"`
+
+	// Metadata: Service-specific metadata associated with the operation. It
+	// typically contains progress information and common metadata such as
+	// create time. Some services might not provide such metadata. Any
+	// method that returns a long-running operation should document the
+	// metadata type, if any.
+	Metadata OperationMetadata `json:"metadata,omitempty"`
+
+	// Name: The server-assigned name, which is only unique within the same
+	// service that originally returns it. If you use the default HTTP
+	// mapping above, the `name` should have the format of
+	// `operations/some/unique/name`.
+	Name string `json:"name,omitempty"`
+
+	// Response: The normal response of the operation in case of success. If
+	// the original method returns no data on success, such as `Delete`, the
+	// response is `google.protobuf.Empty`. If the original method is
+	// standard `Get`/`Create`/`Update`, the response should be the
+	// resource. For other methods, the response should have the type
+	// `XxxResponse`, where `Xxx` is the original method name. For example,
+	// if the original method name is `TakeSnapshot()`, the inferred
+	// response type is `TakeSnapshotResponse`.
+	Response OperationResponse `json:"response,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Done") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Operation) MarshalJSON() ([]byte, error) {
+	type noMethod Operation
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type OperationMetadata interface{}
+
+type OperationResponse interface{}
+
+// OperationMetadata1: Metadata for the given
+// google.longrunning.Operation.
+type OperationMetadata1 struct {
+	// EndTime: Timestamp that this operation was completed. (Not present if
+	// the operation is still in progress.) @OutputOnly
+	EndTime string `json:"endTime,omitempty"`
+
+	// InsertTime: Timestamp that this operation was received. @OutputOnly
+	InsertTime string `json:"insertTime,omitempty"`
+
+	// Method: API method name that initiated the operation. Example:
+	// "google.appengine.v1beta4.Version.CreateVersion". @OutputOnly
+	Method string `json:"method,omitempty"`
+
+	// OperationType: The type of the operation (deprecated, use method
+	// field instead). Example: "create_version". @OutputOnly
+	OperationType string `json:"operationType,omitempty"`
+
+	// Target: Resource that this operation is acting on. Example:
+	// "apps/myapp/modules/default". @OutputOnly
+	Target string `json:"target,omitempty"`
+
+	// User: The user who requested this operation. @OutputOnly
+	User string `json:"user,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "EndTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OperationMetadata1) MarshalJSON() ([]byte, error) {
+	type noMethod OperationMetadata1
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OperationMetadataV1Beta5: Metadata for the given
+// google.longrunning.Operation.
+type OperationMetadataV1Beta5 struct {
+	// EndTime: Timestamp that this operation was completed. (Not present if
+	// the operation is still in progress.) @OutputOnly
+	EndTime string `json:"endTime,omitempty"`
+
+	// InsertTime: Timestamp that this operation was received. @OutputOnly
+	InsertTime string `json:"insertTime,omitempty"`
+
+	// Method: API method name that initiated the operation. Example:
+	// "google.appengine.v1beta5.Version.CreateVersion". @OutputOnly
+	Method string `json:"method,omitempty"`
+
+	// Target: Resource that this operation is acting on. Example:
+	// "apps/myapp/services/default". @OutputOnly
+	Target string `json:"target,omitempty"`
+
+	// User: The user who requested this operation. @OutputOnly
+	User string `json:"user,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "EndTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OperationMetadataV1Beta5) MarshalJSON() ([]byte, error) {
+	type noMethod OperationMetadataV1Beta5
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// RequestUtilization: Target scaling by request utilization (for VM
+// runtimes only).
+type RequestUtilization struct {
+	// TargetConcurrentRequests: Target number of concurrent requests.
+	TargetConcurrentRequests int64 `json:"targetConcurrentRequests,omitempty"`
+
+	// TargetRequestCountPerSec: Target requests per second.
+	TargetRequestCountPerSec int64 `json:"targetRequestCountPerSec,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "TargetConcurrentRequests") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *RequestUtilization) MarshalJSON() ([]byte, error) {
+	type noMethod RequestUtilization
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Resources: Used to specify how many machine resources an app version
+// needs.
+type Resources struct {
+	// Cpu: How many CPU cores an app version needs.
+	Cpu float64 `json:"cpu,omitempty"`
+
+	// DiskGb: How much disk size, in GB, an app version needs.
+	DiskGb float64 `json:"diskGb,omitempty"`
+
+	// MemoryGb: How much memory, in GB, an app version needs.
+	MemoryGb float64 `json:"memoryGb,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Cpu") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Resources) MarshalJSON() ([]byte, error) {
+	type noMethod Resources
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ScriptHandler: Executes a script to handle the request that matches
+// the URL pattern.
+type ScriptHandler struct {
+	// ScriptPath: Specifies the path to the script from the application
+	// root directory.
+	ScriptPath string `json:"scriptPath,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ScriptPath") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ScriptHandler) MarshalJSON() ([]byte, error) {
+	type noMethod ScriptHandler
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Service1: A service is a logical component of an application that can
+// share state and communicate in a secure fashion with other services.
+// For example, an application that handles customer requests might
+// include separate services to handle other tasks such as API requests
+// from mobile devices or backend data analysis. Each service has a
+// collection of versions that define a specific set of code used to
+// implement the functionality of that service.
+type Service1 struct {
+	// Id: The relative name/path of the service within the application.
+	// Example: "default" @OutputOnly
+	Id string `json:"id,omitempty"`
+
+	// Name: The full path to the Service resource in the API. Example:
+	// "apps/myapp/services/default" @OutputOnly
+	Name string `json:"name,omitempty"`
+
+	// Split: A mapping that defines fractional HTTP traffic diversion to
+	// different versions within the service.
+	Split *TrafficSplit `json:"split,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Service1) MarshalJSON() ([]byte, error) {
+	type noMethod Service1
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// SourceReference: A reference to a particular snapshot of the source
+// tree used to build and deploy the application.
+type SourceReference struct {
+	// Repository: Optional. A URI string identifying the repository.
+	// Example: "https://source.developers.google.com/p/app-123/r/default"
+	Repository string `json:"repository,omitempty"`
+
+	// RevisionId: The canonical (and persistent) identifier of the deployed
+	// revision, i.e. any kind of aliases including tags or branch names are
+	// not allowed. Example (git):
+	// "2198322f89e0bb2e25021667c2ed489d1fd34e6b"
+	RevisionId string `json:"revisionId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Repository") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SourceReference) MarshalJSON() ([]byte, error) {
+	type noMethod SourceReference
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// StaticFilesHandler: Files served directly to the user for a given
+// URL, such as images, CSS stylesheets, or JavaScript source files.
+// Static file handlers describe which files in the application
+// directory are static files, and which URLs serve them.
+type StaticFilesHandler struct {
+	// ApplicationReadable: By default, files declared in static file
+	// handlers are uploaded as static data and are only served to end
+	// users, they cannot be read by an application. If this field is set to
+	// true, the files are also uploaded as code data so your application
+	// can read them. Both uploads are charged against your code and static
+	// data storage resource quotas.
+	ApplicationReadable bool `json:"applicationReadable,omitempty"`
+
+	// Expiration: The length of time a static file served by this handler
+	// ought to be cached by web proxies and browsers.
+	Expiration string `json:"expiration,omitempty"`
+
+	// HttpHeaders: HTTP headers to use for all responses from these URLs.
+	HttpHeaders map[string]string `json:"httpHeaders,omitempty"`
+
+	// MimeType: If specified, all files served by this handler will be
+	// served using the specified MIME type. If not specified, the MIME type
+	// for a file will be derived from the file's filename extension.
+	MimeType string `json:"mimeType,omitempty"`
+
+	// Path: The path to the static files matched by the URL pattern, from
+	// the application root directory. The path can refer to text matched in
+	// groupings in the URL pattern.
+	Path string `json:"path,omitempty"`
+
+	// RequireMatchingFile: If true, this UrlMap entry does not match the
+	// request unless the file referenced by the handler also exists. If no
+	// such file exists, processing will continue with the next UrlMap that
+	// matches the requested URL.
+	RequireMatchingFile bool `json:"requireMatchingFile,omitempty"`
+
+	// UploadPathRegex: A regular expression that matches the file paths for
+	// all files that will be referenced by this handler.
+	UploadPathRegex string `json:"uploadPathRegex,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ApplicationReadable")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *StaticFilesHandler) MarshalJSON() ([]byte, error) {
+	type noMethod StaticFilesHandler
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Status: The `Status` type defines a logical error model that is
+// suitable for different programming environments, including REST APIs
+// and RPC APIs. It is used by [gRPC](https://github.com/grpc). The
+// error model is designed to be: - Simple to use and understand for
+// most users - Flexible enough to meet unexpected needs # Overview The
+// `Status` message contains three pieces of data: error code, error
+// message, and error details. The error code should be an enum value of
+// google.rpc.Code, but it may accept additional error codes if needed.
+// The error message should be a developer-facing English message that
+// helps developers *understand* and *resolve* the error. If a localized
+// user-facing error message is needed, put the localized message in the
+// error details or localize it in the client. The optional error
+// details may contain arbitrary information about the error. There is a
+// predefined set of error detail types in the package `google.rpc`
+// which can be used for common error conditions. # Language mapping The
+// `Status` message is the logical representation of the error model,
+// but it is not necessarily the actual wire format. When the `Status`
+// message is exposed in different client libraries and different wire
+// protocols, it can be mapped differently. For example, it will likely
+// be mapped to some exceptions in Java, but more likely mapped to some
+// error codes in C. # Other uses The error model and the `Status`
+// message can be used in a variety of environments, either with or
+// without APIs, to provide a consistent developer experience across
+// different environments. Example uses of this error model include: -
+// Partial errors. If a service needs to return partial errors to the
+// client, it may embed the `Status` in the normal response to indicate
+// the partial errors. - Workflow errors. A typical workflow has
+// multiple steps. Each step may have a `Status` message for error
+// reporting purpose. - Batch operations. If a client uses batch request
+// and batch response, the `Status` message should be used directly
+// inside batch response, one for each error sub-response. -
+// Asynchronous operations. If an API call embeds asynchronous operation
+// results in its response, the status of those operations should be
+// represented directly using the `Status` message. - Logging. If some
+// API errors are stored in logs, the message `Status` could be used
+// directly after any stripping needed for security/privacy reasons.
+type Status struct {
+	// Code: The status code, which should be an enum value of
+	// google.rpc.Code.
+	Code int64 `json:"code,omitempty"`
+
+	// Details: A list of messages that carry the error details. There will
+	// be a common set of message types for APIs to use.
+	Details []StatusDetails `json:"details,omitempty"`
+
+	// Message: A developer-facing error message, which should be in
+	// English. Any user-facing error message should be localized and sent
+	// in the google.rpc.Status.details field, or localized by the client.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Status) MarshalJSON() ([]byte, error) {
+	type noMethod Status
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type StatusDetails interface{}
+
+// TrafficSplit: Configuration for traffic splitting for versions within
+// a single service. Traffic splitting allows traffic directed to the
+// service to be assigned to one of several versions in a fractional
+// way, enabling experiments and canarying new builds, for example.
+type TrafficSplit struct {
+	// Allocations: Mapping from service version IDs within the service to
+	// fractional (0.000, 1] allocations of traffic for that version. Each
+	// version may only be specified once, but some versions in the service
+	// may not have any traffic allocation. Services that have traffic
+	// allocated in this field may not be deleted until the service is
+	// deleted, or their traffic allocation is removed. Allocations must sum
+	// to 1. Supports precision up to two decimal places for IP-based splits
+	// and up to three decimal places for cookie-based splits.
+	Allocations *TrafficSplitAllocations `json:"allocations,omitempty"`
+
+	// ShardBy: Which mechanism should be used as a selector when choosing a
+	// version to send a request to. The traffic selection algorithm will be
+	// stable for either type until allocations are changed.
+	//
+	// Possible values:
+	//   "UNSPECIFIED"
+	//   "COOKIE"
+	//   "IP"
+	ShardBy string `json:"shardBy,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Allocations") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *TrafficSplit) MarshalJSON() ([]byte, error) {
+	type noMethod TrafficSplit
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// TrafficSplitAllocations: Mapping from service version IDs within the
+// service to fractional (0.000, 1] allocations of traffic for that
+// version. Each version may only be specified once, but some versions
+// in the service may not have any traffic allocation. Services that
+// have traffic allocated in this field may not be deleted until the
+// service is deleted, or their traffic allocation is removed.
+// Allocations must sum to 1. Supports precision up to two decimal
+// places for IP-based splits and up to three decimal places for
+// cookie-based splits.
+type TrafficSplitAllocations struct {
+}
+
+// UrlDispatchRule: Rules to match an HTTP request and dispatch that
+// request to a service.
+type UrlDispatchRule struct {
+	// Domain: The domain name to match on. Supports '*' (glob) wildcarding
+	// on the left-hand side of a '.'. If empty, all domains will be matched
+	// (the same as '*').
+	Domain string `json:"domain,omitempty"`
+
+	// Path: The pathname within the host. This must start with a '/'. A
+	// single '*' (glob) can be included at the end of the path. The sum of
+	// the lengths of the domain and path may not exceed 100 characters.
+	Path string `json:"path,omitempty"`
+
+	// Service: The resource id of a Service in this application that should
+	// service the matched request. The Service must already exist. Example:
+	// "default".
+	Service string `json:"service,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Domain") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *UrlDispatchRule) MarshalJSON() ([]byte, error) {
+	type noMethod UrlDispatchRule
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// UrlMap: A URL pattern and description of how it should be handled.
+// App Engine can handle URLs by executing application code, or by
+// serving static files uploaded with the code, such as images, CSS or
+// JavaScript.
+type UrlMap struct {
+	// ApiEndpoint: Use API Endpoints to handle requests.
+	ApiEndpoint *ApiEndpointHandler `json:"apiEndpoint,omitempty"`
+
+	// AuthFailAction: For users not logged in, how to handle access to
+	// resources with required login. Defaults to "redirect".
+	//
+	// Possible values:
+	//   "AUTH_FAIL_ACTION_UNSPECIFIED"
+	//   "AUTH_FAIL_ACTION_REDIRECT"
+	//   "AUTH_FAIL_ACTION_UNAUTHORIZED"
+	AuthFailAction string `json:"authFailAction,omitempty"`
+
+	// Login: What level of login is required to access this resource.
+	//
+	// Possible values:
+	//   "LOGIN_UNSPECIFIED"
+	//   "LOGIN_OPTIONAL"
+	//   "LOGIN_ADMIN"
+	//   "LOGIN_REQUIRED"
+	Login string `json:"login,omitempty"`
+
+	// RedirectHttpResponseCode: `30x` code to use when performing redirects
+	// for the `secure` field. A `302` is used by default.
+	//
+	// Possible values:
+	//   "REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED"
+	//   "REDIRECT_HTTP_RESPONSE_CODE_301"
+	//   "REDIRECT_HTTP_RESPONSE_CODE_302"
+	//   "REDIRECT_HTTP_RESPONSE_CODE_303"
+	//   "REDIRECT_HTTP_RESPONSE_CODE_307"
+	RedirectHttpResponseCode string `json:"redirectHttpResponseCode,omitempty"`
+
+	// Script: Executes a script to handle the request that matches the URL
+	// pattern.
+	Script *ScriptHandler `json:"script,omitempty"`
+
+	// SecurityLevel: Configures whether security (HTTPS) should be enforced
+	// for this URL.
+	//
+	// Possible values:
+	//   "SECURE_UNSPECIFIED"
+	//   "SECURE_DEFAULT"
+	//   "SECURE_NEVER"
+	//   "SECURE_OPTIONAL"
+	//   "SECURE_ALWAYS"
+	SecurityLevel string `json:"securityLevel,omitempty"`
+
+	// StaticFiles: Returns the contents of a file, such as an image, as the
+	// response.
+	StaticFiles *StaticFilesHandler `json:"staticFiles,omitempty"`
+
+	// UrlRegex: A URL prefix. This value uses regular expression syntax
+	// (and so regexp special characters must be escaped), but it should not
+	// contain groupings. All URLs that begin with this prefix are handled
+	// by this handler, using the portion of the URL after the prefix as
+	// part of the file path. This is always required.
+	UrlRegex string `json:"urlRegex,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ApiEndpoint") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *UrlMap) MarshalJSON() ([]byte, error) {
+	type noMethod UrlMap
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Version: A Version is a specific set of source code and configuration
+// files deployed to a service.
+type Version struct {
+	// ApiConfig: Serving configuration for Google Cloud Endpoints. Only
+	// returned in `GET` requests if `view=FULL` is set. May only be set on
+	// create requests; once created, is immutable.
+	ApiConfig *ApiConfigHandler `json:"apiConfig,omitempty"`
+
+	// AutomaticScaling: Automatic scaling is the scaling policy that App
+	// Engine has used since its inception. It is based on request rate,
+	// response latencies, and other application metrics.
+	AutomaticScaling *AutomaticScaling `json:"automaticScaling,omitempty"`
+
+	// BasicScaling: A service with basic scaling will create an instance
+	// when the application receives a request. The instance will be turned
+	// down when the app becomes idle. Basic scaling is ideal for work that
+	// is intermittent or driven by user activity.
+	BasicScaling *BasicScaling `json:"basicScaling,omitempty"`
+
+	// BetaSettings: Beta settings supplied to the application via metadata.
+	BetaSettings map[string]string `json:"betaSettings,omitempty"`
+
+	// CreationTime: Creation time of this version. This will be between the
+	// start and end times of the operation that creates this version.
+	// @OutputOnly
+	CreationTime string `json:"creationTime,omitempty"`
+
+	// DefaultExpiration: The length of time a static file served by a
+	// static file handler ought to be cached by web proxies and browsers,
+	// if the handler does not specify its own expiration. Only returned in
+	// `GET` requests if `view=FULL` is set. May only be set on create
+	// requests; once created, is immutable.
+	DefaultExpiration string `json:"defaultExpiration,omitempty"`
+
+	// Deployer: The email address of the user who created this version.
+	// @OutputOnly
+	Deployer string `json:"deployer,omitempty"`
+
+	// Deployment: Code and application artifacts that make up this version.
+	// Only returned in `GET` requests if `view=FULL` is set. May only be
+	// set on create requests; once created, is immutable.
+	Deployment *Deployment `json:"deployment,omitempty"`
+
+	// DiskUsageBytes: Total size of version files hosted on App Engine disk
+	// in bytes. @OutputOnly
+	DiskUsageBytes int64 `json:"diskUsageBytes,omitempty,string"`
+
+	// Env: The App Engine execution environment to use for this version.
+	// Default: "1"
+	Env string `json:"env,omitempty"`
+
+	// EnvVariables: Environment variables made available to the
+	// application. Only returned in `GET` requests if `view=FULL` is set.
+	// May only be set on create requests; once created, is immutable.
+	EnvVariables map[string]string `json:"envVariables,omitempty"`
+
+	// ErrorHandlers: Custom static error pages instead of these generic
+	// error pages, (limit 10 KB/page) Only returned in `GET` requests if
+	// `view=FULL` is set. May only be set on create requests; once created,
+	// is immutable.
+	ErrorHandlers []*ErrorHandler `json:"errorHandlers,omitempty"`
+
+	// Handlers: An ordered list of URL Matching patterns that should be
+	// applied to incoming requests. The first matching URL consumes the
+	// request, and subsequent handlers are not attempted. Only returned in
+	// `GET` requests if `view=FULL` is set. May only be set on create
+	// requests; once created, is immutable.
+	Handlers []*UrlMap `json:"handlers,omitempty"`
+
+	// HealthCheck: Configure health checking for the VM instances.
+	// Unhealthy VM instances will be stopped and replaced with new
+	// instances. Only returned in `GET` requests if `view=FULL` is set. May
+	// only be set on create requests; once created, is immutable.
+	HealthCheck *HealthCheck `json:"healthCheck,omitempty"`
+
+	// Id: The relative name/path of the Version within the service.
+	// Example: "v1". Version specifiers can contain lowercase letters,
+	// digits, and hyphens. It cannot begin with the prefix `ah-` and the
+	// names `default` and `latest` are reserved and cannot be used.
+	Id string `json:"id,omitempty"`
+
+	// InboundServices: Before an application can receive email or XMPP
+	// messages, the application must be configured to enable the service.
+	//
+	// Possible values:
+	//   "INBOUND_SERVICE_UNSPECIFIED" - Not specified.
+	//   "INBOUND_SERVICE_MAIL" - Allows an application to receive mail.
+	//   "INBOUND_SERVICE_MAIL_BOUNCE" - Allows an application receive email
+	// bound notifications.
+	//   "INBOUND_SERVICE_XMPP_ERROR" - Allows an application to receive
+	// error stanzas.
+	//   "INBOUND_SERVICE_XMPP_MESSAGE" - Allows an application to receive
+	// instant messages.
+	//   "INBOUND_SERVICE_XMPP_SUBSCRIBE" - Allows an application to receive
+	// user subscription POSTs.
+	//   "INBOUND_SERVICE_XMPP_PRESENCE" - Allows an application to receive
+	// a user's chat presence.
+	//   "INBOUND_SERVICE_CHANNEL_PRESENCE" - Registers an application for
+	// notifications when a client connects or disconnects from a channel.
+	//   "INBOUND_SERVICE_WARMUP" - Enables warmup requests.
+	InboundServices []string `json:"inboundServices,omitempty"`
+
+	// InstanceClass: The instance class to use to run this app. Valid
+	// values for AutomaticScaling are `[F1, F2, F4, F4_1G]`. Valid values
+	// for ManualScaling and BasicScaling are `[B1, B2, B4, B8, B4_1G]`.
+	// Default: "F1" for AutomaticScaling, "B1" for ManualScaling and
+	// BasicScaling
+	InstanceClass string `json:"instanceClass,omitempty"`
+
+	// Libraries: Configuration for Python runtime third-party libraries
+	// required by the application. Only returned in `GET` requests if
+	// `view=FULL` is set. May only be set on create requests; once created,
+	// is immutable.
+	Libraries []*Library `json:"libraries,omitempty"`
+
+	// ManualScaling: A service with manual scaling runs continuously,
+	// allowing you to perform complex initialization and rely on the state
+	// of its memory over time.
+	ManualScaling *ManualScaling `json:"manualScaling,omitempty"`
+
+	// Name: The full path to the Version resource in the API. Example:
+	// "apps/myapp/services/default/versions/v1". @OutputOnly
+	Name string `json:"name,omitempty"`
+
+	// Network: Used to specify extra network settings (for VM runtimes
+	// only).
+	Network *Network `json:"network,omitempty"`
+
+	// NobuildFilesRegex: Go only. Files that match this pattern will not be
+	// built into the app. May only be set on create requests.
+	NobuildFilesRegex string `json:"nobuildFilesRegex,omitempty"`
+
+	// Resources: Used to specify how many machine resources an app version
+	// needs (for VM runtimes only).
+	Resources *Resources `json:"resources,omitempty"`
+
+	// Runtime: The desired runtime. Values can include python27, java7, go,
+	// etc.
+	Runtime string `json:"runtime,omitempty"`
+
+	// ServingStatus: The current serving status of this version. Only
+	// `SERVING` versions will have instances created or billed for. If this
+	// field is unset when a version is created, `SERVING` status will be
+	// assumed. It is an error to explicitly set this field to
+	// `SERVING_STATUS_UNSPECIFIED`.
+	//
+	// Possible values:
+	//   "SERVING_STATUS_UNSPECIFIED"
+	//   "SERVING"
+	//   "STOPPED"
+	ServingStatus string `json:"servingStatus,omitempty"`
+
+	// Threadsafe: If true, multiple requests can be dispatched to the app
+	// at once.
+	Threadsafe bool `json:"threadsafe,omitempty"`
+
+	// Vm: Whether to deploy this app in a VM container.
+	Vm bool `json:"vm,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "ApiConfig") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Version) MarshalJSON() ([]byte, error) {
+	type noMethod Version
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// method id "appengine.apps.get":
+
+type AppsGetCall struct {
+	s            *Service
+	appsId       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets information about an application.
+func (r *AppsService) Get(appsId string) *AppsGetCall {
+	c := &AppsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.appsId = appsId
+	return c
+}
+
+// EnsureResourcesExist sets the optional parameter
+// "ensureResourcesExist": Certain resources associated with an
+// application are created on-demand. Controls whether these resources
+// should be created when performing the `GET` operation. If specified
+// and any resources could not be created, the request will fail with an
+// error code. Additionally, this parameter can cause the request to
+// take longer to complete. Note: This parameter will be deprecated in a
+// future version of the API.
+func (c *AppsGetCall) EnsureResourcesExist(ensureResourcesExist bool) *AppsGetCall {
+	c.urlParams_.Set("ensureResourcesExist", fmt.Sprint(ensureResourcesExist))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AppsGetCall) Fields(s ...googleapi.Field) *AppsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AppsGetCall) IfNoneMatch(entityTag string) *AppsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AppsGetCall) Context(ctx context.Context) *AppsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AppsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta5/apps/{appsId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"appsId": c.appsId,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "appengine.apps.get" call.
+// Exactly one of *Application or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Application.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AppsGetCall) Do(opts ...googleapi.CallOption) (*Application, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Application{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets information about an application.",
+	//   "httpMethod": "GET",
+	//   "id": "appengine.apps.get",
+	//   "parameterOrder": [
+	//     "appsId"
+	//   ],
+	//   "parameters": {
+	//     "appsId": {
+	//       "description": "Part of `name`. Name of the application to get. For example: \"apps/myapp\".",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "ensureResourcesExist": {
+	//       "description": "Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the `GET` operation. If specified and any resources could not be created, the request will fail with an error code. Additionally, this parameter can cause the request to take longer to complete. Note: This parameter will be deprecated in a future version of the API.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     }
+	//   },
+	//   "path": "v1beta5/apps/{appsId}",
+	//   "response": {
+	//     "$ref": "Application"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "appengine.apps.operations.get":
+
+type AppsOperationsGetCall struct {
+	s            *Service
+	appsId       string
+	operationsId string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets the latest state of a long-running operation. Clients can
+// use this method to poll the operation result at intervals as
+// recommended by the API service.
+func (r *AppsOperationsService) Get(appsId string, operationsId string) *AppsOperationsGetCall {
+	c := &AppsOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.appsId = appsId
+	c.operationsId = operationsId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AppsOperationsGetCall) Fields(s ...googleapi.Field) *AppsOperationsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AppsOperationsGetCall) IfNoneMatch(entityTag string) *AppsOperationsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AppsOperationsGetCall) Context(ctx context.Context) *AppsOperationsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AppsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta5/apps/{appsId}/operations/{operationsId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"appsId":       c.appsId,
+		"operationsId": c.operationsId,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "appengine.apps.operations.get" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AppsOperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+	//   "httpMethod": "GET",
+	//   "id": "appengine.apps.operations.get",
+	//   "parameterOrder": [
+	//     "appsId",
+	//     "operationsId"
+	//   ],
+	//   "parameters": {
+	//     "appsId": {
+	//       "description": "Part of `name`. The name of the operation resource.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "operationsId": {
+	//       "description": "Part of `name`. See documentation of `appsId`.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta5/apps/{appsId}/operations/{operationsId}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "appengine.apps.operations.list":
+
+type AppsOperationsListCall struct {
+	s            *Service
+	appsId       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Lists operations that match the specified filter in the
+// request. If the server doesn't support this method, it returns
+// `UNIMPLEMENTED`. NOTE: the `name` binding below allows API services
+// to override the binding to use different resource name schemes, such
+// as `users/*/operations`.
+func (r *AppsOperationsService) List(appsId string) *AppsOperationsListCall {
+	c := &AppsOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.appsId = appsId
+	return c
+}
+
+// Filter sets the optional parameter "filter": The standard list
+// filter.
+func (c *AppsOperationsListCall) Filter(filter string) *AppsOperationsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The standard list
+// page size.
+func (c *AppsOperationsListCall) PageSize(pageSize int64) *AppsOperationsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The standard list
+// page token.
+func (c *AppsOperationsListCall) PageToken(pageToken string) *AppsOperationsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AppsOperationsListCall) Fields(s ...googleapi.Field) *AppsOperationsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AppsOperationsListCall) IfNoneMatch(entityTag string) *AppsOperationsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AppsOperationsListCall) Context(ctx context.Context) *AppsOperationsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AppsOperationsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta5/apps/{appsId}/operations")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"appsId": c.appsId,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "appengine.apps.operations.list" call.
+// Exactly one of *ListOperationsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListOperationsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AppsOperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListOperationsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. NOTE: the `name` binding below allows API services to override the binding to use different resource name schemes, such as `users/*/operations`.",
+	//   "httpMethod": "GET",
+	//   "id": "appengine.apps.operations.list",
+	//   "parameterOrder": [
+	//     "appsId"
+	//   ],
+	//   "parameters": {
+	//     "appsId": {
+	//       "description": "Part of `name`. The name of the operation collection.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "filter": {
+	//       "description": "The standard list filter.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The standard list page size.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The standard list page token.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta5/apps/{appsId}/operations",
+	//   "response": {
+	//     "$ref": "ListOperationsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *AppsOperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "appengine.apps.services.delete":
+
+type AppsServicesDeleteCall struct {
+	s          *Service
+	appsId     string
+	servicesId string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes a service and all enclosed versions.
+func (r *AppsServicesService) Delete(appsId string, servicesId string) *AppsServicesDeleteCall {
+	c := &AppsServicesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.appsId = appsId
+	c.servicesId = servicesId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AppsServicesDeleteCall) Fields(s ...googleapi.Field) *AppsServicesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AppsServicesDeleteCall) Context(ctx context.Context) *AppsServicesDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AppsServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta5/apps/{appsId}/services/{servicesId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"appsId":     c.appsId,
+		"servicesId": c.servicesId,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "appengine.apps.services.delete" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AppsServicesDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes a service and all enclosed versions.",
+	//   "httpMethod": "DELETE",
+	//   "id": "appengine.apps.services.delete",
+	//   "parameterOrder": [
+	//     "appsId",
+	//     "servicesId"
+	//   ],
+	//   "parameters": {
+	//     "appsId": {
+	//       "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp/services/default\".",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "servicesId": {
+	//       "description": "Part of `name`. See documentation of `appsId`.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta5/apps/{appsId}/services/{servicesId}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "appengine.apps.services.get":
+
+type AppsServicesGetCall struct {
+	s            *Service
+	appsId       string
+	servicesId   string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets the current configuration of the service.
+func (r *AppsServicesService) Get(appsId string, servicesId string) *AppsServicesGetCall {
+	c := &AppsServicesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.appsId = appsId
+	c.servicesId = servicesId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AppsServicesGetCall) Fields(s ...googleapi.Field) *AppsServicesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AppsServicesGetCall) IfNoneMatch(entityTag string) *AppsServicesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AppsServicesGetCall) Context(ctx context.Context) *AppsServicesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AppsServicesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta5/apps/{appsId}/services/{servicesId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"appsId":     c.appsId,
+		"servicesId": c.servicesId,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "appengine.apps.services.get" call.
+// Exactly one of *Service1 or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Service1.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AppsServicesGetCall) Do(opts ...googleapi.CallOption) (*Service1, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Service1{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the current configuration of the service.",
+	//   "httpMethod": "GET",
+	//   "id": "appengine.apps.services.get",
+	//   "parameterOrder": [
+	//     "appsId",
+	//     "servicesId"
+	//   ],
+	//   "parameters": {
+	//     "appsId": {
+	//       "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp/services/default\".",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "servicesId": {
+	//       "description": "Part of `name`. See documentation of `appsId`.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta5/apps/{appsId}/services/{servicesId}",
+	//   "response": {
+	//     "$ref": "Service"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "appengine.apps.services.list":
+
+type AppsServicesListCall struct {
+	s            *Service
+	appsId       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Lists all the services in the application.
+func (r *AppsServicesService) List(appsId string) *AppsServicesListCall {
+	c := &AppsServicesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.appsId = appsId
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Maximum results to
+// return per page.
+func (c *AppsServicesListCall) PageSize(pageSize int64) *AppsServicesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Continuation token
+// for fetching the next page of results.
+func (c *AppsServicesListCall) PageToken(pageToken string) *AppsServicesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AppsServicesListCall) Fields(s ...googleapi.Field) *AppsServicesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AppsServicesListCall) IfNoneMatch(entityTag string) *AppsServicesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AppsServicesListCall) Context(ctx context.Context) *AppsServicesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AppsServicesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta5/apps/{appsId}/services")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"appsId": c.appsId,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "appengine.apps.services.list" call.
+// Exactly one of *ListServicesResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListServicesResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AppsServicesListCall) Do(opts ...googleapi.CallOption) (*ListServicesResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListServicesResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists all the services in the application.",
+	//   "httpMethod": "GET",
+	//   "id": "appengine.apps.services.list",
+	//   "parameterOrder": [
+	//     "appsId"
+	//   ],
+	//   "parameters": {
+	//     "appsId": {
+	//       "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp\".",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Maximum results to return per page.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Continuation token for fetching the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta5/apps/{appsId}/services",
+	//   "response": {
+	//     "$ref": "ListServicesResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *AppsServicesListCall) Pages(ctx context.Context, f func(*ListServicesResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "appengine.apps.services.patch":
+
+type AppsServicesPatchCall struct {
+	s          *Service
+	appsId     string
+	servicesId string
+	service    *Service
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Patch: Updates the configuration of the specified service.
+func (r *AppsServicesService) Patch(appsId string, servicesId string, service *Service) *AppsServicesPatchCall {
+	c := &AppsServicesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.appsId = appsId
+	c.servicesId = servicesId
+	c.service = service
+	return c
+}
+
+// Mask sets the optional parameter "mask": Standard field mask for the
+// set of fields to be updated.
+func (c *AppsServicesPatchCall) Mask(mask string) *AppsServicesPatchCall {
+	c.urlParams_.Set("mask", mask)
+	return c
+}
+
+// MigrateTraffic sets the optional parameter "migrateTraffic": Whether
+// to use Traffic Migration to shift traffic gradually. Traffic can only
+// be migrated from a single version to another single version.
+func (c *AppsServicesPatchCall) MigrateTraffic(migrateTraffic bool) *AppsServicesPatchCall {
+	c.urlParams_.Set("migrateTraffic", fmt.Sprint(migrateTraffic))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AppsServicesPatchCall) Fields(s ...googleapi.Field) *AppsServicesPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AppsServicesPatchCall) Context(ctx context.Context) *AppsServicesPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AppsServicesPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.service)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta5/apps/{appsId}/services/{servicesId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"appsId":     c.appsId,
+		"servicesId": c.servicesId,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "appengine.apps.services.patch" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AppsServicesPatchCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates the configuration of the specified service.",
+	//   "httpMethod": "PATCH",
+	//   "id": "appengine.apps.services.patch",
+	//   "parameterOrder": [
+	//     "appsId",
+	//     "servicesId"
+	//   ],
+	//   "parameters": {
+	//     "appsId": {
+	//       "description": "Part of `name`. Name of the resource to update. For example: \"apps/myapp/services/default\".",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "mask": {
+	//       "description": "Standard field mask for the set of fields to be updated.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "migrateTraffic": {
+	//       "description": "Whether to use Traffic Migration to shift traffic gradually. Traffic can only be migrated from a single version to another single version.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "servicesId": {
+	//       "description": "Part of `name`. See documentation of `appsId`.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta5/apps/{appsId}/services/{servicesId}",
+	//   "request": {
+	//     "$ref": "Service"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "appengine.apps.services.versions.create":
+
+type AppsServicesVersionsCreateCall struct {
+	s          *Service
+	appsId     string
+	servicesId string
+	version    *Version
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Create: Deploys new code and resource files to a version.
+func (r *AppsServicesVersionsService) Create(appsId string, servicesId string, version *Version) *AppsServicesVersionsCreateCall {
+	c := &AppsServicesVersionsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.appsId = appsId
+	c.servicesId = servicesId
+	c.version = version
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AppsServicesVersionsCreateCall) Fields(s ...googleapi.Field) *AppsServicesVersionsCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AppsServicesVersionsCreateCall) Context(ctx context.Context) *AppsServicesVersionsCreateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AppsServicesVersionsCreateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.version)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta5/apps/{appsId}/services/{servicesId}/versions")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"appsId":     c.appsId,
+		"servicesId": c.servicesId,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "appengine.apps.services.versions.create" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AppsServicesVersionsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deploys new code and resource files to a version.",
+	//   "httpMethod": "POST",
+	//   "id": "appengine.apps.services.versions.create",
+	//   "parameterOrder": [
+	//     "appsId",
+	//     "servicesId"
+	//   ],
+	//   "parameters": {
+	//     "appsId": {
+	//       "description": "Part of `name`. Name of the resource to update. For example: \"apps/myapp/services/default\".",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "servicesId": {
+	//       "description": "Part of `name`. See documentation of `appsId`.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions",
+	//   "request": {
+	//     "$ref": "Version"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "appengine.apps.services.versions.delete":
+
+type AppsServicesVersionsDeleteCall struct {
+	s          *Service
+	appsId     string
+	servicesId string
+	versionsId string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes an existing version.
+func (r *AppsServicesVersionsService) Delete(appsId string, servicesId string, versionsId string) *AppsServicesVersionsDeleteCall {
+	c := &AppsServicesVersionsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.appsId = appsId
+	c.servicesId = servicesId
+	c.versionsId = versionsId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AppsServicesVersionsDeleteCall) Fields(s ...googleapi.Field) *AppsServicesVersionsDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AppsServicesVersionsDeleteCall) Context(ctx context.Context) *AppsServicesVersionsDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AppsServicesVersionsDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"appsId":     c.appsId,
+		"servicesId": c.servicesId,
+		"versionsId": c.versionsId,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "appengine.apps.services.versions.delete" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AppsServicesVersionsDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes an existing version.",
+	//   "httpMethod": "DELETE",
+	//   "id": "appengine.apps.services.versions.delete",
+	//   "parameterOrder": [
+	//     "appsId",
+	//     "servicesId",
+	//     "versionsId"
+	//   ],
+	//   "parameters": {
+	//     "appsId": {
+	//       "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp/services/default/versions/v1\".",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "servicesId": {
+	//       "description": "Part of `name`. See documentation of `appsId`.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "versionsId": {
+	//       "description": "Part of `name`. See documentation of `appsId`.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "appengine.apps.services.versions.get":
+
+type AppsServicesVersionsGetCall struct {
+	s            *Service
+	appsId       string
+	servicesId   string
+	versionsId   string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets application deployment information.
+func (r *AppsServicesVersionsService) Get(appsId string, servicesId string, versionsId string) *AppsServicesVersionsGetCall {
+	c := &AppsServicesVersionsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.appsId = appsId
+	c.servicesId = servicesId
+	c.versionsId = versionsId
+	return c
+}
+
+// View sets the optional parameter "view": Controls the set of fields
+// returned in the `Get` response.
+//
+// Possible values:
+//   "BASIC"
+//   "FULL"
+func (c *AppsServicesVersionsGetCall) View(view string) *AppsServicesVersionsGetCall {
+	c.urlParams_.Set("view", view)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AppsServicesVersionsGetCall) Fields(s ...googleapi.Field) *AppsServicesVersionsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AppsServicesVersionsGetCall) IfNoneMatch(entityTag string) *AppsServicesVersionsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AppsServicesVersionsGetCall) Context(ctx context.Context) *AppsServicesVersionsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AppsServicesVersionsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"appsId":     c.appsId,
+		"servicesId": c.servicesId,
+		"versionsId": c.versionsId,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "appengine.apps.services.versions.get" call.
+// Exactly one of *Version or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Version.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *AppsServicesVersionsGetCall) Do(opts ...googleapi.CallOption) (*Version, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Version{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets application deployment information.",
+	//   "httpMethod": "GET",
+	//   "id": "appengine.apps.services.versions.get",
+	//   "parameterOrder": [
+	//     "appsId",
+	//     "servicesId",
+	//     "versionsId"
+	//   ],
+	//   "parameters": {
+	//     "appsId": {
+	//       "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp/services/default/versions/v1\".",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "servicesId": {
+	//       "description": "Part of `name`. See documentation of `appsId`.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "versionsId": {
+	//       "description": "Part of `name`. See documentation of `appsId`.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "view": {
+	//       "description": "Controls the set of fields returned in the `Get` response.",
+	//       "enum": [
+	//         "BASIC",
+	//         "FULL"
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}",
+	//   "response": {
+	//     "$ref": "Version"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "appengine.apps.services.versions.list":
+
+type AppsServicesVersionsListCall struct {
+	s            *Service
+	appsId       string
+	servicesId   string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Lists the versions of a service.
+func (r *AppsServicesVersionsService) List(appsId string, servicesId string) *AppsServicesVersionsListCall {
+	c := &AppsServicesVersionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.appsId = appsId
+	c.servicesId = servicesId
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Maximum results to
+// return per page.
+func (c *AppsServicesVersionsListCall) PageSize(pageSize int64) *AppsServicesVersionsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Continuation token
+// for fetching the next page of results.
+func (c *AppsServicesVersionsListCall) PageToken(pageToken string) *AppsServicesVersionsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// View sets the optional parameter "view": Controls the set of fields
+// returned in the `List` response.
+//
+// Possible values:
+//   "BASIC"
+//   "FULL"
+func (c *AppsServicesVersionsListCall) View(view string) *AppsServicesVersionsListCall {
+	c.urlParams_.Set("view", view)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AppsServicesVersionsListCall) Fields(s ...googleapi.Field) *AppsServicesVersionsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AppsServicesVersionsListCall) IfNoneMatch(entityTag string) *AppsServicesVersionsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AppsServicesVersionsListCall) Context(ctx context.Context) *AppsServicesVersionsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AppsServicesVersionsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta5/apps/{appsId}/services/{servicesId}/versions")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"appsId":     c.appsId,
+		"servicesId": c.servicesId,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "appengine.apps.services.versions.list" call.
+// Exactly one of *ListVersionsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListVersionsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AppsServicesVersionsListCall) Do(opts ...googleapi.CallOption) (*ListVersionsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListVersionsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists the versions of a service.",
+	//   "httpMethod": "GET",
+	//   "id": "appengine.apps.services.versions.list",
+	//   "parameterOrder": [
+	//     "appsId",
+	//     "servicesId"
+	//   ],
+	//   "parameters": {
+	//     "appsId": {
+	//       "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp/services/default\".",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Maximum results to return per page.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Continuation token for fetching the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "servicesId": {
+	//       "description": "Part of `name`. See documentation of `appsId`.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "view": {
+	//       "description": "Controls the set of fields returned in the `List` response.",
+	//       "enum": [
+	//         "BASIC",
+	//         "FULL"
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions",
+	//   "response": {
+	//     "$ref": "ListVersionsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *AppsServicesVersionsListCall) Pages(ctx context.Context, f func(*ListVersionsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
diff --git a/bigquery/v2/bigquery-api.json b/bigquery/v2/bigquery-api.json
index 6c9d0bc..6438dab 100644
--- a/bigquery/v2/bigquery-api.json
+++ b/bigquery/v2/bigquery-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/eiYk9-Fs-RzXRrghmljT9cKlm2s\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/KhBY9BAZ9f1xpe68E42latOsq24\"",
  "discoveryVersion": "v1",
  "id": "bigquery:v2",
  "name": "bigquery",
  "version": "v2",
- "revision": "20160104",
+ "revision": "20160127",
  "title": "BigQuery API",
  "description": "A data platform for customers to create, manage, share and query data.",
  "ownerDomain": "google.com",
@@ -744,7 +744,7 @@
     },
     "tableDefinitions": {
      "type": "object",
-     "description": "[Experimental] If querying an external data source outside of BigQuery, describes the data format, location and other properties of the data source. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.",
+     "description": "[Optional] If querying an external data source outside of BigQuery, describes the data format, location and other properties of the data source. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.",
      "additionalProperties": {
       "$ref": "ExternalDataConfiguration"
      }
@@ -1240,7 +1240,7 @@
     },
     "externalDataConfiguration": {
      "$ref": "ExternalDataConfiguration",
-     "description": "[Experimental] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table."
+     "description": "[Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table."
     },
     "friendlyName": {
      "type": "string",
diff --git a/bigquery/v2/bigquery-gen.go b/bigquery/v2/bigquery-gen.go
index e694529..968030c 100644
--- a/bigquery/v2/bigquery-gen.go
+++ b/bigquery/v2/bigquery-gen.go
@@ -1026,7 +1026,7 @@
 	// Query: [Required] BigQuery SQL query to execute.
 	Query string `json:"query,omitempty"`
 
-	// TableDefinitions: [Experimental] If querying an external data source
+	// TableDefinitions: [Optional] If querying an external data source
 	// outside of BigQuery, describes the data format, location and other
 	// properties of the data source. By defining these properties, the data
 	// source can then be queried as if it were a standard BigQuery table.
@@ -1644,7 +1644,7 @@
 	// reclaimed.
 	ExpirationTime int64 `json:"expirationTime,omitempty,string"`
 
-	// ExternalDataConfiguration: [Experimental] Describes the data format,
+	// ExternalDataConfiguration: [Optional] Describes the data format,
 	// location, and other properties of a table stored outside of BigQuery.
 	// By defining these properties, the data source can then be queried as
 	// if it were a standard BigQuery table.
diff --git a/books/v1/books-api.json b/books/v1/books-api.json
index 8d4dbca..da7ffaf 100644
--- a/books/v1/books-api.json
+++ b/books/v1/books-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/Sd6TkNfEPQyYlkSQMdb5D7dH98E\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/vRAufP6uKRoBM4DQ7BpgqL4krnY\"",
  "discoveryVersion": "v1",
  "id": "books:v1",
  "name": "books",
  "version": "v1",
- "revision": "20151106",
+ "revision": "20151218",
  "title": "Books API",
  "description": "Lets you search for books and manage your Google Books library.",
  "ownerDomain": "google.com",
@@ -1141,6 +1141,10 @@
     "body": {
      "type": "string"
     },
+    "dont_show_notification": {
+     "type": "boolean",
+     "default": "false"
+    },
     "iconUrl": {
      "type": "string"
     },
@@ -1152,6 +1156,9 @@
     "notification_type": {
      "type": "string"
     },
+    "pcampaign_id": {
+     "type": "string"
+    },
     "show_notification_settings_action": {
      "type": "boolean"
     },
@@ -1363,6 +1370,9 @@
        "seriesId": {
         "type": "string"
        },
+       "seriesType": {
+        "type": "string"
+       },
        "title": {
         "type": "string"
        }
@@ -1695,6 +1705,11 @@
      "type": "object",
      "description": "User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)",
      "properties": {
+      "acquiredTime": {
+       "type": "string",
+       "description": "Timestamp when this volume was acquired by the user. (RFC 3339 UTC date-time format) Acquiring includes purchase, user upload, receiving family sharing, etc.",
+       "format": "date-time"
+      },
       "acquisitionType": {
        "type": "integer",
        "description": "How this volume was acquired.",
@@ -1726,6 +1741,18 @@
        "description": "Whether this volume is purchased, sample, pd download etc.",
        "format": "int32"
       },
+      "isFamilySharedFromUser": {
+       "type": "boolean",
+       "description": "Whether or not the user shared this volume with the family."
+      },
+      "isFamilySharedToUser": {
+       "type": "boolean",
+       "description": "Whether or not the user received this volume through family sharing."
+      },
+      "isFamilySharingAllowed": {
+       "type": "boolean",
+       "description": "Whether or not this volume can be shared with the family by the user. This includes sharing eligibility of both the volume and the user. If the value is true, the user can initiate a family sharing action."
+      },
       "isInMyBooks": {
        "type": "boolean",
        "description": "Whether or not this volume is currently in \"my books.\""
@@ -2964,6 +2991,11 @@
        "repeated": true,
        "location": "query"
       },
+      "includeNonComicsSeries": {
+       "type": "boolean",
+       "description": "Set to true to include non-comics series. Defaults to false.",
+       "location": "query"
+      },
       "locale": {
        "type": "string",
        "description": "ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US.",
@@ -3629,6 +3661,13 @@
        "type": "string",
        "description": "String to identify the originator of this request.",
        "location": "query"
+      },
+      "targetIds": {
+       "type": "string",
+       "description": "List of target ids used for experiments or user segments",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
       }
      },
      "parameterOrder": [
@@ -3745,6 +3784,13 @@
        "type": "string",
        "description": "String to identify the originator of this request.",
        "location": "query"
+      },
+      "targetIds": {
+       "type": "string",
+       "description": "List of target ids used for experiments or user segments",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
       }
      },
      "response": {
@@ -3981,6 +4027,11 @@
        "description": "ISO-3166-1 code to override the IP-based location.",
        "location": "query"
       },
+      "includeNonComicsSeries": {
+       "type": "boolean",
+       "description": "Set to true to include non-comics series. Defaults to false.",
+       "location": "query"
+      },
       "partner": {
        "type": "string",
        "description": "Brand results for partner ID.",
diff --git a/books/v1/books-gen.go b/books/v1/books-gen.go
index 280dfa5..dfaa137 100644
--- a/books/v1/books-gen.go
+++ b/books/v1/books-gen.go
@@ -1848,6 +1848,8 @@
 type Notification struct {
 	Body string `json:"body,omitempty"`
 
+	DontShowNotification bool `json:"dont_show_notification,omitempty"`
+
 	IconUrl string `json:"iconUrl,omitempty"`
 
 	// Kind: Resource type.
@@ -1855,6 +1857,8 @@
 
 	NotificationType string `json:"notification_type,omitempty"`
 
+	PcampaignId string `json:"pcampaign_id,omitempty"`
+
 	ShowNotificationSettingsAction bool `json:"show_notification_settings_action,omitempty"`
 
 	TargetUrl string `json:"targetUrl,omitempty"`
@@ -2158,6 +2162,8 @@
 
 	SeriesId string `json:"seriesId,omitempty"`
 
+	SeriesType string `json:"seriesType,omitempty"`
+
 	Title string `json:"title,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "BannerImageUrl") to
@@ -2779,6 +2785,11 @@
 // VolumeUserInfo: User specific information related to this volume.
 // (e.g. page this user last read or whether they purchased this book)
 type VolumeUserInfo struct {
+	// AcquiredTime: Timestamp when this volume was acquired by the user.
+	// (RFC 3339 UTC date-time format) Acquiring includes purchase, user
+	// upload, receiving family sharing, etc.
+	AcquiredTime string `json:"acquiredTime,omitempty"`
+
 	// AcquisitionType: How this volume was acquired.
 	AcquisitionType int64 `json:"acquisitionType,omitempty"`
 
@@ -2789,6 +2800,20 @@
 	// download etc.
 	EntitlementType int64 `json:"entitlementType,omitempty"`
 
+	// IsFamilySharedFromUser: Whether or not the user shared this volume
+	// with the family.
+	IsFamilySharedFromUser bool `json:"isFamilySharedFromUser,omitempty"`
+
+	// IsFamilySharedToUser: Whether or not the user received this volume
+	// through family sharing.
+	IsFamilySharedToUser bool `json:"isFamilySharedToUser,omitempty"`
+
+	// IsFamilySharingAllowed: Whether or not this volume can be shared with
+	// the family by the user. This includes sharing eligibility of both the
+	// volume and the user. If the value is true, the user can initiate a
+	// family sharing action.
+	IsFamilySharingAllowed bool `json:"isFamilySharingAllowed,omitempty"`
+
 	// IsInMyBooks: Whether or not this volume is currently in "my books."
 	IsInMyBooks bool `json:"isInMyBooks,omitempty"`
 
@@ -2823,7 +2848,7 @@
 
 	UserUploadedVolumeInfo *VolumeUserInfoUserUploadedVolumeInfo `json:"userUploadedVolumeInfo,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "AcquisitionType") to
+	// ForceSendFields is a list of field names (e.g. "AcquiredTime") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -6085,6 +6110,14 @@
 	return c
 }
 
+// IncludeNonComicsSeries sets the optional parameter
+// "includeNonComicsSeries": Set to true to include non-comics series.
+// Defaults to false.
+func (c *MyconfigSyncVolumeLicensesCall) IncludeNonComicsSeries(includeNonComicsSeries bool) *MyconfigSyncVolumeLicensesCall {
+	c.urlParams_.Set("includeNonComicsSeries", fmt.Sprint(includeNonComicsSeries))
+	return c
+}
+
 // Locale sets the optional parameter "locale": ISO-639-1, ISO-3166-1
 // codes for message localization, i.e. en_US.
 func (c *MyconfigSyncVolumeLicensesCall) Locale(locale string) *MyconfigSyncVolumeLicensesCall {
@@ -6200,6 +6233,11 @@
 	//       "repeated": true,
 	//       "type": "string"
 	//     },
+	//     "includeNonComicsSeries": {
+	//       "description": "Set to true to include non-comics series. Defaults to false.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
 	//     "locale": {
 	//       "description": "ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US.",
 	//       "location": "query",
@@ -8392,6 +8430,17 @@
 	return c
 }
 
+// TargetIds sets the optional parameter "targetIds": List of target ids
+// used for experiments or user segments
+func (c *NotificationGetCall) TargetIds(targetIds ...int64) *NotificationGetCall {
+	var targetIds_ []string
+	for _, v := range targetIds {
+		targetIds_ = append(targetIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("targetIds", targetIds_)
+	return c
+}
+
 // Fields allows partial responses to be retrieved. See
 // https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
 // for more information.
@@ -8494,6 +8543,13 @@
 	//       "description": "String to identify the originator of this request.",
 	//       "location": "query",
 	//       "type": "string"
+	//     },
+	//     "targetIds": {
+	//       "description": "List of target ids used for experiments or user segments",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
 	//     }
 	//   },
 	//   "path": "notification/get",
@@ -8882,6 +8938,17 @@
 	return c
 }
 
+// TargetIds sets the optional parameter "targetIds": List of target ids
+// used for experiments or user segments
+func (c *PersonalizedstreamGetCall) TargetIds(targetIds ...int64) *PersonalizedstreamGetCall {
+	var targetIds_ []string
+	for _, v := range targetIds {
+		targetIds_ = append(targetIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("targetIds", targetIds_)
+	return c
+}
+
 // Fields allows partial responses to be retrieved. See
 // https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
 // for more information.
@@ -8988,6 +9055,13 @@
 	//       "description": "String to identify the originator of this request.",
 	//       "location": "query",
 	//       "type": "string"
+	//     },
+	//     "targetIds": {
+	//       "description": "List of target ids used for experiments or user segments",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
 	//     }
 	//   },
 	//   "path": "personalizedstream/get",
@@ -9778,6 +9852,14 @@
 	return c
 }
 
+// IncludeNonComicsSeries sets the optional parameter
+// "includeNonComicsSeries": Set to true to include non-comics series.
+// Defaults to false.
+func (c *VolumesGetCall) IncludeNonComicsSeries(includeNonComicsSeries bool) *VolumesGetCall {
+	c.urlParams_.Set("includeNonComicsSeries", fmt.Sprint(includeNonComicsSeries))
+	return c
+}
+
 // Partner sets the optional parameter "partner": Brand results for
 // partner ID.
 func (c *VolumesGetCall) Partner(partner string) *VolumesGetCall {
@@ -9904,6 +9986,11 @@
 	//       "location": "query",
 	//       "type": "string"
 	//     },
+	//     "includeNonComicsSeries": {
+	//       "description": "Set to true to include non-comics series. Defaults to false.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
 	//     "partner": {
 	//       "description": "Brand results for partner ID.",
 	//       "location": "query",
diff --git a/cloudbuild/v1/cloudbuild-api.json b/cloudbuild/v1/cloudbuild-api.json
new file mode 100644
index 0000000..08c95d7
--- /dev/null
+++ b/cloudbuild/v1/cloudbuild-api.json
@@ -0,0 +1,614 @@
+{
+  "id": "cloudbuild:v1",
+  "auth": {
+    "oauth2": {
+      "scopes": {
+        "https://www.googleapis.com/auth/cloud-platform": {
+          "description": "View and manage your data across Google Cloud Platform services"
+        }
+      }
+    }
+  },
+  "description": "The Google Cloud Container Builder API lets you build container images in the cloud.",
+  "protocol": "rest",
+  "title": "Google Cloud Container Builder API",
+  "resources": {
+    "projects": {
+      "resources": {
+        "builds": {
+          "methods": {
+            "get": {
+              "id": "cloudbuild.projects.builds.get",
+              "response": {
+                "$ref": "Build"
+              },
+              "parameterOrder": [
+                "projectId",
+                "id"
+              ],
+              "description": "Returns information about a previously requested build.\n\nThe Build that is returned includes its status (e.g., success or failure,\nor in-progress), and timing information.",
+              "httpMethod": "GET",
+              "flatPath": "v1/projects/{projectId}/builds/{id}",
+              "parameters": {
+                "id": {
+                  "required": true,
+                  "description": "ID of the build.",
+                  "type": "string",
+                  "location": "path"
+                },
+                "projectId": {
+                  "required": true,
+                  "description": "ID of the project.",
+                  "type": "string",
+                  "location": "path"
+                }
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "path": "v1/projects/{projectId}/builds/{id}"
+            },
+            "create": {
+              "id": "cloudbuild.projects.builds.create",
+              "response": {
+                "$ref": "Operation"
+              },
+              "parameterOrder": [
+                "projectId"
+              ],
+              "description": "Starts a build with the specified configuration.\n\nThe long-running Operation returned by this method will include the ID of\nthe build, which can be passed to GetBuild to determine its status (e.g.,\nsuccess or failure).",
+              "request": {
+                "$ref": "Build"
+              },
+              "httpMethod": "POST",
+              "flatPath": "v1/projects/{projectId}/builds",
+              "parameters": {
+                "projectId": {
+                  "required": true,
+                  "description": "ID of the project.",
+                  "type": "string",
+                  "location": "path"
+                }
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "path": "v1/projects/{projectId}/builds"
+            },
+            "list": {
+              "id": "cloudbuild.projects.builds.list",
+              "response": {
+                "$ref": "ListBuildsResponse"
+              },
+              "parameterOrder": [
+                "projectId"
+              ],
+              "description": "Lists previously requested builds.\n\nPreviously requested builds may still be in-progress, or may have finished\nsuccessfully or unsuccessfully.",
+              "httpMethod": "GET",
+              "flatPath": "v1/projects/{projectId}/builds",
+              "parameters": {
+                "pageSize": {
+                  "description": "Number of results to return in the list.",
+                  "type": "integer",
+                  "location": "query",
+                  "format": "int32"
+                },
+                "pageToken": {
+                  "description": "Token to provide to skip to a particular spot in the list.",
+                  "type": "string",
+                  "location": "query"
+                },
+                "projectId": {
+                  "required": true,
+                  "description": "ID of the project.",
+                  "type": "string",
+                  "location": "path"
+                }
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "path": "v1/projects/{projectId}/builds"
+            },
+            "cancel": {
+              "id": "cloudbuild.projects.builds.cancel",
+              "response": {
+                "$ref": "Build"
+              },
+              "parameterOrder": [
+                "projectId",
+                "id"
+              ],
+              "description": "Cancels a requested build in progress.",
+              "request": {
+                "$ref": "CancelBuildRequest"
+              },
+              "httpMethod": "POST",
+              "flatPath": "v1/projects/{projectId}/builds/{id}:cancel",
+              "parameters": {
+                "id": {
+                  "required": true,
+                  "description": "ID of the build.",
+                  "type": "string",
+                  "location": "path"
+                },
+                "projectId": {
+                  "required": true,
+                  "description": "ID of the project.",
+                  "type": "string",
+                  "location": "path"
+                }
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ],
+              "path": "v1/projects/{projectId}/builds/{id}:cancel"
+            }
+          }
+        }
+      }
+    },
+    "operations": {
+      "methods": {
+        "get": {
+          "id": "cloudbuild.operations.get",
+          "response": {
+            "$ref": "Operation"
+          },
+          "parameterOrder": [
+            "name"
+          ],
+          "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+          "httpMethod": "GET",
+          "flatPath": "v1/operations/{operationsId}",
+          "parameters": {
+            "name": {
+              "required": true,
+              "description": "The name of the operation resource.",
+              "pattern": "^operations/.*$",
+              "type": "string",
+              "location": "path"
+            }
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ],
+          "path": "v1/{+name}"
+        },
+        "list": {
+          "id": "cloudbuild.operations.list",
+          "response": {
+            "$ref": "ListOperationsResponse"
+          },
+          "parameterOrder": [
+            "name"
+          ],
+          "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding below allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`.",
+          "httpMethod": "GET",
+          "flatPath": "v1/operations",
+          "parameters": {
+            "pageSize": {
+              "description": "The standard list page size.",
+              "type": "integer",
+              "location": "query",
+              "format": "int32"
+            },
+            "filter": {
+              "description": "The standard list filter.",
+              "type": "string",
+              "location": "query"
+            },
+            "pageToken": {
+              "description": "The standard list page token.",
+              "type": "string",
+              "location": "query"
+            },
+            "name": {
+              "required": true,
+              "description": "The name of the operation collection.",
+              "pattern": "^operations$",
+              "type": "string",
+              "location": "path"
+            }
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ],
+          "path": "v1/{+name}"
+        }
+      }
+    }
+  },
+  "schemas": {
+    "Status": {
+      "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` which can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting purpose.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "properties": {
+        "code": {
+          "description": "The status code, which should be an enum value of google.rpc.Code.",
+          "type": "integer",
+          "format": "int32"
+        },
+        "details": {
+          "description": "A list of messages that carry the error details.  There will be a\ncommon set of message types for APIs to use.",
+          "type": "array",
+          "items": {
+            "additionalProperties": {
+              "description": "Properties of the object. Contains field @ype with type URL.",
+              "type": "any"
+            },
+            "type": "object"
+          }
+        },
+        "message": {
+          "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+          "type": "string"
+        }
+      },
+      "type": "object",
+      "id": "Status"
+    },
+    "BuildOperationMetadata": {
+      "description": "Metadata for build operations.",
+      "properties": {
+        "build": {
+          "description": "The build that the operation is tracking.",
+          "$ref": "Build"
+        }
+      },
+      "type": "object",
+      "id": "BuildOperationMetadata"
+    },
+    "Source": {
+      "description": "Source describes the location of the source in a supported storage\nservice.",
+      "properties": {
+        "storageSource": {
+          "description": "If provided, get the source from this location in in Google Cloud Storage.",
+          "$ref": "StorageSource"
+        }
+      },
+      "type": "object",
+      "id": "Source"
+    },
+    "Operation": {
+      "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+      "properties": {
+        "error": {
+          "description": "The error result of the operation in case of failure.",
+          "$ref": "Status"
+        },
+        "done": {
+          "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.",
+          "type": "boolean"
+        },
+        "response": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @ype with type URL.",
+            "type": "any"
+          },
+          "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+          "type": "object"
+        },
+        "metadata": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @ype with type URL.",
+            "type": "any"
+          },
+          "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+          "type": "object"
+        },
+        "name": {
+          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping above, the\n`name` should have the format of `operations/some/unique/name`.",
+          "type": "string"
+        }
+      },
+      "type": "object",
+      "id": "Operation"
+    },
+    "BuiltImage": {
+      "description": "BuiltImage describes an image built by the pipeline.",
+      "properties": {
+        "digest": {
+          "description": "Docker Registry 2.0 digest.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Name used to push the container image to Google Container Registry, as\npresented to `docker push`.",
+          "type": "string"
+        }
+      },
+      "type": "object",
+      "id": "BuiltImage"
+    },
+    "StorageSource": {
+      "description": "StorageSource describes the location of the source in an archive file in\nGoogle Cloud Storage.",
+      "properties": {
+        "bucket": {
+          "description": "Google Cloud Storage bucket containing source (see\n[Bucket Name\nRequirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).",
+          "type": "string"
+        },
+        "object": {
+          "description": "Google Cloud Storage object containing source.\n\nThis object must be a gzipped archive file (.tar.gz) containing source to\nbuild.",
+          "type": "string"
+        }
+      },
+      "type": "object",
+      "id": "StorageSource"
+    },
+    "Results": {
+      "description": "Results describes the artifacts created by the build pipeline.",
+      "properties": {
+        "images": {
+          "description": "Images that were built as a part of the build.",
+          "type": "array",
+          "items": {
+            "$ref": "BuiltImage"
+          }
+        }
+      },
+      "type": "object",
+      "id": "Results"
+    },
+    "Build": {
+      "description": "A build resource in the Container Builder API.\n\nAt a high level, a Build describes where to find source code, how to build\nit (for example, the builder image to run on the source), and what tag to\napply to the built image when it is pushed to Google Container Registry.",
+      "properties": {
+        "id": {
+          "description": "Unique identifier of the build.\n@OutputOnly",
+          "type": "string"
+        },
+        "results": {
+          "description": "Results of the build.\n@OutputOnly",
+          "$ref": "Results"
+        },
+        "status": {
+          "enum": [
+            "STATUS_UNKNOWN",
+            "QUEUED",
+            "WORKING",
+            "SUCCESS",
+            "FAILURE",
+            "INTERNAL_ERROR",
+            "TIMEOUT",
+            "CANCELLED"
+          ],
+          "description": "Status of the build.\n@OutputOnly",
+          "enumDescriptions": [
+            "Status of the build is unknown.",
+            "Build is queued, work has not yet begun.",
+            "Build is being executed.",
+            "Build finished successfully.",
+            "Build failed to complete successfully.",
+            "Build failed due to an internal cause.",
+            "Build took longer than was allowed.",
+            "Build was canceled by a user."
+          ],
+          "type": "string"
+        },
+        "finishTime": {
+          "description": "Time at whihc execution of the build was finished.\n@OutputOnly",
+          "type": "string",
+          "format": "google-datetime"
+        },
+        "timeout": {
+          "description": "Amount of time that this build should be allowed to run, to second\ngranularity. If this amount of time elapses, work on the build will cease\nand the build status will be TIMEOUT.\n\nDefault time is ten minutes.",
+          "type": "string",
+          "format": "google-duration"
+        },
+        "steps": {
+          "description": "Describes the operations to be performed on the workspace.",
+          "type": "array",
+          "items": {
+            "$ref": "BuildStep"
+          }
+        },
+        "source": {
+          "description": "Describes where to find the source files to build.",
+          "$ref": "Source"
+        },
+        "createTime": {
+          "description": "Time at which the build was created.\n@OutputOnly",
+          "type": "string",
+          "format": "google-datetime"
+        },
+        "images": {
+          "description": "List of images expected to be built and pushed to Google Container\nRegistry. If an image is listed here and the image is not produced by\none of the build steps, the build will fail. Any images present when\nthe build steps are complete will be pushed to Container Registry.",
+          "type": "array",
+          "items": {
+            "type": "string"
+          }
+        },
+        "startTime": {
+          "description": "Time at which execution of the build was started.\n@OutputOnly",
+          "type": "string",
+          "format": "google-datetime"
+        },
+        "logsBucket": {
+          "description": "Google Cloud Storage bucket where logs should be written (see\n[Bucket Name\nRequirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).\nLogs file names will be of the format `${logs_bucket}/log-${build_id}.txt`.",
+          "type": "string"
+        },
+        "projectId": {
+          "description": "ID of the project.\n@OutputOnly.",
+          "type": "string"
+        }
+      },
+      "type": "object",
+      "id": "Build"
+    },
+    "CancelBuildRequest": {
+      "description": "Request to cancel an ongoing build.",
+      "properties": {},
+      "type": "object",
+      "id": "CancelBuildRequest"
+    },
+    "ListOperationsResponse": {
+      "description": "The response message for Operations.ListOperations.",
+      "properties": {
+        "nextPageToken": {
+          "description": "The standard List next-page token.",
+          "type": "string"
+        },
+        "operations": {
+          "description": "A list of operations that matches the specified filter in the request.",
+          "type": "array",
+          "items": {
+            "$ref": "Operation"
+          }
+        }
+      },
+      "type": "object",
+      "id": "ListOperationsResponse"
+    },
+    "BuildStep": {
+      "description": "BuildStep describes a step to perform in the build pipeline.",
+      "properties": {
+        "args": {
+          "description": "Command-line arguments to use when running this step's container.",
+          "type": "array",
+          "items": {
+            "type": "string"
+          }
+        },
+        "dir": {
+          "description": "Working directory (relative to project source root) to use when running\nthis operation's container.",
+          "type": "string"
+        },
+        "env": {
+          "description": "Additional environment variables to set for this step's container.",
+          "type": "array",
+          "items": {
+            "type": "string"
+          }
+        },
+        "name": {
+          "description": "Name of the container image to use for creating this stage in the\npipeline, as presented to `docker pull`.",
+          "type": "string"
+        }
+      },
+      "type": "object",
+      "id": "BuildStep"
+    },
+    "ListBuildsResponse": {
+      "description": "Response including listed builds.",
+      "properties": {
+        "nextPageToken": {
+          "description": "Token to receive the next page of results.",
+          "type": "string"
+        },
+        "builds": {
+          "description": "Builds will be sorted by create_time, descending.",
+          "type": "array",
+          "items": {
+            "$ref": "Build"
+          }
+        }
+      },
+      "type": "object",
+      "id": "ListBuildsResponse"
+    }
+  },
+  "revision": "20160202",
+  "basePath": "",
+  "icons": {
+    "x32": "http://www.google.com/images/icons/product/search-32.gif",
+    "x16": "http://www.google.com/images/icons/product/search-16.gif"
+  },
+  "version_module": "True",
+  "discoveryVersion": "v1",
+  "parameters": {
+    "access_token": {
+      "description": "OAuth access token.",
+      "location": "query",
+      "type": "string"
+    },
+    "prettyPrint": {
+      "default": "true",
+      "description": "Returns response with indentations and line breaks.",
+      "location": "query",
+      "type": "boolean"
+    },
+    "key": {
+      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+      "location": "query",
+      "type": "string"
+    },
+    "quotaUser": {
+      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+      "location": "query",
+      "type": "string"
+    },
+    "pp": {
+      "default": "true",
+      "description": "Pretty-print response.",
+      "location": "query",
+      "type": "boolean"
+    },
+    "fields": {
+      "description": "Selector specifying which fields to include in a partial response.",
+      "location": "query",
+      "type": "string"
+    },
+    "alt": {
+      "description": "Data format for response.",
+      "location": "query",
+      "enum": [
+        "json",
+        "media",
+        "proto"
+      ],
+      "default": "json",
+      "enumDescriptions": [
+        "Responses with Content-Type of application/json",
+        "Media download with context-dependent Content-Type",
+        "Responses with Content-Type of application/x-protobuf"
+      ],
+      "type": "string"
+    },
+    "$.xgafv": {
+      "enum": [
+        "1",
+        "2"
+      ],
+      "description": "V1 error format.",
+      "enumDescriptions": [
+        "v1 error format",
+        "v2 error format"
+      ],
+      "location": "query",
+      "type": "string"
+    },
+    "callback": {
+      "description": "JSONP",
+      "location": "query",
+      "type": "string"
+    },
+    "uploadType": {
+      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    },
+    "oauth_token": {
+      "description": "OAuth 2.0 token for the current user.",
+      "location": "query",
+      "type": "string"
+    },
+    "upload_protocol": {
+      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    },
+    "bearer_token": {
+      "description": "OAuth bearer token.",
+      "location": "query",
+      "type": "string"
+    }
+  },
+  "name": "cloudbuild",
+  "baseUrl": "https://cloudbuild.googleapis.com/",
+  "ownerDomain": "google.com",
+  "documentationLink": "https://cloud.google.com/container-builder/docs/",
+  "batchPath": "batch",
+  "servicePath": "",
+  "ownerName": "Google",
+  "version": "v1",
+  "rootUrl": "https://cloudbuild.googleapis.com/",
+  "kind": "discovery#restDescription"
+}
diff --git a/cloudbuild/v1/cloudbuild-gen.go b/cloudbuild/v1/cloudbuild-gen.go
new file mode 100644
index 0000000..c42c8b6
--- /dev/null
+++ b/cloudbuild/v1/cloudbuild-gen.go
@@ -0,0 +1,1507 @@
+// Package cloudbuild provides access to the Google Cloud Container Builder API.
+//
+// See https://cloud.google.com/container-builder/docs/
+//
+// Usage example:
+//
+//   import "google.golang.org/api/cloudbuild/v1"
+//   ...
+//   cloudbuildService, err := cloudbuild.New(oauthHttpClient)
+package cloudbuild // import "google.golang.org/api/cloudbuild/v1"
+
+import (
+	"bytes"
+	"encoding/json"
+	"errors"
+	"fmt"
+	context "golang.org/x/net/context"
+	ctxhttp "golang.org/x/net/context/ctxhttp"
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+var _ = ctxhttp.Do
+
+const apiId = "cloudbuild:v1"
+const apiName = "cloudbuild"
+const apiVersion = "v1"
+const basePath = "https://cloudbuild.googleapis.com/"
+
+// OAuth2 scopes used by this API.
+const (
+	// View and manage your data across Google Cloud Platform services
+	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
+)
+
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.Operations = NewOperationsService(s)
+	s.Projects = NewProjectsService(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	Operations *OperationsService
+
+	Projects *ProjectsService
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewOperationsService(s *Service) *OperationsService {
+	rs := &OperationsService{s: s}
+	return rs
+}
+
+type OperationsService struct {
+	s *Service
+}
+
+func NewProjectsService(s *Service) *ProjectsService {
+	rs := &ProjectsService{s: s}
+	rs.Builds = NewProjectsBuildsService(s)
+	return rs
+}
+
+type ProjectsService struct {
+	s *Service
+
+	Builds *ProjectsBuildsService
+}
+
+func NewProjectsBuildsService(s *Service) *ProjectsBuildsService {
+	rs := &ProjectsBuildsService{s: s}
+	return rs
+}
+
+type ProjectsBuildsService struct {
+	s *Service
+}
+
+// Build: A build resource in the Container Builder API.
+//
+// At a high level, a Build describes where to find source code, how to
+// build
+// it (for example, the builder image to run on the source), and what
+// tag to
+// apply to the built image when it is pushed to Google Container
+// Registry.
+type Build struct {
+	// CreateTime: Time at which the build was created.
+	// @OutputOnly
+	CreateTime string `json:"createTime,omitempty"`
+
+	// FinishTime: Time at whihc execution of the build was
+	// finished.
+	// @OutputOnly
+	FinishTime string `json:"finishTime,omitempty"`
+
+	// Id: Unique identifier of the build.
+	// @OutputOnly
+	Id string `json:"id,omitempty"`
+
+	// Images: List of images expected to be built and pushed to Google
+	// Container
+	// Registry. If an image is listed here and the image is not produced
+	// by
+	// one of the build steps, the build will fail. Any images present
+	// when
+	// the build steps are complete will be pushed to Container Registry.
+	Images []string `json:"images,omitempty"`
+
+	// LogsBucket: Google Cloud Storage bucket where logs should be written
+	// (see
+	// [Bucket
+	// Name
+	// Requirements](https://cloud.google.com/storage/docs/bucket-naming
+	// #requirements)).
+	// Logs file names will be of the format
+	// `${logs_bucket}/log-${build_id}.txt`.
+	LogsBucket string `json:"logsBucket,omitempty"`
+
+	// ProjectId: ID of the project.
+	// @OutputOnly.
+	ProjectId string `json:"projectId,omitempty"`
+
+	// Results: Results of the build.
+	// @OutputOnly
+	Results *Results `json:"results,omitempty"`
+
+	// Source: Describes where to find the source files to build.
+	Source *Source `json:"source,omitempty"`
+
+	// StartTime: Time at which execution of the build was
+	// started.
+	// @OutputOnly
+	StartTime string `json:"startTime,omitempty"`
+
+	// Status: Status of the build.
+	// @OutputOnly
+	//
+	// Possible values:
+	//   "STATUS_UNKNOWN" - Status of the build is unknown.
+	//   "QUEUED" - Build is queued, work has not yet begun.
+	//   "WORKING" - Build is being executed.
+	//   "SUCCESS" - Build finished successfully.
+	//   "FAILURE" - Build failed to complete successfully.
+	//   "INTERNAL_ERROR" - Build failed due to an internal cause.
+	//   "TIMEOUT" - Build took longer than was allowed.
+	//   "CANCELLED" - Build was canceled by a user.
+	Status string `json:"status,omitempty"`
+
+	// Steps: Describes the operations to be performed on the workspace.
+	Steps []*BuildStep `json:"steps,omitempty"`
+
+	// Timeout: Amount of time that this build should be allowed to run, to
+	// second
+	// granularity. If this amount of time elapses, work on the build will
+	// cease
+	// and the build status will be TIMEOUT.
+	//
+	// Default time is ten minutes.
+	Timeout string `json:"timeout,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CreateTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Build) MarshalJSON() ([]byte, error) {
+	type noMethod Build
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// BuildOperationMetadata: Metadata for build operations.
+type BuildOperationMetadata struct {
+	// Build: The build that the operation is tracking.
+	Build *Build `json:"build,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Build") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *BuildOperationMetadata) MarshalJSON() ([]byte, error) {
+	type noMethod BuildOperationMetadata
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// BuildStep: BuildStep describes a step to perform in the build
+// pipeline.
+type BuildStep struct {
+	// Args: Command-line arguments to use when running this step's
+	// container.
+	Args []string `json:"args,omitempty"`
+
+	// Dir: Working directory (relative to project source root) to use when
+	// running
+	// this operation's container.
+	Dir string `json:"dir,omitempty"`
+
+	// Env: Additional environment variables to set for this step's
+	// container.
+	Env []string `json:"env,omitempty"`
+
+	// Name: Name of the container image to use for creating this stage in
+	// the
+	// pipeline, as presented to `docker pull`.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Args") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *BuildStep) MarshalJSON() ([]byte, error) {
+	type noMethod BuildStep
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// BuiltImage: BuiltImage describes an image built by the pipeline.
+type BuiltImage struct {
+	// Digest: Docker Registry 2.0 digest.
+	Digest string `json:"digest,omitempty"`
+
+	// Name: Name used to push the container image to Google Container
+	// Registry, as
+	// presented to `docker push`.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *BuiltImage) MarshalJSON() ([]byte, error) {
+	type noMethod BuiltImage
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CancelBuildRequest: Request to cancel an ongoing build.
+type CancelBuildRequest struct {
+}
+
+// ListBuildsResponse: Response including listed builds.
+type ListBuildsResponse struct {
+	// Builds: Builds will be sorted by create_time, descending.
+	Builds []*Build `json:"builds,omitempty"`
+
+	// NextPageToken: Token to receive the next page of results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Builds") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ListBuildsResponse) MarshalJSON() ([]byte, error) {
+	type noMethod ListBuildsResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ListOperationsResponse: The response message for
+// Operations.ListOperations.
+type ListOperationsResponse struct {
+	// NextPageToken: The standard List next-page token.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Operations: A list of operations that matches the specified filter in
+	// the request.
+	Operations []*Operation `json:"operations,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ListOperationsResponse) MarshalJSON() ([]byte, error) {
+	type noMethod ListOperationsResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Operation: This resource represents a long-running operation that is
+// the result of a
+// network API call.
+type Operation struct {
+	// Done: If the value is `false`, it means the operation is still in
+	// progress.
+	// If true, the operation is completed, and either `error` or `response`
+	// is
+	// available.
+	Done bool `json:"done,omitempty"`
+
+	// Error: The error result of the operation in case of failure.
+	Error *Status `json:"error,omitempty"`
+
+	// Metadata: Service-specific metadata associated with the operation.
+	// It typically
+	// contains progress information and common metadata such as create
+	// time.
+	// Some services might not provide such metadata.  Any method that
+	// returns a
+	// long-running operation should document the metadata type, if any.
+	Metadata OperationMetadata `json:"metadata,omitempty"`
+
+	// Name: The server-assigned name, which is only unique within the same
+	// service that
+	// originally returns it. If you use the default HTTP mapping above,
+	// the
+	// `name` should have the format of `operations/some/unique/name`.
+	Name string `json:"name,omitempty"`
+
+	// Response: The normal response of the operation in case of success.
+	// If the original
+	// method returns no data on success, such as `Delete`, the response
+	// is
+	// `google.protobuf.Empty`.  If the original method is
+	// standard
+	// `Get`/`Create`/`Update`, the response should be the resource.  For
+	// other
+	// methods, the response should have the type `XxxResponse`, where
+	// `Xxx`
+	// is the original method name.  For example, if the original method
+	// name
+	// is `TakeSnapshot()`, the inferred response type
+	// is
+	// `TakeSnapshotResponse`.
+	Response OperationResponse `json:"response,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Done") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Operation) MarshalJSON() ([]byte, error) {
+	type noMethod Operation
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type OperationMetadata interface{}
+
+type OperationResponse interface{}
+
+// Results: Results describes the artifacts created by the build
+// pipeline.
+type Results struct {
+	// Images: Images that were built as a part of the build.
+	Images []*BuiltImage `json:"images,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Images") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Results) MarshalJSON() ([]byte, error) {
+	type noMethod Results
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Source: Source describes the location of the source in a supported
+// storage
+// service.
+type Source struct {
+	// StorageSource: If provided, get the source from this location in in
+	// Google Cloud Storage.
+	StorageSource *StorageSource `json:"storageSource,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "StorageSource") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Source) MarshalJSON() ([]byte, error) {
+	type noMethod Source
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Status: The `Status` type defines a logical error model that is
+// suitable for different
+// programming environments, including REST APIs and RPC APIs. It is
+// used by
+// [gRPC](https://github.com/grpc). The error model is designed to
+// be:
+//
+// - Simple to use and understand for most users
+// - Flexible enough to meet unexpected needs
+//
+// # Overview
+//
+// The `Status` message contains three pieces of data: error code, error
+// message,
+// and error details. The error code should be an enum value
+// of
+// google.rpc.Code, but it may accept additional error codes if needed.
+// The
+// error message should be a developer-facing English message that
+// helps
+// developers *understand* and *resolve* the error. If a localized
+// user-facing
+// error message is needed, put the localized message in the error
+// details or
+// localize it in the client. The optional error details may contain
+// arbitrary
+// information about the error. There is a predefined set of error
+// detail types
+// in the package `google.rpc` which can be used for common error
+// conditions.
+//
+// # Language mapping
+//
+// The `Status` message is the logical representation of the error
+// model, but it
+// is not necessarily the actual wire format. When the `Status` message
+// is
+// exposed in different client libraries and different wire protocols,
+// it can be
+// mapped differently. For example, it will likely be mapped to some
+// exceptions
+// in Java, but more likely mapped to some error codes in C.
+//
+// # Other uses
+//
+// The error model and the `Status` message can be used in a variety
+// of
+// environments, either with or without APIs, to provide a
+// consistent developer experience across different
+// environments.
+//
+// Example uses of this error model include:
+//
+// - Partial errors. If a service needs to return partial errors to the
+// client,
+//     it may embed the `Status` in the normal response to indicate the
+// partial
+//     errors.
+//
+// - Workflow errors. A typical workflow has multiple steps. Each step
+// may
+//     have a `Status` message for error reporting purpose.
+//
+// - Batch operations. If a client uses batch request and batch
+// response, the
+//     `Status` message should be used directly inside batch response,
+// one for
+//     each error sub-response.
+//
+// - Asynchronous operations. If an API call embeds asynchronous
+// operation
+//     results in its response, the status of those operations should
+// be
+//     represented directly using the `Status` message.
+//
+// - Logging. If some API errors are stored in logs, the message
+// `Status` could
+//     be used directly after any stripping needed for security/privacy
+// reasons.
+type Status struct {
+	// Code: The status code, which should be an enum value of
+	// google.rpc.Code.
+	Code int64 `json:"code,omitempty"`
+
+	// Details: A list of messages that carry the error details.  There will
+	// be a
+	// common set of message types for APIs to use.
+	Details []StatusDetails `json:"details,omitempty"`
+
+	// Message: A developer-facing error message, which should be in
+	// English. Any
+	// user-facing error message should be localized and sent in
+	// the
+	// google.rpc.Status.details field, or localized by the client.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Status) MarshalJSON() ([]byte, error) {
+	type noMethod Status
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type StatusDetails interface{}
+
+// StorageSource: StorageSource describes the location of the source in
+// an archive file in
+// Google Cloud Storage.
+type StorageSource struct {
+	// Bucket: Google Cloud Storage bucket containing source (see
+	// [Bucket
+	// Name
+	// Requirements](https://cloud.google.com/storage/docs/bucket-naming
+	// #requirements)).
+	Bucket string `json:"bucket,omitempty"`
+
+	// Object: Google Cloud Storage object containing source.
+	//
+	// This object must be a gzipped archive file (.tar.gz) containing
+	// source to
+	// build.
+	Object string `json:"object,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Bucket") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *StorageSource) MarshalJSON() ([]byte, error) {
+	type noMethod StorageSource
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// method id "cloudbuild.operations.get":
+
+type OperationsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets the latest state of a long-running operation.  Clients can
+// use this
+// method to poll the operation result at intervals as recommended by
+// the API
+// service.
+func (r *OperationsService) Get(name string) *OperationsGetCall {
+	c := &OperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OperationsGetCall) Fields(s ...googleapi.Field) *OperationsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OperationsGetCall) IfNoneMatch(entityTag string) *OperationsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OperationsGetCall) Context(ctx context.Context) *OperationsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "cloudbuild.operations.get" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *OperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+	//   "flatPath": "v1/operations/{operationsId}",
+	//   "httpMethod": "GET",
+	//   "id": "cloudbuild.operations.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource.",
+	//       "location": "path",
+	//       "pattern": "^operations/.*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudbuild.operations.list":
+
+type OperationsListCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Lists operations that match the specified filter in the
+// request. If the
+// server doesn't support this method, it returns
+// `UNIMPLEMENTED`.
+//
+// NOTE: the `name` binding below allows API services to override the
+// binding
+// to use different resource name schemes, such as `users/*/operations`.
+func (r *OperationsService) List(name string) *OperationsListCall {
+	c := &OperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Filter sets the optional parameter "filter": The standard list
+// filter.
+func (c *OperationsListCall) Filter(filter string) *OperationsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The standard list
+// page size.
+func (c *OperationsListCall) PageSize(pageSize int64) *OperationsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The standard list
+// page token.
+func (c *OperationsListCall) PageToken(pageToken string) *OperationsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OperationsListCall) Fields(s ...googleapi.Field) *OperationsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OperationsListCall) IfNoneMatch(entityTag string) *OperationsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OperationsListCall) Context(ctx context.Context) *OperationsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "cloudbuild.operations.list" call.
+// Exactly one of *ListOperationsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListOperationsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *OperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListOperationsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding below allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`.",
+	//   "flatPath": "v1/operations",
+	//   "httpMethod": "GET",
+	//   "id": "cloudbuild.operations.list",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The standard list filter.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The name of the operation collection.",
+	//       "location": "path",
+	//       "pattern": "^operations$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The standard list page size.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The standard list page token.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "ListOperationsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *OperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "cloudbuild.projects.builds.cancel":
+
+type ProjectsBuildsCancelCall struct {
+	s                  *Service
+	projectId          string
+	id                 string
+	cancelbuildrequest *CancelBuildRequest
+	urlParams_         gensupport.URLParams
+	ctx_               context.Context
+}
+
+// Cancel: Cancels a requested build in progress.
+func (r *ProjectsBuildsService) Cancel(projectId string, id string, cancelbuildrequest *CancelBuildRequest) *ProjectsBuildsCancelCall {
+	c := &ProjectsBuildsCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.projectId = projectId
+	c.id = id
+	c.cancelbuildrequest = cancelbuildrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsBuildsCancelCall) Fields(s ...googleapi.Field) *ProjectsBuildsCancelCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsBuildsCancelCall) Context(ctx context.Context) *ProjectsBuildsCancelCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsBuildsCancelCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.cancelbuildrequest)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/builds/{id}:cancel")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"projectId": c.projectId,
+		"id":        c.id,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "cloudbuild.projects.builds.cancel" call.
+// Exactly one of *Build or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Build.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsBuildsCancelCall) Do(opts ...googleapi.CallOption) (*Build, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Build{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Cancels a requested build in progress.",
+	//   "flatPath": "v1/projects/{projectId}/builds/{id}:cancel",
+	//   "httpMethod": "POST",
+	//   "id": "cloudbuild.projects.builds.cancel",
+	//   "parameterOrder": [
+	//     "projectId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "ID of the build.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "projectId": {
+	//       "description": "ID of the project.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/projects/{projectId}/builds/{id}:cancel",
+	//   "request": {
+	//     "$ref": "CancelBuildRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Build"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudbuild.projects.builds.create":
+
+type ProjectsBuildsCreateCall struct {
+	s          *Service
+	projectId  string
+	build      *Build
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Create: Starts a build with the specified configuration.
+//
+// The long-running Operation returned by this method will include the
+// ID of
+// the build, which can be passed to GetBuild to determine its status
+// (e.g.,
+// success or failure).
+func (r *ProjectsBuildsService) Create(projectId string, build *Build) *ProjectsBuildsCreateCall {
+	c := &ProjectsBuildsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.projectId = projectId
+	c.build = build
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsBuildsCreateCall) Fields(s ...googleapi.Field) *ProjectsBuildsCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsBuildsCreateCall) Context(ctx context.Context) *ProjectsBuildsCreateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsBuildsCreateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.build)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/builds")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"projectId": c.projectId,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "cloudbuild.projects.builds.create" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsBuildsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Starts a build with the specified configuration.\n\nThe long-running Operation returned by this method will include the ID of\nthe build, which can be passed to GetBuild to determine its status (e.g.,\nsuccess or failure).",
+	//   "flatPath": "v1/projects/{projectId}/builds",
+	//   "httpMethod": "POST",
+	//   "id": "cloudbuild.projects.builds.create",
+	//   "parameterOrder": [
+	//     "projectId"
+	//   ],
+	//   "parameters": {
+	//     "projectId": {
+	//       "description": "ID of the project.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/projects/{projectId}/builds",
+	//   "request": {
+	//     "$ref": "Build"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudbuild.projects.builds.get":
+
+type ProjectsBuildsGetCall struct {
+	s            *Service
+	projectId    string
+	id           string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Returns information about a previously requested build.
+//
+// The Build that is returned includes its status (e.g., success or
+// failure,
+// or in-progress), and timing information.
+func (r *ProjectsBuildsService) Get(projectId string, id string) *ProjectsBuildsGetCall {
+	c := &ProjectsBuildsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.projectId = projectId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsBuildsGetCall) Fields(s ...googleapi.Field) *ProjectsBuildsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsBuildsGetCall) IfNoneMatch(entityTag string) *ProjectsBuildsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsBuildsGetCall) Context(ctx context.Context) *ProjectsBuildsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsBuildsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/builds/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"projectId": c.projectId,
+		"id":        c.id,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "cloudbuild.projects.builds.get" call.
+// Exactly one of *Build or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Build.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsBuildsGetCall) Do(opts ...googleapi.CallOption) (*Build, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Build{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Returns information about a previously requested build.\n\nThe Build that is returned includes its status (e.g., success or failure,\nor in-progress), and timing information.",
+	//   "flatPath": "v1/projects/{projectId}/builds/{id}",
+	//   "httpMethod": "GET",
+	//   "id": "cloudbuild.projects.builds.get",
+	//   "parameterOrder": [
+	//     "projectId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "ID of the build.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "projectId": {
+	//       "description": "ID of the project.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/projects/{projectId}/builds/{id}",
+	//   "response": {
+	//     "$ref": "Build"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "cloudbuild.projects.builds.list":
+
+type ProjectsBuildsListCall struct {
+	s            *Service
+	projectId    string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Lists previously requested builds.
+//
+// Previously requested builds may still be in-progress, or may have
+// finished
+// successfully or unsuccessfully.
+func (r *ProjectsBuildsService) List(projectId string) *ProjectsBuildsListCall {
+	c := &ProjectsBuildsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.projectId = projectId
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Number of results to
+// return in the list.
+func (c *ProjectsBuildsListCall) PageSize(pageSize int64) *ProjectsBuildsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token to provide
+// to skip to a particular spot in the list.
+func (c *ProjectsBuildsListCall) PageToken(pageToken string) *ProjectsBuildsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsBuildsListCall) Fields(s ...googleapi.Field) *ProjectsBuildsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsBuildsListCall) IfNoneMatch(entityTag string) *ProjectsBuildsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsBuildsListCall) Context(ctx context.Context) *ProjectsBuildsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsBuildsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/builds")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"projectId": c.projectId,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "cloudbuild.projects.builds.list" call.
+// Exactly one of *ListBuildsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListBuildsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsBuildsListCall) Do(opts ...googleapi.CallOption) (*ListBuildsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListBuildsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists previously requested builds.\n\nPreviously requested builds may still be in-progress, or may have finished\nsuccessfully or unsuccessfully.",
+	//   "flatPath": "v1/projects/{projectId}/builds",
+	//   "httpMethod": "GET",
+	//   "id": "cloudbuild.projects.builds.list",
+	//   "parameterOrder": [
+	//     "projectId"
+	//   ],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "Number of results to return in the list.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token to provide to skip to a particular spot in the list.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "projectId": {
+	//       "description": "ID of the project.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/projects/{projectId}/builds",
+	//   "response": {
+	//     "$ref": "ListBuildsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsBuildsListCall) Pages(ctx context.Context, f func(*ListBuildsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
diff --git a/cloudresourcemanager/v1beta1/cloudresourcemanager-api.json b/cloudresourcemanager/v1beta1/cloudresourcemanager-api.json
index 68380b9..64e4997 100644
--- a/cloudresourcemanager/v1beta1/cloudresourcemanager-api.json
+++ b/cloudresourcemanager/v1beta1/cloudresourcemanager-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/y6j1IphvxRtosL1eW9T-mwhgo2U\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/64r0Ra9DOl7BV1-32e4gD2NffS8\"",
  "discoveryVersion": "v1",
  "id": "cloudresourcemanager:v1beta1",
  "name": "cloudresourcemanager",
  "version": "v1beta1",
- "revision": "20151211",
+ "revision": "20160112",
  "title": "Google Cloud Resource Manager API",
  "description": "The Google Cloud Resource Manager API provides methods for creating, reading, and updating project metadata.",
  "ownerDomain": "google.com",
@@ -261,7 +261,7 @@
    "properties": {
     "permissions": {
      "type": "array",
-     "description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as '*' or 'storage.*') are not allowed.",
+     "description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see IAM Overview.",
      "items": {
       "type": "string"
      }
@@ -488,7 +488,7 @@
      "parameters": {
       "resource": {
        "type": "string",
-       "description": "REQUIRED: The resource for which policy is being requested. `resource` is usually specified as a path, such as, `projects/{project}/zones/{zone}/disks/{disk}`. The format for the path specified in this value is resource specific and is specified in the `getIamPolicy` documentation.",
+       "description": "REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `getIamPolicy` documentation.",
        "required": true,
        "location": "path"
       }
@@ -515,7 +515,7 @@
      "parameters": {
       "resource": {
        "type": "string",
-       "description": "REQUIRED: The resource for which policy is being specified. `resource` is usually specified as a path, such as, `projects/{project}/zones/{zone}/disks/{disk}`. The format for the path specified in this value is resource specific and is specified in the `setIamPolicy` documentation.",
+       "description": "REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `setIamPolicy` documentation.",
        "required": true,
        "location": "path"
       }
@@ -541,7 +541,7 @@
      "parameters": {
       "resource": {
        "type": "string",
-       "description": "REQUIRED: The resource for which policy detail is being requested. `resource` is usually specified as a path, such as, `projects/{project}/zones/{zone}/disks/{disk}`. The format for the path specified in this value is resource specific and is specified in the `testIamPermissions` documentation. rpc.",
+       "description": "REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `testIamPermissions` documentation.",
        "required": true,
        "location": "path"
       }
@@ -653,7 +653,7 @@
      "parameters": {
       "resource": {
        "type": "string",
-       "description": "REQUIRED: The resource for which policy is being specified. `resource` is usually specified as a path, such as, `projects/{project}/zones/{zone}/disks/{disk}`. The format for the path specified in this value is resource specific and is specified in the `setIamPolicy` documentation.",
+       "description": "REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `setIamPolicy` documentation.",
        "required": true,
        "location": "path"
       }
@@ -679,7 +679,7 @@
      "parameters": {
       "resource": {
        "type": "string",
-       "description": "REQUIRED: The resource for which policy is being requested. `resource` is usually specified as a path, such as, `projects/{project}/zones/{zone}/disks/{disk}`. The format for the path specified in this value is resource specific and is specified in the `getIamPolicy` documentation.",
+       "description": "REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `getIamPolicy` documentation.",
        "required": true,
        "location": "path"
       }
@@ -706,7 +706,7 @@
      "parameters": {
       "resource": {
        "type": "string",
-       "description": "REQUIRED: The resource for which policy detail is being requested. `resource` is usually specified as a path, such as, `projects/{project}/zones/{zone}/disks/{disk}`. The format for the path specified in this value is resource specific and is specified in the `testIamPermissions` documentation. rpc.",
+       "description": "REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `testIamPermissions` documentation.",
        "required": true,
        "location": "path"
       }
diff --git a/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go b/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go
index 547b562..71c6773 100644
--- a/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go
@@ -463,7 +463,7 @@
 type TestIamPermissionsRequest struct {
 	// Permissions: The set of permissions to check for the `resource`.
 	// Permissions with wildcards (such as '*' or 'storage.*') are not
-	// allowed.
+	// allowed. For more information see IAM Overview.
 	Permissions []string `json:"permissions,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Permissions") to
@@ -735,7 +735,7 @@
 	//   ],
 	//   "parameters": {
 	//     "resource": {
-	//       "description": "REQUIRED: The resource for which policy is being requested. `resource` is usually specified as a path, such as, `projects/{project}/zones/{zone}/disks/{disk}`. The format for the path specified in this value is resource specific and is specified in the `getIamPolicy` documentation.",
+	//       "description": "REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `getIamPolicy` documentation.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -1040,7 +1040,7 @@
 	//   ],
 	//   "parameters": {
 	//     "resource": {
-	//       "description": "REQUIRED: The resource for which policy is being specified. `resource` is usually specified as a path, such as, `projects/{project}/zones/{zone}/disks/{disk}`. The format for the path specified in this value is resource specific and is specified in the `setIamPolicy` documentation.",
+	//       "description": "REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `setIamPolicy` documentation.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -1162,7 +1162,7 @@
 	//   ],
 	//   "parameters": {
 	//     "resource": {
-	//       "description": "REQUIRED: The resource for which policy detail is being requested. `resource` is usually specified as a path, such as, `projects/{project}/zones/{zone}/disks/{disk}`. The format for the path specified in this value is resource specific and is specified in the `testIamPermissions` documentation. rpc.",
+	//       "description": "REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `testIamPermissions` documentation.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -1767,7 +1767,7 @@
 	//   ],
 	//   "parameters": {
 	//     "resource": {
-	//       "description": "REQUIRED: The resource for which policy is being requested. `resource` is usually specified as a path, such as, `projects/{project}/zones/{zone}/disks/{disk}`. The format for the path specified in this value is resource specific and is specified in the `getIamPolicy` documentation.",
+	//       "description": "REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `getIamPolicy` documentation.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2087,7 +2087,7 @@
 	//   ],
 	//   "parameters": {
 	//     "resource": {
-	//       "description": "REQUIRED: The resource for which policy is being specified. `resource` is usually specified as a path, such as, `projects/{project}/zones/{zone}/disks/{disk}`. The format for the path specified in this value is resource specific and is specified in the `setIamPolicy` documentation.",
+	//       "description": "REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `setIamPolicy` documentation.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2209,7 +2209,7 @@
 	//   ],
 	//   "parameters": {
 	//     "resource": {
-	//       "description": "REQUIRED: The resource for which policy detail is being requested. `resource` is usually specified as a path, such as, `projects/{project}/zones/{zone}/disks/{disk}`. The format for the path specified in this value is resource specific and is specified in the `testIamPermissions` documentation. rpc.",
+	//       "description": "REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `testIamPermissions` documentation.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
diff --git a/compute/v0.beta/compute-api.json b/compute/v0.beta/compute-api.json
index 32a86cc..76b236d 100644
--- a/compute/v0.beta/compute-api.json
+++ b/compute/v0.beta/compute-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/4pHyTlOuQI4TXNZMSSftZD1DFAE\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/4d2gO2u2XoUkLnhU3hGWJa3ZXEk\"",
  "discoveryVersion": "v1",
  "id": "compute:beta",
  "name": "compute",
  "version": "beta",
- "revision": "20160107",
+ "revision": "20160120",
  "title": "Compute Engine API",
  "description": "API for the Google Compute Engine service.",
  "ownerDomain": "google.com",
@@ -766,12 +766,12 @@
     },
     "maxRate": {
      "type": "integer",
-     "description": "The max RPS of the group. Can be used with either balancing mode, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.",
+     "description": "The max requests per second (RPS) of the group. Can be used with either balancing mode, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.",
      "format": "int32"
     },
     "maxRatePerInstance": {
      "type": "number",
-     "description": "The max RPS that a single backed instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.",
+     "description": "The max requests per second (RPS) that a single backed instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.",
      "format": "float"
     },
     "maxUtilization": {
@@ -784,7 +784,7 @@
   "BackendService": {
    "id": "BackendService",
    "type": "object",
-   "description": "A BackendService resource. This resource defines a group of backend virtual machines together with their serving capacity.",
+   "description": "A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity.",
    "properties": {
     "backends": {
      "type": "array",
@@ -830,7 +830,7 @@
     },
     "port": {
      "type": "integer",
-     "description": "Deprecated in favor of port name. The TCP port to connect on the backend. The default value is 80.",
+     "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.",
      "format": "int32"
     },
     "portName": {
@@ -854,7 +854,7 @@
     },
     "timeoutSec": {
      "type": "integer",
-     "description": "How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.",
+     "description": "How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds. Valid range is [1, 86400].",
      "format": "int32"
     }
    }
@@ -1491,7 +1491,7 @@
     },
     "network": {
      "type": "string",
-     "description": "URL of the network resource for this firewall rule. This field is required for creating an instance but optional when creating a firewall rule. If not specified when creating a firewall rule, the default network is used:\nglobal/networks/default\nIf you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs:  \n- https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network \n- projects/myproject/global/networks/my-network \n- global/networks/default"
+     "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used:\nglobal/networks/default\nIf you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs:  \n- https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network \n- projects/myproject/global/networks/my-network \n- global/networks/default"
     },
     "selfLink": {
      "type": "string",
@@ -1615,7 +1615,7 @@
     },
     "target": {
      "type": "string",
-     "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global TargetHttpProxy or TargetHttpsProxy resource."
+     "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global TargetHttpProxy or TargetHttpsProxy resource. The forwarded traffic must be of a type appropriate to the target object. For example, TargetHttpProxy requires HTTP traffic, and TargetHttpsProxy requires HTTPS traffic."
     }
    }
   },
@@ -2196,7 +2196,7 @@
     },
     "description": {
      "type": "string",
-     "description": "An optional textual description of the resource; provided by the client when the resource is created."
+     "description": "An optional description of this resource. Provide this property when you create the resource."
     },
     "disks": {
      "type": "array",
@@ -2207,7 +2207,7 @@
     },
     "id": {
      "type": "string",
-     "description": "[Output Only] Unique identifier for the resource. This identifier is defined by the server.",
+     "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
      "format": "uint64"
     },
     "kind": {
@@ -2242,7 +2242,7 @@
     },
     "name": {
      "type": "string",
-     "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
+     "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
     },
     "networkInterfaces": {
      "type": "array",
@@ -2257,7 +2257,7 @@
     },
     "selfLink": {
      "type": "string",
-     "description": "[Output Only] Server defined URL for this resource."
+     "description": "[Output Only] Server-defined URL for this resource."
     },
     "serviceAccounts": {
      "type": "array",
@@ -2327,11 +2327,11 @@
     },
     "nextPageToken": {
      "type": "string",
-     "description": "[Output Only] A token used to continue a truncated list request."
+     "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
     },
     "selfLink": {
      "type": "string",
-     "description": "[Output Only] Server defined URL for this resource."
+     "description": "[Output Only] Server-defined URL for this resource."
     }
    }
   },
@@ -2392,6 +2392,10 @@
      "description": "[Output Only] The total number of instances in the instance group.",
      "format": "int32"
     },
+    "subnetwork": {
+     "type": "string",
+     "description": "[Output Only] The URL of the subnetwork to which all instances in the instance group belong."
+    },
     "zone": {
      "type": "string",
      "description": "[Output Only] The URL of the zone where the instance group is located."
@@ -2577,7 +2581,7 @@
     },
     "creating": {
      "type": "integer",
-     "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created.",
+     "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create one of these instances, it tries again until it creates the instance successfully.",
      "format": "int32"
     },
     "deleting": {
@@ -3043,11 +3047,11 @@
     },
     "nextPageToken": {
      "type": "string",
-     "description": "[Output Only] A token used to continue a truncated list request."
+     "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
     },
     "selfLink": {
      "type": "string",
-     "description": "[Output Only] Server defined URL for this resource."
+     "description": "[Output Only] Server-defined URL for this resource."
     }
    }
   },
@@ -3573,7 +3577,7 @@
    "properties": {
     "currentAction": {
      "type": "string",
-     "description": "[Output Only] The current action that the managed instance group has scheduled for the instance. Possible values: \n- NONE The instance is running, and the managed instance group does not have any scheduled actions for this instance. \n- CREATING The managed instance group is creating this instance. \n- RECREATING The managed instance group is recreating this instance. \n- DELETING The managed instance group is permanently deleting this instance. \n- ABANDONING The managed instance group is abandoning this instance. The instance will be removed from the instance group and from any target pools that are associated with this group. \n- RESTARTING The managed instance group is restarting the instance. \n- REFRESHING The managed instance group is applying configuration changes to the instance without stopping it. For example, the group can update the target pool list for an instance without stopping that instance.",
+     "description": "[Output Only] The current action that the managed instance group has scheduled for the instance. Possible values: \n- NONE The instance is running, and the managed instance group does not have any scheduled actions for this instance. \n- CREATING The managed instance group is creating this instance. If the group fails to create this instance, it will try again until it is successful. \n- CREATING_WITHOUT_RETRIES The managed instance group is attempting to create this instance only once. If the group fails to create this instance, it does not try again and the group's target_size value is decreased. \n- RECREATING The managed instance group is recreating this instance. \n- DELETING The managed instance group is permanently deleting this instance. \n- ABANDONING The managed instance group is abandoning this instance. The instance will be removed from the instance group and from any target pools that are associated with this group. \n- RESTARTING The managed instance group is restarting the instance. \n- REFRESHING The managed instance group is applying configuration changes to the instance without stopping it. For example, the group can update the target pool list for an instance without stopping that instance.",
      "enum": [
       "ABANDONING",
       "CREATING",
@@ -3740,7 +3744,7 @@
     },
     "autoCreateSubnetworks": {
      "type": "boolean",
-     "description": "When set to true, the subnetwork is created in \"auto subnet mode\". When set to false, the subnetwork is in \"custom subnet mode\".\n\nIn \"auto subnet mode\", a newly created network is assigned the default CIDR of 10.128.0.0/9 and it automatically creates one subnetwork per region."
+     "description": "When set to true, the network is created in \"auto subnet mode\". When set to false, the network is in \"custom subnet mode\".\n\nIn \"auto subnet mode\", a newly created network is assigned the default CIDR of 10.128.0.0/9 and it automatically creates one subnetwork per region."
     },
     "creationTimestamp": {
      "type": "string",
@@ -3819,7 +3823,7 @@
     },
     "subnetwork": {
      "type": "string",
-     "description": "URL of the subnetwork resource for this instance. This should not be provided if the network resource is in legacy mode. If the network is in auto subnet mode, providing the subnetwork is optional. If the network is in custom subnet mode then the field should be specified. If you specify this property, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs:  \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/subnetworks/subnetwork \n- projects/project/zones/zone/networks/network"
+     "description": "The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, do not provide this property. If the network is in auto subnet mode, providing the subnetwork is optional. If the network is in custom subnet mode, then this field should be specified. If you specify this property, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs:  \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/subnetworks/subnetwork \n- zones/zone/subnetworks/subnetwork"
     }
    }
   },
@@ -3908,7 +3912,7 @@
     },
     "httpErrorStatusCode": {
      "type": "integer",
-     "description": "[Output Only] If the operation fails, this field contains the HTTP error message that was returned. For example, a 404 means the resource was not found.",
+     "description": "[Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.",
      "format": "int32"
     },
     "id": {
@@ -3935,12 +3939,12 @@
     },
     "progress": {
      "type": "integer",
-     "description": "[Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should monotonically increase as the operation progresses.",
+     "description": "[Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.",
      "format": "int32"
     },
     "region": {
      "type": "string",
-     "description": "[Output Only] URL of the region where the operation resides. Only applicable for regional resources."
+     "description": "[Output Only] URL of the region where the operation resides. Only available when performing regional operations."
     },
     "selfLink": {
      "type": "string",
@@ -4049,7 +4053,7 @@
     },
     "zone": {
      "type": "string",
-     "description": "[Output Only] URL of the zone where the operation resides."
+     "description": "[Output Only] URL of the zone where the operation resides. Only available when performing per-zone operations."
     }
    }
   },
@@ -4198,7 +4202,7 @@
    "properties": {
     "defaultService": {
      "type": "string",
-     "description": "The URL to the BackendService resource. This will be used if none of the pathRules defined by this PathMatcher is met by the URL's path portion."
+     "description": "The full or partial URL to the BackendService resource. This will be used if none of the pathRules defined by this PathMatcher is matched by the URL's path portion. For example, the following are all valid URLs to a BackendService resource:  \n- https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService \n- compute/v1/projects/project/global/backendServices/backendService \n- global/backendServices/backendService"
     },
     "description": {
      "type": "string",
@@ -4286,7 +4290,7 @@
     },
     "usageExportLocation": {
      "$ref": "UsageExportLocation",
-     "description": "The location in Cloud Storage and naming method of the daily usage report."
+     "description": "The naming prefix for daily usage reports and the Google Cloud Storage bucket where they are stored."
     }
    }
   },
@@ -4478,7 +4482,7 @@
   "Route": {
    "id": "Route",
    "type": "object",
-   "description": "The route resource. A Route is a rule that specifies how certain packets should be handled by the virtual network. Routes are associated with instances by tag and the set of Routes for a particular instance is called its routing table. For each packet leaving a instance, the system searches that instance's routing table for a single best matching Route. Routes match packets by destination IP address, preferring smaller or more specific ranges over larger ones. If there is a tie, the system selects the Route with the smallest priority value. If there is still a tie, it uses the layer three and four packet headers to select just one of the remaining matching Routes. The packet is then forwarded as specified by the nextHop field of the winning Route -- either to another instance destination, a instance gateway or a Google Compute Engien-operated gateway. Packets that do not match any Route in the sending instance's routing table are dropped.",
+   "description": "The route resource. A Route is a rule that specifies how certain packets should be handled by the virtual network. Routes are associated with instances by tags and the set of Routes for a particular instance is called its routing table. For each packet leaving a instance, the system searches that instance's routing table for a single best matching Route. Routes match packets by destination IP address, preferring smaller or more specific ranges over larger ones. If there is a tie, the system selects the Route with the smallest priority value. If there is still a tie, it uses the layer three and four packet headers to select just one of the remaining matching Routes. The packet is then forwarded as specified by the nextHop field of the winning Route -- either to another instance destination, a instance gateway or a Google Compute Engien-operated gateway. Packets that do not match any Route in the sending instance's routing table are dropped.",
    "properties": {
     "creationTimestamp": {
      "type": "string",
@@ -4528,11 +4532,11 @@
     },
     "nextHopGateway": {
      "type": "string",
-     "description": "The URL to a gateway that should handle matching packets. Currently, this is only the internet gateway:  projects/\u003cproject-id\u003e/global/gateways/default-internet-gateway"
+     "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL:  projects/\u003cproject-id\u003e/global/gateways/default-internet-gateway"
     },
     "nextHopInstance": {
      "type": "string",
-     "description": "The fully-qualified URL to an instance that should handle matching packets. For example:\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/"
+     "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example:\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/"
     },
     "nextHopIp": {
      "type": "string",
@@ -4548,7 +4552,7 @@
     },
     "priority": {
      "type": "integer",
-     "description": "Breaks ties between Routes of equal specificity. Routes with smaller values win when tied with routes with larger values. Default value is 1000. A valid range is between 0 and 65535.",
+     "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In the case of two routes with equal prefix length, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.",
      "format": "uint32",
      "annotations": {
       "required": [
@@ -4651,7 +4655,7 @@
     },
     "items": {
      "type": "array",
-     "description": "A list of Route resources.",
+     "description": "[Output Only] A list of Route resources.",
      "items": {
       "$ref": "Route"
      }
@@ -4714,7 +4718,7 @@
     },
     "selfLink": {
      "type": "string",
-     "description": "[Output Only] Server defined URL for the resource."
+     "description": "[Output Only] Server-defined URL for the resource."
     }
    }
   },
@@ -4786,7 +4790,7 @@
     },
     "sourceDisk": {
      "type": "string",
-     "description": "The source disk used to create this snapshot."
+     "description": "[Output Only] The source disk used to create this snapshot."
     },
     "sourceDiskEncryptionKey": {
      "$ref": "CustomerEncryptionKey",
@@ -4844,7 +4848,7 @@
     },
     "items": {
      "type": "array",
-     "description": "A list of Snapshot resources.",
+     "description": "[Output Only] A list of Snapshot resources.",
      "items": {
       "$ref": "Snapshot"
      }
@@ -4867,7 +4871,7 @@
   "SslCertificate": {
    "id": "SslCertificate",
    "type": "object",
-   "description": "An SslCertificate resource. This resource provides a mechanism to upload an SSL key and certificate to global HTTPS loadbalancer to serve secure connections.",
+   "description": "An SslCertificate resource. This resource provides a mechanism to upload an SSL key and certificate to the load balancer to serve secure connections from the user.",
    "properties": {
     "certificate": {
      "type": "string",
@@ -4948,34 +4952,34 @@
     },
     "description": {
      "type": "string",
-     "description": "An optional textual description of the resource; provided by the client when the resource is created."
+     "description": "An optional description of this resource. Provide this property when you create the resource."
     },
     "gatewayAddress": {
      "type": "string",
-     "description": "[Output Only] Gateway address for default routes to addresses outside this Subnetwork."
+     "description": "[Output Only] The gateway address for default routes to reach destination addresses outside this subnetwork."
     },
     "id": {
      "type": "string",
-     "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+     "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
      "format": "uint64"
     },
     "ipCidrRange": {
      "type": "string",
-     "description": "The range of internal addresses that are owned by this Subnetwork; provided by the client when the Subnetwork is created."
+     "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and non-overlapping within a network."
     },
     "kind": {
      "type": "string",
-     "description": "Type of the resource.",
+     "description": "[Output Only] Type of the resource. Always compute#subnetwork for Subnetwork resources.",
      "default": "compute#subnetwork"
     },
     "name": {
      "type": "string",
-     "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+     "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
      "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
     },
     "network": {
      "type": "string",
-     "description": "URL of the network to which this Subnetwork belongs; provided by the client when the Subnetwork is created. Only networks that are in the distributed mode can have Subnetworks."
+     "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. Only networks that are in the distributed mode can have subnetworks."
     },
     "region": {
      "type": "string",
@@ -4993,11 +4997,11 @@
    "properties": {
     "id": {
      "type": "string",
-     "description": "[Output Only] Unique identifier for the resource; defined by the server."
+     "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server."
     },
     "items": {
      "type": "object",
-     "description": "A map of scoped Subnetwork lists.",
+     "description": "[Output] A map of scoped Subnetwork lists.",
      "additionalProperties": {
       "$ref": "SubnetworksScopedList",
       "description": "Name of the scope containing this set of Subnetworks."
@@ -5005,12 +5009,12 @@
     },
     "kind": {
      "type": "string",
-     "description": "Type of resource.",
+     "description": "[Output Only] Type of resource. Always compute#subnetworkAggregatedList for aggregated lists of subnetworks.",
      "default": "compute#subnetworkAggregatedList"
     },
     "nextPageToken": {
      "type": "string",
-     "description": "[Output Only] A token used to continue a truncated list request."
+     "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
     },
     "selfLink": {
      "type": "string",
@@ -5025,7 +5029,7 @@
    "properties": {
     "id": {
      "type": "string",
-     "description": "[Output Only] Unique identifier for the resource. Defined by the server."
+     "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server."
     },
     "items": {
      "type": "array",
@@ -5036,12 +5040,12 @@
     },
     "kind": {
      "type": "string",
-     "description": "Type of resource.",
+     "description": "[Output Only] Type of resource. Always compute#subnetworkList for lists of subnetworks.",
      "default": "compute#subnetworkList"
     },
     "nextPageToken": {
      "type": "string",
-     "description": "[Output Only] A token used to continue a truncated list request."
+     "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
     },
     "selfLink": {
      "type": "string",
@@ -5055,14 +5059,14 @@
    "properties": {
     "subnetworks": {
      "type": "array",
-     "description": "List of Subnetworks contained in this scope.",
+     "description": "List of subnetworks contained in this scope.",
      "items": {
       "$ref": "Subnetwork"
      }
     },
     "warning": {
      "type": "object",
-     "description": "Informational warning which replaces the list of addresses when the list is empty.",
+     "description": "An informational warning that appears when the list of addresses is empty.",
      "properties": {
       "code": {
        "type": "string",
@@ -5260,7 +5264,7 @@
     },
     "sslCertificates": {
      "type": "array",
-     "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. Currently exactly one SSL certificate must be specified.",
+     "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. Currently exactly one SSL certificate must be specified.",
      "items": {
       "type": "string"
      }
@@ -6200,7 +6204,7 @@
    "properties": {
     "bucketName": {
      "type": "string",
-     "description": "The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This is just the bucket name, with no gs:// or https://storage.googleapis.com/ in front of it."
+     "description": "The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This can either be the bucket name by itself, such as example-bucket, or the bucket name with gs:// or https://storage.googleapis.com/ in front of it, such as gs://example-bucket."
     },
     "reportNamePrefix": {
      "type": "string",
@@ -6241,7 +6245,7 @@
     },
     "localTrafficSelector": {
      "type": "array",
-     "description": "IKE networks to use when establishing the VPN tunnel with peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint.",
+     "description": "Local traffic selector to use when establishing the VPN tunnel with peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint.",
      "items": {
       "type": "string"
      }
@@ -6270,7 +6274,7 @@
     },
     "sharedSecret": {
      "type": "string",
-     "description": "Shared secret used to set the secure session between the GCE VPN gateway and the peer VPN gateway."
+     "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway."
     },
     "sharedSecretHash": {
      "type": "string",
@@ -6572,7 +6576,7 @@
      "id": "compute.addresses.aggregatedList",
      "path": "{project}/aggregated/addresses",
      "httpMethod": "GET",
-     "description": "Retrieves the list of addresses grouped by scope.",
+     "description": "Retrieves an aggregated list of addresses.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -6741,7 +6745,7 @@
      "id": "compute.addresses.list",
      "path": "{project}/regions/{region}/addresses",
      "httpMethod": "GET",
-     "description": "Retrieves the list of address resources contained within the specified region.",
+     "description": "Retrieves a list of address resources contained within the specified region.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -6803,7 +6807,7 @@
      "id": "compute.autoscalers.aggregatedList",
      "path": "{project}/aggregated/autoscalers",
      "httpMethod": "GET",
-     "description": "Retrieves the list of autoscalers grouped by scope.",
+     "description": "Retrieves an aggregated list of autoscalers.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -6972,7 +6976,7 @@
      "id": "compute.autoscalers.list",
      "path": "{project}/zones/{zone}/autoscalers",
      "httpMethod": "GET",
-     "description": "Retrieves the list of autoscaler resources contained within the specified zone.",
+     "description": "Retrieves a list of autoscaler resources contained within the specified zone.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -7223,7 +7227,7 @@
      "id": "compute.backendServices.insert",
      "path": "{project}/global/backendServices",
      "httpMethod": "POST",
-     "description": "Creates a BackendService resource in the specified project using the data included in the request.",
+     "description": "Creates a BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a backend service. Read  Restrictions and Guidelines for more information.",
      "parameters": {
       "project": {
        "type": "string",
@@ -7301,7 +7305,7 @@
      "id": "compute.backendServices.patch",
      "path": "{project}/global/backendServices/{backendService}",
      "httpMethod": "PATCH",
-     "description": "Update the entire content of the BackendService resource. This method supports patch semantics.",
+     "description": "Updates the entire content of the BackendService resource. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information. This method supports patch semantics.",
      "parameters": {
       "backendService": {
        "type": "string",
@@ -7337,7 +7341,7 @@
      "id": "compute.backendServices.update",
      "path": "{project}/global/backendServices/{backendService}",
      "httpMethod": "PUT",
-     "description": "Update the entire content of the BackendService resource.",
+     "description": "Updates the entire content of the BackendService resource. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information.",
      "parameters": {
       "backendService": {
        "type": "string",
@@ -7377,7 +7381,7 @@
      "id": "compute.diskTypes.aggregatedList",
      "path": "{project}/aggregated/diskTypes",
      "httpMethod": "GET",
-     "description": "Retrieves the list of disk type resources grouped by scope.",
+     "description": "Retrieves an aggregated list of disk type resources.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -7469,7 +7473,7 @@
      "id": "compute.diskTypes.list",
      "path": "{project}/zones/{zone}/diskTypes",
      "httpMethod": "GET",
-     "description": "Retrieves the list of disk type resources available to the specified project.",
+     "description": "Retrieves a list of disk type resources available to the specified project.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -7531,7 +7535,7 @@
      "id": "compute.disks.aggregatedList",
      "path": "{project}/aggregated/disks",
      "httpMethod": "GET",
-     "description": "Retrieves the list of persistent disks grouped by scope.",
+     "description": "Retrieves an aggregated list of persistent disks.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -7749,7 +7753,7 @@
      "id": "compute.disks.list",
      "path": "{project}/zones/{zone}/disks",
      "httpMethod": "GET",
-     "description": "Retrieves the list of persistent disks contained within the specified zone.",
+     "description": "Retrieves a list of persistent disks contained within the specified zone.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -8076,7 +8080,7 @@
      "id": "compute.forwardingRules.aggregatedList",
      "path": "{project}/aggregated/forwardingRules",
      "httpMethod": "GET",
-     "description": "Retrieves the list of forwarding rules grouped by scope.",
+     "description": "Retrieves an aggregated list of forwarding rules.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -8245,7 +8249,7 @@
      "id": "compute.forwardingRules.list",
      "path": "{project}/regions/{region}/forwardingRules",
      "httpMethod": "GET",
-     "description": "Retrieves the list of ForwardingRule resources available to the specified project and region.",
+     "description": "Retrieves a list of ForwardingRule resources available to the specified project and region.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -8446,7 +8450,7 @@
      "id": "compute.globalAddresses.list",
      "path": "{project}/global/addresses",
      "httpMethod": "GET",
-     "description": "Retrieves the list of global address resources.",
+     "description": "Retrieves a list of global address resources.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -8595,7 +8599,7 @@
      "id": "compute.globalForwardingRules.list",
      "path": "{project}/global/forwardingRules",
      "httpMethod": "GET",
-     "description": "Retrieves the list of ForwardingRule resources available to the specified project.",
+     "description": "Retrieves a list of ForwardingRule resources available to the specified project.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -8685,7 +8689,7 @@
      "id": "compute.globalOperations.aggregatedList",
      "path": "{project}/aggregated/operations",
      "httpMethod": "GET",
-     "description": "Retrieves the list of all operations grouped by scope.",
+     "description": "Retrieves an aggregated list of all operations.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -8799,7 +8803,7 @@
      "id": "compute.globalOperations.list",
      "path": "{project}/global/operations",
      "httpMethod": "GET",
-     "description": "Retrieves the list of Operation resources contained within the specified project.",
+     "description": "Retrieves a list of Operation resources contained within the specified project.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -9575,7 +9579,7 @@
      "id": "compute.instanceGroupManagers.delete",
      "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
      "httpMethod": "DELETE",
-     "description": "Deletes the specified managed instance group and all of the instances in that group.",
+     "description": "Deletes the specified managed instance group and all of the instances in that group. Note that the instance group must not belong to a backend service. Read  Deleting an instance group for more information.",
      "parameters": {
       "instanceGroupManager": {
        "type": "string",
@@ -10047,7 +10051,7 @@
      "id": "compute.instanceGroups.addInstances",
      "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/addInstances",
      "httpMethod": "POST",
-     "description": "Adds a list of instances to the specified instance group. All of the instances in the instance group must be in the same network/subnetwork.",
+     "description": "Adds a list of instances to the specified instance group. Read  Adding instances for more information.",
      "parameters": {
       "instanceGroup": {
        "type": "string",
@@ -10139,7 +10143,7 @@
      "id": "compute.instanceGroups.delete",
      "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}",
      "httpMethod": "DELETE",
-     "description": "Deletes the specified instance group. The instances in the group are not deleted.",
+     "description": "Deletes the specified instance group. The instances in the group are not deleted. Note that instance group must not belong to a backend service. Read  Deleting an instance group for more information.",
      "parameters": {
       "instanceGroup": {
        "type": "string",
@@ -10532,7 +10536,7 @@
      "id": "compute.instanceTemplates.insert",
      "path": "{project}/global/instanceTemplates",
      "httpMethod": "POST",
-     "description": "Creates an instance template in the specified project using the data that is included in the request.",
+     "description": "Creates an instance template in the specified project using the data that is included in the request. If you are creating a new template to update an existing instance group, your new instance template must use the same network or, if applicable, the same subnetwork as the original template.",
      "parameters": {
       "project": {
        "type": "string",
@@ -11408,7 +11412,7 @@
      "id": "compute.instances.start",
      "path": "{project}/zones/{zone}/instances/{instance}/start",
      "httpMethod": "POST",
-     "description": "This method starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
+     "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
      "parameters": {
       "instance": {
        "type": "string",
@@ -11449,7 +11453,7 @@
      "id": "compute.instances.stop",
      "path": "{project}/zones/{zone}/instances/{instance}/stop",
      "httpMethod": "POST",
-     "description": "This method stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur per-minute, virtual machine usage charges while they are stopped, but any resources that the virtual machine is using, such as persistent disks and static IP addresses,will continue to be charged until they are deleted. For more information, see Stopping an instance.",
+     "description": "Stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur per-minute, virtual machine usage charges while they are stopped, but any resources that the virtual machine is using, such as persistent disks and static IP addresses, will continue to be charged until they are deleted. For more information, see Stopping an instance.",
      "parameters": {
       "instance": {
        "type": "string",
@@ -11532,7 +11536,7 @@
      "id": "compute.machineTypes.aggregatedList",
      "path": "{project}/aggregated/machineTypes",
      "httpMethod": "GET",
-     "description": "Retrieves the list of machine type resources grouped by scope.",
+     "description": "Retrieves an aggregated list of machine type resources.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -11624,7 +11628,7 @@
      "id": "compute.machineTypes.list",
      "path": "{project}/zones/{zone}/machineTypes",
      "httpMethod": "GET",
-     "description": "Retrieves the list of machine type resources available to the specified project.",
+     "description": "Retrieves a list of machine type resources available to the specified project.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -11915,36 +11919,6 @@
       "https://www.googleapis.com/auth/devstorage.read_only",
       "https://www.googleapis.com/auth/devstorage.read_write"
      ]
-    },
-    "setUsageExportCloudStorageBucket": {
-     "id": "compute.projects.setUsageExportCloudStorageBucket",
-     "path": "{project}/setUsageExportCloudStorageBucket",
-     "httpMethod": "POST",
-     "description": "[Deprecated] Use setUsageExportBucket instead.",
-     "parameters": {
-      "project": {
-       "type": "string",
-       "description": "Project ID for this request.",
-       "required": true,
-       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
-       "location": "path"
-      }
-     },
-     "parameterOrder": [
-      "project"
-     ],
-     "request": {
-      "$ref": "UsageExportLocation"
-     },
-     "response": {
-      "$ref": "Operation"
-     },
-     "scopes": [
-      "https://www.googleapis.com/auth/compute",
-      "https://www.googleapis.com/auth/devstorage.full_control",
-      "https://www.googleapis.com/auth/devstorage.read_only",
-      "https://www.googleapis.com/auth/devstorage.read_write"
-     ]
     }
    }
   },
@@ -12010,7 +11984,7 @@
       },
       "region": {
        "type": "string",
-       "description": "Name of the zone scoping this request.",
+       "description": "Name of the region scoping this request.",
        "required": true,
        "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
        "location": "path"
@@ -12034,7 +12008,7 @@
      "id": "compute.regionOperations.list",
      "path": "{project}/regions/{region}/operations",
      "httpMethod": "GET",
-     "description": "Retrieves the list of Operation resources contained within the specified region.",
+     "description": "Retrieves a list of Operation resources contained within the specified region.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -12603,7 +12577,7 @@
      "id": "compute.subnetworks.aggregatedList",
      "path": "{project}/aggregated/subnetworks",
      "httpMethod": "GET",
-     "description": "Retrieves the list of Subnetworks grouped by scope.",
+     "description": "Retrieves an aggregated list of subnetworks.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -12653,7 +12627,7 @@
      "id": "compute.subnetworks.delete",
      "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
      "httpMethod": "DELETE",
-     "description": "Deletes the specified Subnetwork resource.",
+     "description": "Deletes the specified subnetwork.",
      "parameters": {
       "project": {
        "type": "string",
@@ -12694,7 +12668,7 @@
      "id": "compute.subnetworks.get",
      "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
      "httpMethod": "GET",
-     "description": "Returns the specified Subnetwork resource.",
+     "description": "Returns the specified subnetwork.",
      "parameters": {
       "project": {
        "type": "string",
@@ -12736,7 +12710,7 @@
      "id": "compute.subnetworks.insert",
      "path": "{project}/regions/{region}/subnetworks",
      "httpMethod": "POST",
-     "description": "Creates a Subnetwork resource in the specified project using the data included in the request.",
+     "description": "Creates a subnetwork in the specified project using the data included in the request.",
      "parameters": {
       "project": {
        "type": "string",
@@ -12772,7 +12746,7 @@
      "id": "compute.subnetworks.list",
      "path": "{project}/regions/{region}/subnetworks",
      "httpMethod": "GET",
-     "description": "Retrieves the list of Subnetwork resources available to the specified project.",
+     "description": "Retrieves a list of subnetworks available to the specified project.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -13240,7 +13214,7 @@
      "id": "compute.targetInstances.aggregatedList",
      "path": "{project}/aggregated/targetInstances",
      "httpMethod": "GET",
-     "description": "Retrieves the list of target instances grouped by scope.",
+     "description": "Retrieves an aggregated list of target instances.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -13409,7 +13383,7 @@
      "id": "compute.targetInstances.list",
      "path": "{project}/zones/{zone}/targetInstances",
      "httpMethod": "GET",
-     "description": "Retrieves the list of TargetInstance resources available to the specified project and zone.",
+     "description": "Retrieves a list of TargetInstance resources available to the specified project and zone.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -13557,7 +13531,7 @@
      "id": "compute.targetPools.aggregatedList",
      "path": "{project}/aggregated/targetPools",
      "httpMethod": "GET",
-     "description": "Retrieves the list of target pools grouped by scope.",
+     "description": "Retrieves an aggregated list of target pools.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -13690,7 +13664,7 @@
      "id": "compute.targetPools.getHealth",
      "path": "{project}/regions/{region}/targetPools/{targetPool}/getHealth",
      "httpMethod": "POST",
-     "description": "Gets the most recent health check results for each IP for the given instance that is referenced by given TargetPool.",
+     "description": "Gets the most recent health check results for each IP for the given instance that is referenced by the given TargetPool.",
      "parameters": {
       "project": {
        "type": "string",
@@ -13770,7 +13744,7 @@
      "id": "compute.targetPools.list",
      "path": "{project}/regions/{region}/targetPools",
      "httpMethod": "GET",
-     "description": "Retrieves the list of TargetPool resources available to the specified project and region.",
+     "description": "Retrieves a list of TargetPool resources available to the specified project and region.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -13968,7 +13942,7 @@
      "id": "compute.targetVpnGateways.aggregatedList",
      "path": "{project}/aggregated/targetVpnGateways",
      "httpMethod": "GET",
-     "description": "Retrieves the list of target VPN gateways grouped by scope.",
+     "description": "Retrieves an aggregated list of target VPN gateways .",
      "parameters": {
       "filter": {
        "type": "string",
@@ -14137,7 +14111,7 @@
      "id": "compute.targetVpnGateways.list",
      "path": "{project}/regions/{region}/targetVpnGateways",
      "httpMethod": "GET",
-     "description": "Retrieves the list of TargetVpnGateway resources available to the specified project and region.",
+     "description": "Retrieves a list of TargetVpnGateway resources available to the specified project and region.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -14344,7 +14318,7 @@
      "id": "compute.urlMaps.patch",
      "path": "{project}/global/urlMaps/{urlMap}",
      "httpMethod": "PATCH",
-     "description": "Update the entire content of the UrlMap resource. This method supports patch semantics.",
+     "description": "Updates the entire content of the UrlMap resource. This method supports patch semantics.",
      "parameters": {
       "project": {
        "type": "string",
@@ -14380,7 +14354,7 @@
      "id": "compute.urlMaps.update",
      "path": "{project}/global/urlMaps/{urlMap}",
      "httpMethod": "PUT",
-     "description": "Update the entire content of the UrlMap resource.",
+     "description": "Updates the entire content of the UrlMap resource.",
      "parameters": {
       "project": {
        "type": "string",
@@ -14416,7 +14390,7 @@
      "id": "compute.urlMaps.validate",
      "path": "{project}/global/urlMaps/{urlMap}/validate",
      "httpMethod": "POST",
-     "description": "Run static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
+     "description": "Runs static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
      "parameters": {
       "project": {
        "type": "string",
@@ -14456,7 +14430,7 @@
      "id": "compute.vpnTunnels.aggregatedList",
      "path": "{project}/aggregated/vpnTunnels",
      "httpMethod": "GET",
-     "description": "Retrieves the list of VPN tunnels grouped by scope.",
+     "description": "Retrieves an aggregated list of VPN tunnels.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -14625,7 +14599,7 @@
      "id": "compute.vpnTunnels.list",
      "path": "{project}/regions/{region}/vpnTunnels",
      "httpMethod": "GET",
-     "description": "Retrieves the list of VpnTunnel resources contained in the specified project and region.",
+     "description": "Retrieves a list of VpnTunnel resources contained in the specified project and region.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -14767,7 +14741,7 @@
      "id": "compute.zoneOperations.list",
      "path": "{project}/zones/{zone}/operations",
      "httpMethod": "GET",
-     "description": "Retrieves the list of Operation resources contained within the specified zone.",
+     "description": "Retrieves a list of Operation resources contained within the specified zone.",
      "parameters": {
       "filter": {
        "type": "string",
diff --git a/compute/v0.beta/compute-gen.go b/compute/v0.beta/compute-gen.go
index fd7476c..5d58876 100644
--- a/compute/v0.beta/compute-gen.go
+++ b/compute/v0.beta/compute-gen.go
@@ -1415,15 +1415,15 @@
 	// fully-qualified URL, rather than a partial URL.
 	Group string `json:"group,omitempty"`
 
-	// MaxRate: The max RPS of the group. Can be used with either balancing
-	// mode, but required if RATE mode. For RATE mode, either maxRate or
-	// maxRatePerInstance must be set.
+	// MaxRate: The max requests per second (RPS) of the group. Can be used
+	// with either balancing mode, but required if RATE mode. For RATE mode,
+	// either maxRate or maxRatePerInstance must be set.
 	MaxRate int64 `json:"maxRate,omitempty"`
 
-	// MaxRatePerInstance: The max RPS that a single backed instance can
-	// handle. This is used to calculate the capacity of the group. Can be
-	// used in either balancing mode. For RATE mode, either maxRate or
-	// maxRatePerInstance must be set.
+	// MaxRatePerInstance: The max requests per second (RPS) that a single
+	// backed instance can handle. This is used to calculate the capacity of
+	// the group. Can be used in either balancing mode. For RATE mode,
+	// either maxRate or maxRatePerInstance must be set.
 	MaxRatePerInstance float64 `json:"maxRatePerInstance,omitempty"`
 
 	// MaxUtilization: Used when balancingMode is UTILIZATION. This ratio
@@ -1447,8 +1447,7 @@
 }
 
 // BackendService: A BackendService resource. This resource defines a
-// group of backend virtual machines together with their serving
-// capacity.
+// group of backend virtual machines and their serving capacity.
 type BackendService struct {
 	// Backends: The list of backends that serve this BackendService.
 	Backends []*Backend `json:"backends,omitempty"`
@@ -1490,8 +1489,8 @@
 	// last character, which cannot be a dash.
 	Name string `json:"name,omitempty"`
 
-	// Port: Deprecated in favor of port name. The TCP port to connect on
-	// the backend. The default value is 80.
+	// Port: Deprecated in favor of portName. The TCP port to connect on the
+	// backend. The default value is 80.
 	Port int64 `json:"port,omitempty"`
 
 	// PortName: Name of backend port. The same name should appear in the
@@ -1507,7 +1506,8 @@
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// TimeoutSec: How many seconds to wait for the backend before
-	// considering it a failed request. Default is 30 seconds.
+	// considering it a failed request. Default is 30 seconds. Valid range
+	// is [1, 86400].
 	TimeoutSec int64 `json:"timeoutSec,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -2343,10 +2343,9 @@
 	// last character, which cannot be a dash.
 	Name string `json:"name,omitempty"`
 
-	// Network: URL of the network resource for this firewall rule. This
-	// field is required for creating an instance but optional when creating
-	// a firewall rule. If not specified when creating a firewall rule, the
-	// default network is used:
+	// Network: URL of the network resource for this firewall rule. If not
+	// specified when creating a firewall rule, the default network is
+	// used:
 	// global/networks/default
 	// If you choose to specify this property, you can specify the network
 	// as a full or partial URL. For example, the following are all valid
@@ -2543,6 +2542,9 @@
 	// traffic. For regional forwarding rules, this target must live in the
 	// same region as the forwarding rule. For global forwarding rules, this
 	// target must be a global TargetHttpProxy or TargetHttpsProxy resource.
+	// The forwarded traffic must be of a type appropriate to the target
+	// object. For example, TargetHttpProxy requires HTTP traffic, and
+	// TargetHttpsProxy requires HTTPS traffic.
 	Target string `json:"target,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -3290,16 +3292,16 @@
 	// format.
 	CreationTimestamp string `json:"creationTimestamp,omitempty"`
 
-	// Description: An optional textual description of the resource;
-	// provided by the client when the resource is created.
+	// Description: An optional description of this resource. Provide this
+	// property when you create the resource.
 	Description string `json:"description,omitempty"`
 
 	// Disks: Array of disks associated with this instance. Persistent disks
 	// must be created before you can assign them.
 	Disks []*AttachedDisk `json:"disks,omitempty"`
 
-	// Id: [Output Only] Unique identifier for the resource. This identifier
-	// is defined by the server.
+	// Id: [Output Only] The unique identifier for the resource. This
+	// identifier is defined by the server.
 	Id uint64 `json:"id,omitempty,string"`
 
 	// Kind: [Output Only] Type of the resource. Always compute#instance for
@@ -3349,13 +3351,14 @@
 	// This includes custom metadata and predefined keys.
 	Metadata *Metadata `json:"metadata,omitempty"`
 
-	// Name: Name of the resource; provided by the client when the resource
-	// is created. The name must be 1-63 characters long, and comply with
-	// RFC1035. Specifically, the name must be 1-63 characters long and
-	// match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
-	// the first character must be a lowercase letter, and all following
-	// characters must be a dash, lowercase letter, or digit, except the
-	// last character, which cannot be a dash.
+	// Name: The name of the resource, provided by the client when initially
+	// creating the resource. The resource name must be 1-63 characters
+	// long, and comply with RFC1035. Specifically, the name must be 1-63
+	// characters long and match the regular expression
+	// [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a
+	// lowercase letter, and all following characters must be a dash,
+	// lowercase letter, or digit, except the last character, which cannot
+	// be a dash.
 	Name string `json:"name,omitempty"`
 
 	// NetworkInterfaces: An array of configurations for this interface.
@@ -3366,7 +3369,7 @@
 	// Scheduling: Scheduling options for this instance.
 	Scheduling *Scheduling `json:"scheduling,omitempty"`
 
-	// SelfLink: [Output Only] Server defined URL for this resource.
+	// SelfLink: [Output Only] Server-defined URL for this resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// ServiceAccounts: A list of service accounts, with their specified
@@ -3437,11 +3440,15 @@
 	// resources.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: [Output Only] A token used to continue a truncated
-	// list request.
+	// NextPageToken: [Output Only] This token allows you to get the next
+	// page of results for list requests. If the number of results is larger
+	// than maxResults, use the nextPageToken as a value for the query
+	// parameter pageToken in the next list request. Subsequent list
+	// requests will have their own nextPageToken to continue paging through
+	// the results.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
-	// SelfLink: [Output Only] Server defined URL for this resource.
+	// SelfLink: [Output Only] Server-defined URL for this resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -3512,6 +3519,10 @@
 	// group.
 	Size int64 `json:"size,omitempty"`
 
+	// Subnetwork: [Output Only] The URL of the subnetwork to which all
+	// instances in the instance group belong.
+	Subnetwork string `json:"subnetwork,omitempty"`
+
 	// Zone: [Output Only] The URL of the zone where the instance group is
 	// located.
 	Zone string `json:"zone,omitempty"`
@@ -3725,7 +3736,8 @@
 
 	// Creating: [Output Only] The number of instances in the managed
 	// instance group that are scheduled to be created or are currently
-	// being created.
+	// being created. If the group fails to create one of these instances,
+	// it tries again until it creates the instance successfully.
 	Creating int64 `json:"creating,omitempty"`
 
 	// Deleting: [Output Only] The number of instances in the managed
@@ -4393,11 +4405,15 @@
 	// lists of Instance resources.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: [Output Only] A token used to continue a truncated
-	// list request.
+	// NextPageToken: [Output Only] This token allows you to get the next
+	// page of results for list requests. If the number of results is larger
+	// than maxResults, use the nextPageToken as a value for the query
+	// parameter pageToken in the next list request. Subsequent list
+	// requests will have their own nextPageToken to continue paging through
+	// the results.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
-	// SelfLink: [Output Only] Server defined URL for this resource.
+	// SelfLink: [Output Only] Server-defined URL for this resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -5076,7 +5092,13 @@
 	// instance group has scheduled for the instance. Possible values:
 	// - NONE The instance is running, and the managed instance group does
 	// not have any scheduled actions for this instance.
-	// - CREATING The managed instance group is creating this instance.
+	// - CREATING The managed instance group is creating this instance. If
+	// the group fails to create this instance, it will try again until it
+	// is successful.
+	// - CREATING_WITHOUT_RETRIES The managed instance group is attempting
+	// to create this instance only once. If the group fails to create this
+	// instance, it does not try again and the group's target_size value is
+	// decreased.
 	// - RECREATING The managed instance group is recreating this instance.
 	//
 	// - DELETING The managed instance group is permanently deleting this
@@ -5303,8 +5325,8 @@
 	// 192.168.0.0/16. Provided by the client when the network is created.
 	IPv4Range string `json:"IPv4Range,omitempty"`
 
-	// AutoCreateSubnetworks: When set to true, the subnetwork is created in
-	// "auto subnet mode". When set to false, the subnetwork is in "custom
+	// AutoCreateSubnetworks: When set to true, the network is created in
+	// "auto subnet mode". When set to false, the network is in "custom
 	// subnet mode".
 	//
 	// In "auto subnet mode", a newly created network is assigned the
@@ -5400,16 +5422,16 @@
 	// assigned to the instance for this network interface.
 	NetworkIP string `json:"networkIP,omitempty"`
 
-	// Subnetwork: URL of the subnetwork resource for this instance. This
-	// should not be provided if the network resource is in legacy mode. If
-	// the network is in auto subnet mode, providing the subnetwork is
-	// optional. If the network is in custom subnet mode then the field
+	// Subnetwork: The URL of the Subnetwork resource for this instance. If
+	// the network resource is in legacy mode, do not provide this property.
+	// If the network is in auto subnet mode, providing the subnetwork is
+	// optional. If the network is in custom subnet mode, then this field
 	// should be specified. If you specify this property, you can specify
 	// the subnetwork as a full or partial URL. For example, the following
 	// are all valid URLs:
 	// -
 	// https://www.googleapis.com/compute/v1/projects/project/zones/zone/subnetworks/subnetwork
-	// - projects/project/zones/zone/networks/network
+	// - zones/zone/subnetworks/subnetwork
 	Subnetwork string `json:"subnetwork,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AccessConfigs") to
@@ -5498,8 +5520,8 @@
 	HttpErrorMessage string `json:"httpErrorMessage,omitempty"`
 
 	// HttpErrorStatusCode: [Output Only] If the operation fails, this field
-	// contains the HTTP error message that was returned. For example, a 404
-	// means the resource was not found.
+	// contains the HTTP error status code that was returned. For example, a
+	// 404 means the resource was not found.
 	HttpErrorStatusCode int64 `json:"httpErrorStatusCode,omitempty"`
 
 	// Id: [Output Only] The unique identifier for the resource. This
@@ -5523,13 +5545,13 @@
 
 	// Progress: [Output Only] An optional progress indicator that ranges
 	// from 0 to 100. There is no requirement that this be linear or support
-	// any granularity of operations. This should not be used to guess at
-	// when the operation will be complete. This number should monotonically
+	// any granularity of operations. This should not be used to guess when
+	// the operation will be complete. This number should monotonically
 	// increase as the operation progresses.
 	Progress int64 `json:"progress,omitempty"`
 
 	// Region: [Output Only] URL of the region where the operation resides.
-	// Only applicable for regional resources.
+	// Only available when performing regional operations.
 	Region string `json:"region,omitempty"`
 
 	// SelfLink: [Output Only] Server-defined URL for the resource.
@@ -5568,7 +5590,8 @@
 	// processing of the operation, this field will be populated.
 	Warnings []*OperationWarnings `json:"warnings,omitempty"`
 
-	// Zone: [Output Only] URL of the zone where the operation resides.
+	// Zone: [Output Only] URL of the zone where the operation resides. Only
+	// available when performing per-zone operations.
 	Zone string `json:"zone,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -5902,9 +5925,15 @@
 // BackendService from the longest-matched rule will serve the URL. If
 // no rule was matched, the default service will be used.
 type PathMatcher struct {
-	// DefaultService: The URL to the BackendService resource. This will be
-	// used if none of the pathRules defined by this PathMatcher is met by
-	// the URL's path portion.
+	// DefaultService: The full or partial URL to the BackendService
+	// resource. This will be used if none of the pathRules defined by this
+	// PathMatcher is matched by the URL's path portion. For example, the
+	// following are all valid URLs to a BackendService resource:
+	// -
+	// https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService
+	// - compute/v1/projects/project/global/backendServices/backendService
+	//
+	// - global/backendServices/backendService
 	DefaultService string `json:"defaultService,omitempty"`
 
 	// Description: An optional description of this resource. Provide this
@@ -5998,8 +6027,8 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
-	// UsageExportLocation: The location in Cloud Storage and naming method
-	// of the daily usage report.
+	// UsageExportLocation: The naming prefix for daily usage reports and
+	// the Google Cloud Storage bucket where they are stored.
 	UsageExportLocation *UsageExportLocation `json:"usageExportLocation,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -6203,7 +6232,7 @@
 
 // Route: The route resource. A Route is a rule that specifies how
 // certain packets should be handled by the virtual network. Routes are
-// associated with instances by tag and the set of Routes for a
+// associated with instances by tags and the set of Routes for a
 // particular instance is called its routing table. For each packet
 // leaving a instance, the system searches that instance's routing table
 // for a single best matching Route. Routes match packets by destination
@@ -6251,12 +6280,13 @@
 	Network string `json:"network,omitempty"`
 
 	// NextHopGateway: The URL to a gateway that should handle matching
-	// packets. Currently, this is only the internet gateway:
+	// packets. You can only specify the internet gateway using a full or
+	// partial valid URL:
 	// projects/<project-id>/global/gateways/default-internet-gateway
 	NextHopGateway string `json:"nextHopGateway,omitempty"`
 
-	// NextHopInstance: The fully-qualified URL to an instance that should
-	// handle matching packets. For
+	// NextHopInstance: The URL to an instance that should handle matching
+	// packets. You can specify this as a full or partial URL. For
 	// example:
 	// https://www.googleapis.com/compute/v1/projects/project/zones/
 	// zone/instances/
@@ -6274,9 +6304,11 @@
 	// packets.
 	NextHopVpnTunnel string `json:"nextHopVpnTunnel,omitempty"`
 
-	// Priority: Breaks ties between Routes of equal specificity. Routes
-	// with smaller values win when tied with routes with larger values.
-	// Default value is 1000. A valid range is between 0 and 65535.
+	// Priority: The priority of this route. Priority is used to break ties
+	// in cases where there is more than one matching route of equal prefix
+	// length. In the case of two routes with equal prefix length, the one
+	// with the lowest-numbered priority value wins. Default value is 1000.
+	// Valid range is 0 through 65535.
 	Priority int64 `json:"priority,omitempty"`
 
 	// SelfLink: [Output Only] Server-defined fully-qualified URL for this
@@ -6390,7 +6422,7 @@
 	// server.
 	Id string `json:"id,omitempty"`
 
-	// Items: A list of Route resources.
+	// Items: [Output Only] A list of Route resources.
 	Items []*Route `json:"items,omitempty"`
 
 	// Kind: Type of resource.
@@ -6472,7 +6504,7 @@
 	// compute#serialPortOutput for serial port output.
 	Kind string `json:"kind,omitempty"`
 
-	// SelfLink: [Output Only] Server defined URL for the resource.
+	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -6572,7 +6604,8 @@
 	// you do not need to provide a key to use the snapshot later.
 	SnapshotEncryptionKey *CustomerEncryptionKey `json:"snapshotEncryptionKey,omitempty"`
 
-	// SourceDisk: The source disk used to create this snapshot.
+	// SourceDisk: [Output Only] The source disk used to create this
+	// snapshot.
 	SourceDisk string `json:"sourceDisk,omitempty"`
 
 	// SourceDiskEncryptionKey: Specifies the customer-supplied encryption
@@ -6637,7 +6670,7 @@
 	// identifier is defined by the server.
 	Id string `json:"id,omitempty"`
 
-	// Items: A list of Snapshot resources.
+	// Items: [Output Only] A list of Snapshot resources.
 	Items []*Snapshot `json:"items,omitempty"`
 
 	// Kind: Type of resource.
@@ -6674,8 +6707,8 @@
 }
 
 // SslCertificate: An SslCertificate resource. This resource provides a
-// mechanism to upload an SSL key and certificate to global HTTPS
-// loadbalancer to serve secure connections.
+// mechanism to upload an SSL key and certificate to the load balancer
+// to serve secure connections from the user.
 type SslCertificate struct {
 	// Certificate: A local certificate file. The certificate must be in PEM
 	// format. The certificate chain must be no greater than 5 certs long.
@@ -6781,37 +6814,40 @@
 	// format.
 	CreationTimestamp string `json:"creationTimestamp,omitempty"`
 
-	// Description: An optional textual description of the resource;
-	// provided by the client when the resource is created.
+	// Description: An optional description of this resource. Provide this
+	// property when you create the resource.
 	Description string `json:"description,omitempty"`
 
-	// GatewayAddress: [Output Only] Gateway address for default routes to
-	// addresses outside this Subnetwork.
+	// GatewayAddress: [Output Only] The gateway address for default routes
+	// to reach destination addresses outside this subnetwork.
 	GatewayAddress string `json:"gatewayAddress,omitempty"`
 
-	// Id: [Output Only] Unique identifier for the resource; defined by the
-	// server.
+	// Id: [Output Only] The unique identifier for the resource. This
+	// identifier is defined by the server.
 	Id uint64 `json:"id,omitempty,string"`
 
 	// IpCidrRange: The range of internal addresses that are owned by this
-	// Subnetwork; provided by the client when the Subnetwork is created.
+	// subnetwork. Provide this property when you create the subnetwork. For
+	// example, 10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and
+	// non-overlapping within a network.
 	IpCidrRange string `json:"ipCidrRange,omitempty"`
 
-	// Kind: Type of the resource.
+	// Kind: [Output Only] Type of the resource. Always compute#subnetwork
+	// for Subnetwork resources.
 	Kind string `json:"kind,omitempty"`
 
-	// Name: Name of the resource. Provided by the client when the resource
-	// is created. The name must be 1-63 characters long, and comply with
-	// RFC1035. Specifically, the name must be 1-63 characters long and
-	// match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
-	// the first character must be a lowercase letter, and all following
-	// characters must be a dash, lowercase letter, or digit, except the
-	// last character, which cannot be a dash.
+	// Name: The name of the resource, provided by the client when initially
+	// creating the resource. The name must be 1-63 characters long, and
+	// comply with RFC1035. Specifically, the name must be 1-63 characters
+	// long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])?
+	// which means the first character must be a lowercase letter, and all
+	// following characters must be a dash, lowercase letter, or digit,
+	// except the last character, which cannot be a dash.
 	Name string `json:"name,omitempty"`
 
-	// Network: URL of the network to which this Subnetwork belongs;
-	// provided by the client when the Subnetwork is created. Only networks
-	// that are in the distributed mode can have Subnetworks.
+	// Network: The URL of the network to which this subnetwork belongs,
+	// provided by the client when initially creating the subnetwork. Only
+	// networks that are in the distributed mode can have subnetworks.
 	Network string `json:"network,omitempty"`
 
 	// Region: [Output Only] URL of the region where the Subnetwork resides.
@@ -6840,18 +6876,23 @@
 }
 
 type SubnetworkAggregatedList struct {
-	// Id: [Output Only] Unique identifier for the resource; defined by the
-	// server.
+	// Id: [Output Only] The unique identifier for the resource. This
+	// identifier is defined by the server.
 	Id string `json:"id,omitempty"`
 
-	// Items: A map of scoped Subnetwork lists.
+	// Items: [Output] A map of scoped Subnetwork lists.
 	Items map[string]SubnetworksScopedList `json:"items,omitempty"`
 
-	// Kind: Type of resource.
+	// Kind: [Output Only] Type of resource. Always
+	// compute#subnetworkAggregatedList for aggregated lists of subnetworks.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: [Output Only] A token used to continue a truncated
-	// list request.
+	// NextPageToken: [Output Only] This token allows you to get the next
+	// page of results for list requests. If the number of results is larger
+	// than maxResults, use the nextPageToken as a value for the query
+	// parameter pageToken in the next list request. Subsequent list
+	// requests will have their own nextPageToken to continue paging through
+	// the results.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
 	// SelfLink: [Output Only] Server-defined URL for this resource.
@@ -6878,18 +6919,23 @@
 
 // SubnetworkList: Contains a list of Subnetwork resources.
 type SubnetworkList struct {
-	// Id: [Output Only] Unique identifier for the resource. Defined by the
-	// server.
+	// Id: [Output Only] The unique identifier for the resource. This
+	// identifier is defined by the server.
 	Id string `json:"id,omitempty"`
 
 	// Items: The Subnetwork resources.
 	Items []*Subnetwork `json:"items,omitempty"`
 
-	// Kind: Type of resource.
+	// Kind: [Output Only] Type of resource. Always compute#subnetworkList
+	// for lists of subnetworks.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: [Output Only] A token used to continue a truncated
-	// list request.
+	// NextPageToken: [Output Only] This token allows you to get the next
+	// page of results for list requests. If the number of results is larger
+	// than maxResults, use the nextPageToken as a value for the query
+	// parameter pageToken in the next list request. Subsequent list
+	// requests will have their own nextPageToken to continue paging through
+	// the results.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
 	// SelfLink: [Output Only] Server-defined URL for this resource.
@@ -6915,11 +6961,11 @@
 }
 
 type SubnetworksScopedList struct {
-	// Subnetworks: List of Subnetworks contained in this scope.
+	// Subnetworks: List of subnetworks contained in this scope.
 	Subnetworks []*Subnetwork `json:"subnetworks,omitempty"`
 
-	// Warning: Informational warning which replaces the list of addresses
-	// when the list is empty.
+	// Warning: An informational warning that appears when the list of
+	// addresses is empty.
 	Warning *SubnetworksScopedListWarning `json:"warning,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Subnetworks") to
@@ -6937,8 +6983,8 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
-// SubnetworksScopedListWarning: Informational warning which replaces
-// the list of addresses when the list is empty.
+// SubnetworksScopedListWarning: An informational warning that appears
+// when the list of addresses is empty.
 type SubnetworksScopedListWarning struct {
 	// Code: [Output Only] A warning code, if applicable. For example,
 	// Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
@@ -7195,8 +7241,8 @@
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// SslCertificates: URLs to SslCertificate resources that are used to
-	// authenticate connections to Backends. Currently exactly one SSL
-	// certificate must be specified.
+	// authenticate connections between users and the load balancer.
+	// Currently exactly one SSL certificate must be specified.
 	SslCertificates []string `json:"sslCertificates,omitempty"`
 
 	// UrlMap: URL to the UrlMap resource that defines the mapping from URL
@@ -8456,8 +8502,10 @@
 type UsageExportLocation struct {
 	// BucketName: The name of an existing bucket in Cloud Storage where the
 	// usage report object is stored. The Google Service Account is granted
-	// write access to this bucket. This is just the bucket name, with no
-	// gs:// or https://storage.googleapis.com/ in front of it.
+	// write access to this bucket. This can either be the bucket name by
+	// itself, such as example-bucket, or the bucket name with gs:// or
+	// https://storage.googleapis.com/ in front of it, such as
+	// gs://example-bucket.
 	BucketName string `json:"bucketName,omitempty"`
 
 	// ReportNamePrefix: An optional prefix for the name of the usage report
@@ -8509,9 +8557,10 @@
 	// VPN tunnels.
 	Kind string `json:"kind,omitempty"`
 
-	// LocalTrafficSelector: IKE networks to use when establishing the VPN
-	// tunnel with peer VPN gateway. The value should be a CIDR formatted
-	// string, for example: 192.168.0.0/16. The ranges should be disjoint.
+	// LocalTrafficSelector: Local traffic selector to use when establishing
+	// the VPN tunnel with peer VPN gateway. The value should be a CIDR
+	// formatted string, for example: 192.168.0.0/16. The ranges should be
+	// disjoint.
 	LocalTrafficSelector []string `json:"localTrafficSelector,omitempty"`
 
 	// Name: Name of the resource; provided by the client when the resource
@@ -8533,7 +8582,7 @@
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// SharedSecret: Shared secret used to set the secure session between
-	// the GCE VPN gateway and the peer VPN gateway.
+	// the Cloud VPN gateway and the peer VPN gateway.
 	SharedSecret string `json:"sharedSecret,omitempty"`
 
 	// SharedSecretHash: Hash of the shared secret.
@@ -8909,7 +8958,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of addresses grouped by scope.
+// AggregatedList: Retrieves an aggregated list of addresses.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/addresses/aggregatedList
 func (r *AddressesService) AggregatedList(project string) *AddressesAggregatedListCall {
 	c := &AddressesAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -9067,7 +9116,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of addresses grouped by scope.",
+	//   "description": "Retrieves an aggregated list of addresses.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.addresses.aggregatedList",
 	//   "parameterOrder": [
@@ -9572,7 +9621,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of address resources contained within the
+// List: Retrieves a list of address resources contained within the
 // specified region.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/addresses/list
 func (r *AddressesService) List(project string, region string) *AddressesListCall {
@@ -9733,7 +9782,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of address resources contained within the specified region.",
+	//   "description": "Retrieves a list of address resources contained within the specified region.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.addresses.list",
 	//   "parameterOrder": [
@@ -9824,7 +9873,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of autoscalers grouped by scope.
+// AggregatedList: Retrieves an aggregated list of autoscalers.
 func (r *AutoscalersService) AggregatedList(project string) *AutoscalersAggregatedListCall {
 	c := &AutoscalersAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -9981,7 +10030,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of autoscalers grouped by scope.",
+	//   "description": "Retrieves an aggregated list of autoscalers.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.autoscalers.aggregatedList",
 	//   "parameterOrder": [
@@ -10483,7 +10532,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of autoscaler resources contained within the
+// List: Retrieves a list of autoscaler resources contained within the
 // specified zone.
 func (r *AutoscalersService) List(project string, zone string) *AutoscalersListCall {
 	c := &AutoscalersListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -10643,7 +10692,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of autoscaler resources contained within the specified zone.",
+	//   "description": "Retrieves a list of autoscaler resources contained within the specified zone.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.autoscalers.list",
 	//   "parameterOrder": [
@@ -11427,7 +11476,9 @@
 }
 
 // Insert: Creates a BackendService resource in the specified project
-// using the data included in the request.
+// using the data included in the request. There are several
+// restrictions and guidelines to keep in mind when creating a backend
+// service. Read  Restrictions and Guidelines for more information.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/backendServices/insert
 func (r *BackendServicesService) Insert(project string, backendservice *BackendService) *BackendServicesInsertCall {
 	c := &BackendServicesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -11511,7 +11562,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Creates a BackendService resource in the specified project using the data included in the request.",
+	//   "description": "Creates a BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a backend service. Read  Restrictions and Guidelines for more information.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.backendServices.insert",
 	//   "parameterOrder": [
@@ -11794,8 +11845,10 @@
 	ctx_           context.Context
 }
 
-// Patch: Update the entire content of the BackendService resource. This
-// method supports patch semantics.
+// Patch: Updates the entire content of the BackendService resource.
+// There are several restrictions and guidelines to keep in mind when
+// updating a backend service. Read  Restrictions and Guidelines for
+// more information. This method supports patch semantics.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/backendServices/patch
 func (r *BackendServicesService) Patch(project string, backendService string, backendservice *BackendService) *BackendServicesPatchCall {
 	c := &BackendServicesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -11881,7 +11934,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Update the entire content of the BackendService resource. This method supports patch semantics.",
+	//   "description": "Updates the entire content of the BackendService resource. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information. This method supports patch semantics.",
 	//   "httpMethod": "PATCH",
 	//   "id": "compute.backendServices.patch",
 	//   "parameterOrder": [
@@ -11930,7 +11983,10 @@
 	ctx_           context.Context
 }
 
-// Update: Update the entire content of the BackendService resource.
+// Update: Updates the entire content of the BackendService resource.
+// There are several restrictions and guidelines to keep in mind when
+// updating a backend service. Read  Restrictions and Guidelines for
+// more information.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/backendServices/update
 func (r *BackendServicesService) Update(project string, backendService string, backendservice *BackendService) *BackendServicesUpdateCall {
 	c := &BackendServicesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -12016,7 +12072,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Update the entire content of the BackendService resource.",
+	//   "description": "Updates the entire content of the BackendService resource. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information.",
 	//   "httpMethod": "PUT",
 	//   "id": "compute.backendServices.update",
 	//   "parameterOrder": [
@@ -12064,8 +12120,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of disk type resources grouped by
-// scope.
+// AggregatedList: Retrieves an aggregated list of disk type resources.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/diskTypes/aggregatedList
 func (r *DiskTypesService) AggregatedList(project string) *DiskTypesAggregatedListCall {
 	c := &DiskTypesAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -12223,7 +12278,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of disk type resources grouped by scope.",
+	//   "description": "Retrieves an aggregated list of disk type resources.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.diskTypes.aggregatedList",
 	//   "parameterOrder": [
@@ -12457,7 +12512,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of disk type resources available to the
+// List: Retrieves a list of disk type resources available to the
 // specified project.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/diskTypes/list
 func (r *DiskTypesService) List(project string, zone string) *DiskTypesListCall {
@@ -12618,7 +12673,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of disk type resources available to the specified project.",
+	//   "description": "Retrieves a list of disk type resources available to the specified project.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.diskTypes.list",
 	//   "parameterOrder": [
@@ -12709,8 +12764,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of persistent disks grouped by
-// scope.
+// AggregatedList: Retrieves an aggregated list of persistent disks.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/disks/aggregatedList
 func (r *DisksService) AggregatedList(project string) *DisksAggregatedListCall {
 	c := &DisksAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -12868,7 +12922,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of persistent disks grouped by scope.",
+	//   "description": "Retrieves an aggregated list of persistent disks.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.disks.aggregatedList",
 	//   "parameterOrder": [
@@ -13534,7 +13588,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of persistent disks contained within the
+// List: Retrieves a list of persistent disks contained within the
 // specified zone.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/disks/list
 func (r *DisksService) List(project string, zone string) *DisksListCall {
@@ -13695,7 +13749,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of persistent disks contained within the specified zone.",
+	//   "description": "Retrieves a list of persistent disks contained within the specified zone.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.disks.list",
 	//   "parameterOrder": [
@@ -14833,8 +14887,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of forwarding rules grouped by
-// scope.
+// AggregatedList: Retrieves an aggregated list of forwarding rules.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/forwardingRules/aggregatedList
 func (r *ForwardingRulesService) AggregatedList(project string) *ForwardingRulesAggregatedListCall {
 	c := &ForwardingRulesAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -14992,7 +15045,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of forwarding rules grouped by scope.",
+	//   "description": "Retrieves an aggregated list of forwarding rules.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.forwardingRules.aggregatedList",
 	//   "parameterOrder": [
@@ -15497,7 +15550,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of ForwardingRule resources available to the
+// List: Retrieves a list of ForwardingRule resources available to the
 // specified project and region.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/forwardingRules/list
 func (r *ForwardingRulesService) List(project string, region string) *ForwardingRulesListCall {
@@ -15658,7 +15711,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of ForwardingRule resources available to the specified project and region.",
+	//   "description": "Retrieves a list of ForwardingRule resources available to the specified project and region.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.forwardingRules.list",
 	//   "parameterOrder": [
@@ -16284,7 +16337,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of global address resources.
+// List: Retrieves a list of global address resources.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/globalAddresses/list
 func (r *GlobalAddressesService) List(project string) *GlobalAddressesListCall {
 	c := &GlobalAddressesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -16442,7 +16495,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of global address resources.",
+	//   "description": "Retrieves a list of global address resources.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.globalAddresses.list",
 	//   "parameterOrder": [
@@ -16913,7 +16966,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of ForwardingRule resources available to the
+// List: Retrieves a list of ForwardingRule resources available to the
 // specified project.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/globalForwardingRules/list
 func (r *GlobalForwardingRulesService) List(project string) *GlobalForwardingRulesListCall {
@@ -17072,7 +17125,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of ForwardingRule resources available to the specified project.",
+	//   "description": "Retrieves a list of ForwardingRule resources available to the specified project.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.globalForwardingRules.list",
 	//   "parameterOrder": [
@@ -17291,8 +17344,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of all operations grouped by
-// scope.
+// AggregatedList: Retrieves an aggregated list of all operations.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/globalOperations/aggregatedList
 func (r *GlobalOperationsService) AggregatedList(project string) *GlobalOperationsAggregatedListCall {
 	c := &GlobalOperationsAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -17450,7 +17502,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of all operations grouped by scope.",
+	//   "description": "Retrieves an aggregated list of all operations.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.globalOperations.aggregatedList",
 	//   "parameterOrder": [
@@ -17769,7 +17821,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of Operation resources contained within the
+// List: Retrieves a list of Operation resources contained within the
 // specified project.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/globalOperations/list
 func (r *GlobalOperationsService) List(project string) *GlobalOperationsListCall {
@@ -17928,7 +17980,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of Operation resources contained within the specified project.",
+	//   "description": "Retrieves a list of Operation resources contained within the specified project.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.globalOperations.list",
 	//   "parameterOrder": [
@@ -20984,7 +21036,9 @@
 }
 
 // Delete: Deletes the specified managed instance group and all of the
-// instances in that group.
+// instances in that group. Note that the instance group must not belong
+// to a backend service. Read  Deleting an instance group for more
+// information.
 func (r *InstanceGroupManagersService) Delete(project string, zone string, instanceGroupManager string) *InstanceGroupManagersDeleteCall {
 	c := &InstanceGroupManagersDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -21064,7 +21118,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Deletes the specified managed instance group and all of the instances in that group.",
+	//   "description": "Deletes the specified managed instance group and all of the instances in that group. Note that the instance group must not belong to a backend service. Read  Deleting an instance group for more information.",
 	//   "httpMethod": "DELETE",
 	//   "id": "compute.instanceGroupManagers.delete",
 	//   "parameterOrder": [
@@ -22679,8 +22733,7 @@
 }
 
 // AddInstances: Adds a list of instances to the specified instance
-// group. All of the instances in the instance group must be in the same
-// network/subnetwork.
+// group. Read  Adding instances for more information.
 func (r *InstanceGroupsService) AddInstances(project string, zone string, instanceGroup string, instancegroupsaddinstancesrequest *InstanceGroupsAddInstancesRequest) *InstanceGroupsAddInstancesCall {
 	c := &InstanceGroupsAddInstancesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -22767,7 +22820,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Adds a list of instances to the specified instance group. All of the instances in the instance group must be in the same network/subnetwork.",
+	//   "description": "Adds a list of instances to the specified instance group. Read  Adding instances for more information.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.instanceGroups.addInstances",
 	//   "parameterOrder": [
@@ -23064,7 +23117,9 @@
 }
 
 // Delete: Deletes the specified instance group. The instances in the
-// group are not deleted.
+// group are not deleted. Note that instance group must not belong to a
+// backend service. Read  Deleting an instance group for more
+// information.
 func (r *InstanceGroupsService) Delete(project string, zone string, instanceGroup string) *InstanceGroupsDeleteCall {
 	c := &InstanceGroupsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -23144,7 +23199,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Deletes the specified instance group. The instances in the group are not deleted.",
+	//   "description": "Deletes the specified instance group. The instances in the group are not deleted. Note that instance group must not belong to a backend service. Read  Deleting an instance group for more information.",
 	//   "httpMethod": "DELETE",
 	//   "id": "compute.instanceGroups.delete",
 	//   "parameterOrder": [
@@ -24514,7 +24569,10 @@
 }
 
 // Insert: Creates an instance template in the specified project using
-// the data that is included in the request.
+// the data that is included in the request. If you are creating a new
+// template to update an existing instance group, your new instance
+// template must use the same network or, if applicable, the same
+// subnetwork as the original template.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/instanceTemplates/insert
 func (r *InstanceTemplatesService) Insert(project string, instancetemplate *InstanceTemplate) *InstanceTemplatesInsertCall {
 	c := &InstanceTemplatesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -24598,7 +24656,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Creates an instance template in the specified project using the data that is included in the request.",
+	//   "description": "Creates an instance template in the specified project using the data that is included in the request. If you are creating a new template to update an existing instance group, your new instance template must use the same network or, if applicable, the same subnetwork as the original template.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.instanceTemplates.insert",
 	//   "parameterOrder": [
@@ -27581,9 +27639,9 @@
 	ctx_       context.Context
 }
 
-// Start: This method starts an instance that was stopped using the
-// using the instances().stop method. For more information, see Restart
-// an instance.
+// Start: Starts an instance that was stopped using the using the
+// instances().stop method. For more information, see Restart an
+// instance.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/instances/start
 func (r *InstancesService) Start(project string, zone string, instance string) *InstancesStartCall {
 	c := &InstancesStartCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -27664,7 +27722,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "This method starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
+	//   "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.instances.start",
 	//   "parameterOrder": [
@@ -27718,13 +27776,13 @@
 	ctx_       context.Context
 }
 
-// Stop: This method stops a running instance, shutting it down cleanly,
-// and allows you to restart the instance at a later time. Stopped
-// instances do not incur per-minute, virtual machine usage charges
-// while they are stopped, but any resources that the virtual machine is
-// using, such as persistent disks and static IP addresses,will continue
-// to be charged until they are deleted. For more information, see
-// Stopping an instance.
+// Stop: Stops a running instance, shutting it down cleanly, and allows
+// you to restart the instance at a later time. Stopped instances do not
+// incur per-minute, virtual machine usage charges while they are
+// stopped, but any resources that the virtual machine is using, such as
+// persistent disks and static IP addresses, will continue to be charged
+// until they are deleted. For more information, see Stopping an
+// instance.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/instances/stop
 func (r *InstancesService) Stop(project string, zone string, instance string) *InstancesStopCall {
 	c := &InstancesStopCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -27805,7 +27863,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "This method stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur per-minute, virtual machine usage charges while they are stopped, but any resources that the virtual machine is using, such as persistent disks and static IP addresses,will continue to be charged until they are deleted. For more information, see Stopping an instance.",
+	//   "description": "Stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur per-minute, virtual machine usage charges while they are stopped, but any resources that the virtual machine is using, such as persistent disks and static IP addresses, will continue to be charged until they are deleted. For more information, see Stopping an instance.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.instances.stop",
 	//   "parameterOrder": [
@@ -27997,8 +28055,8 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of machine type resources grouped
-// by scope.
+// AggregatedList: Retrieves an aggregated list of machine type
+// resources.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/machineTypes/aggregatedList
 func (r *MachineTypesService) AggregatedList(project string) *MachineTypesAggregatedListCall {
 	c := &MachineTypesAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -28156,7 +28214,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of machine type resources grouped by scope.",
+	//   "description": "Retrieves an aggregated list of machine type resources.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.machineTypes.aggregatedList",
 	//   "parameterOrder": [
@@ -28390,7 +28448,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of machine type resources available to the
+// List: Retrieves a list of machine type resources available to the
 // specified project.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/machineTypes/list
 func (r *MachineTypesService) List(project string, zone string) *MachineTypesListCall {
@@ -28551,7 +28609,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of machine type resources available to the specified project.",
+	//   "description": "Retrieves a list of machine type resources available to the specified project.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.machineTypes.list",
 	//   "parameterOrder": [
@@ -29645,132 +29703,6 @@
 
 }
 
-// method id "compute.projects.setUsageExportCloudStorageBucket":
-
-type ProjectsSetUsageExportCloudStorageBucketCall struct {
-	s                   *Service
-	project             string
-	usageexportlocation *UsageExportLocation
-	urlParams_          gensupport.URLParams
-	ctx_                context.Context
-}
-
-// SetUsageExportCloudStorageBucket: [Deprecated] Use
-// setUsageExportBucket instead.
-func (r *ProjectsService) SetUsageExportCloudStorageBucket(project string, usageexportlocation *UsageExportLocation) *ProjectsSetUsageExportCloudStorageBucketCall {
-	c := &ProjectsSetUsageExportCloudStorageBucketCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.project = project
-	c.usageexportlocation = usageexportlocation
-	return c
-}
-
-// Fields allows partial responses to be retrieved. See
-// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
-// for more information.
-func (c *ProjectsSetUsageExportCloudStorageBucketCall) Fields(s ...googleapi.Field) *ProjectsSetUsageExportCloudStorageBucketCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *ProjectsSetUsageExportCloudStorageBucketCall) Context(ctx context.Context) *ProjectsSetUsageExportCloudStorageBucketCall {
-	c.ctx_ = ctx
-	return c
-}
-
-func (c *ProjectsSetUsageExportCloudStorageBucketCall) doRequest(alt string) (*http.Response, error) {
-	var body io.Reader = nil
-	body, err := googleapi.WithoutDataWrapper.JSONReader(c.usageexportlocation)
-	if err != nil {
-		return nil, err
-	}
-	ctype := "application/json"
-	c.urlParams_.Set("alt", alt)
-	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/setUsageExportCloudStorageBucket")
-	urls += "?" + c.urlParams_.Encode()
-	req, _ := http.NewRequest("POST", urls, body)
-	googleapi.Expand(req.URL, map[string]string{
-		"project": c.project,
-	})
-	req.Header.Set("Content-Type", ctype)
-	req.Header.Set("User-Agent", c.s.userAgent())
-	if c.ctx_ != nil {
-		return ctxhttp.Do(c.ctx_, c.s.client, req)
-	}
-	return c.s.client.Do(req)
-}
-
-// Do executes the "compute.projects.setUsageExportCloudStorageBucket" call.
-// Exactly one of *Operation or error will be non-nil. Any non-2xx
-// status code is an error. Response headers are in either
-// *Operation.ServerResponse.Header or (if a response was returned at
-// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
-// to check whether the returned error was because
-// http.StatusNotModified was returned.
-func (c *ProjectsSetUsageExportCloudStorageBucketCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if res != nil && res.StatusCode == http.StatusNotModified {
-		if res.Body != nil {
-			res.Body.Close()
-		}
-		return nil, &googleapi.Error{
-			Code:   res.StatusCode,
-			Header: res.Header,
-		}
-	}
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	ret := &Operation{
-		ServerResponse: googleapi.ServerResponse{
-			Header:         res.Header,
-			HTTPStatusCode: res.StatusCode,
-		},
-	}
-	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "description": "[Deprecated] Use setUsageExportBucket instead.",
-	//   "httpMethod": "POST",
-	//   "id": "compute.projects.setUsageExportCloudStorageBucket",
-	//   "parameterOrder": [
-	//     "project"
-	//   ],
-	//   "parameters": {
-	//     "project": {
-	//       "description": "Project ID for this request.",
-	//       "location": "path",
-	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "{project}/setUsageExportCloudStorageBucket",
-	//   "request": {
-	//     "$ref": "UsageExportLocation"
-	//   },
-	//   "response": {
-	//     "$ref": "Operation"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/compute",
-	//     "https://www.googleapis.com/auth/devstorage.full_control",
-	//     "https://www.googleapis.com/auth/devstorage.read_only",
-	//     "https://www.googleapis.com/auth/devstorage.read_write"
-	//   ]
-	// }
-
-}
-
 // method id "compute.regionOperations.delete":
 
 type RegionOperationsDeleteCall struct {
@@ -30009,7 +29941,7 @@
 	//       "type": "string"
 	//     },
 	//     "region": {
-	//       "description": "Name of the zone scoping this request.",
+	//       "description": "Name of the region scoping this request.",
 	//       "location": "path",
 	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
 	//       "required": true,
@@ -30040,7 +29972,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of Operation resources contained within the
+// List: Retrieves a list of Operation resources contained within the
 // specified region.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/regionOperations/list
 func (r *RegionOperationsService) List(project string, region string) *RegionOperationsListCall {
@@ -30201,7 +30133,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of Operation resources contained within the specified region.",
+	//   "description": "Retrieves a list of Operation resources contained within the specified region.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.regionOperations.list",
 	//   "parameterOrder": [
@@ -32440,7 +32372,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of Subnetworks grouped by scope.
+// AggregatedList: Retrieves an aggregated list of subnetworks.
 func (r *SubnetworksService) AggregatedList(project string) *SubnetworksAggregatedListCall {
 	c := &SubnetworksAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -32597,7 +32529,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of Subnetworks grouped by scope.",
+	//   "description": "Retrieves an aggregated list of subnetworks.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.subnetworks.aggregatedList",
 	//   "parameterOrder": [
@@ -32681,7 +32613,7 @@
 	ctx_       context.Context
 }
 
-// Delete: Deletes the specified Subnetwork resource.
+// Delete: Deletes the specified subnetwork.
 func (r *SubnetworksService) Delete(project string, region string, subnetwork string) *SubnetworksDeleteCall {
 	c := &SubnetworksDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -32761,7 +32693,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Deletes the specified Subnetwork resource.",
+	//   "description": "Deletes the specified subnetwork.",
 	//   "httpMethod": "DELETE",
 	//   "id": "compute.subnetworks.delete",
 	//   "parameterOrder": [
@@ -32816,7 +32748,7 @@
 	ctx_         context.Context
 }
 
-// Get: Returns the specified Subnetwork resource.
+// Get: Returns the specified subnetwork.
 func (r *SubnetworksService) Get(project string, region string, subnetwork string) *SubnetworksGetCall {
 	c := &SubnetworksGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -32909,7 +32841,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Returns the specified Subnetwork resource.",
+	//   "description": "Returns the specified subnetwork.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.subnetworks.get",
 	//   "parameterOrder": [
@@ -32964,8 +32896,8 @@
 	ctx_       context.Context
 }
 
-// Insert: Creates a Subnetwork resource in the specified project using
-// the data included in the request.
+// Insert: Creates a subnetwork in the specified project using the data
+// included in the request.
 func (r *SubnetworksService) Insert(project string, region string, subnetwork *Subnetwork) *SubnetworksInsertCall {
 	c := &SubnetworksInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -33050,7 +32982,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Creates a Subnetwork resource in the specified project using the data included in the request.",
+	//   "description": "Creates a subnetwork in the specified project using the data included in the request.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.subnetworks.insert",
 	//   "parameterOrder": [
@@ -33099,8 +33031,8 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of Subnetwork resources available to the
-// specified project.
+// List: Retrieves a list of subnetworks available to the specified
+// project.
 func (r *SubnetworksService) List(project string, region string) *SubnetworksListCall {
 	c := &SubnetworksListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -33259,7 +33191,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of Subnetwork resources available to the specified project.",
+	//   "description": "Retrieves a list of subnetworks available to the specified project.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.subnetworks.list",
 	//   "parameterOrder": [
@@ -35009,8 +34941,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of target instances grouped by
-// scope.
+// AggregatedList: Retrieves an aggregated list of target instances.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/targetInstances/aggregatedList
 func (r *TargetInstancesService) AggregatedList(project string) *TargetInstancesAggregatedListCall {
 	c := &TargetInstancesAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -35168,7 +35099,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of target instances grouped by scope.",
+	//   "description": "Retrieves an aggregated list of target instances.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.targetInstances.aggregatedList",
 	//   "parameterOrder": [
@@ -35673,7 +35604,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of TargetInstance resources available to the
+// List: Retrieves a list of TargetInstance resources available to the
 // specified project and zone.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/targetInstances/list
 func (r *TargetInstancesService) List(project string, zone string) *TargetInstancesListCall {
@@ -35834,7 +35765,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of TargetInstance resources available to the specified project and zone.",
+	//   "description": "Retrieves a list of TargetInstance resources available to the specified project and zone.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.targetInstances.list",
 	//   "parameterOrder": [
@@ -36215,7 +36146,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of target pools grouped by scope.
+// AggregatedList: Retrieves an aggregated list of target pools.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/targetPools/aggregatedList
 func (r *TargetPoolsService) AggregatedList(project string) *TargetPoolsAggregatedListCall {
 	c := &TargetPoolsAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -36373,7 +36304,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of target pools grouped by scope.",
+	//   "description": "Retrieves an aggregated list of target pools.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.targetPools.aggregatedList",
 	//   "parameterOrder": [
@@ -36744,7 +36675,7 @@
 }
 
 // GetHealth: Gets the most recent health check results for each IP for
-// the given instance that is referenced by given TargetPool.
+// the given instance that is referenced by the given TargetPool.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/targetPools/getHealth
 func (r *TargetPoolsService) GetHealth(project string, region string, targetPool string, instancereference *InstanceReference) *TargetPoolsGetHealthCall {
 	c := &TargetPoolsGetHealthCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -36832,7 +36763,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Gets the most recent health check results for each IP for the given instance that is referenced by given TargetPool.",
+	//   "description": "Gets the most recent health check results for each IP for the given instance that is referenced by the given TargetPool.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.targetPools.getHealth",
 	//   "parameterOrder": [
@@ -37025,7 +36956,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of TargetPool resources available to the
+// List: Retrieves a list of TargetPool resources available to the
 // specified project and region.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/targetPools/list
 func (r *TargetPoolsService) List(project string, region string) *TargetPoolsListCall {
@@ -37186,7 +37117,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of TargetPool resources available to the specified project and region.",
+	//   "description": "Retrieves a list of TargetPool resources available to the specified project and region.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.targetPools.list",
 	//   "parameterOrder": [
@@ -37726,8 +37657,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of target VPN gateways grouped by
-// scope.
+// AggregatedList: Retrieves an aggregated list of target VPN gateways .
 func (r *TargetVpnGatewaysService) AggregatedList(project string) *TargetVpnGatewaysAggregatedListCall {
 	c := &TargetVpnGatewaysAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -37884,7 +37814,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of target VPN gateways grouped by scope.",
+	//   "description": "Retrieves an aggregated list of target VPN gateways .",
 	//   "httpMethod": "GET",
 	//   "id": "compute.targetVpnGateways.aggregatedList",
 	//   "parameterOrder": [
@@ -38386,8 +38316,8 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of TargetVpnGateway resources available to
-// the specified project and region.
+// List: Retrieves a list of TargetVpnGateway resources available to the
+// specified project and region.
 func (r *TargetVpnGatewaysService) List(project string, region string) *TargetVpnGatewaysListCall {
 	c := &TargetVpnGatewaysListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -38546,7 +38476,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of TargetVpnGateway resources available to the specified project and region.",
+	//   "description": "Retrieves a list of TargetVpnGateway resources available to the specified project and region.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.targetVpnGateways.list",
 	//   "parameterOrder": [
@@ -39268,7 +39198,7 @@
 	ctx_       context.Context
 }
 
-// Patch: Update the entire content of the UrlMap resource. This method
+// Patch: Updates the entire content of the UrlMap resource. This method
 // supports patch semantics.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/urlMaps/patch
 func (r *UrlMapsService) Patch(project string, urlMap string, urlmap *UrlMap) *UrlMapsPatchCall {
@@ -39355,7 +39285,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Update the entire content of the UrlMap resource. This method supports patch semantics.",
+	//   "description": "Updates the entire content of the UrlMap resource. This method supports patch semantics.",
 	//   "httpMethod": "PATCH",
 	//   "id": "compute.urlMaps.patch",
 	//   "parameterOrder": [
@@ -39404,7 +39334,7 @@
 	ctx_       context.Context
 }
 
-// Update: Update the entire content of the UrlMap resource.
+// Update: Updates the entire content of the UrlMap resource.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/urlMaps/update
 func (r *UrlMapsService) Update(project string, urlMap string, urlmap *UrlMap) *UrlMapsUpdateCall {
 	c := &UrlMapsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -39490,7 +39420,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Update the entire content of the UrlMap resource.",
+	//   "description": "Updates the entire content of the UrlMap resource.",
 	//   "httpMethod": "PUT",
 	//   "id": "compute.urlMaps.update",
 	//   "parameterOrder": [
@@ -39539,7 +39469,7 @@
 	ctx_                   context.Context
 }
 
-// Validate: Run static validation for the UrlMap. In particular, the
+// Validate: Runs static validation for the UrlMap. In particular, the
 // tests of the provided UrlMap will be run. Calling this method does
 // NOT create the UrlMap.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/urlMaps/validate
@@ -39627,7 +39557,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Run static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
+	//   "description": "Runs static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.urlMaps.validate",
 	//   "parameterOrder": [
@@ -39675,7 +39605,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of VPN tunnels grouped by scope.
+// AggregatedList: Retrieves an aggregated list of VPN tunnels.
 func (r *VpnTunnelsService) AggregatedList(project string) *VpnTunnelsAggregatedListCall {
 	c := &VpnTunnelsAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -39832,7 +39762,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of VPN tunnels grouped by scope.",
+	//   "description": "Retrieves an aggregated list of VPN tunnels.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.vpnTunnels.aggregatedList",
 	//   "parameterOrder": [
@@ -40334,7 +40264,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of VpnTunnel resources contained in the
+// List: Retrieves a list of VpnTunnel resources contained in the
 // specified project and region.
 func (r *VpnTunnelsService) List(project string, region string) *VpnTunnelsListCall {
 	c := &VpnTunnelsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -40494,7 +40424,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of VpnTunnel resources contained in the specified project and region.",
+	//   "description": "Retrieves a list of VpnTunnel resources contained in the specified project and region.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.vpnTunnels.list",
 	//   "parameterOrder": [
@@ -40844,7 +40774,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of Operation resources contained within the
+// List: Retrieves a list of Operation resources contained within the
 // specified zone.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/zoneOperations/list
 func (r *ZoneOperationsService) List(project string, zone string) *ZoneOperationsListCall {
@@ -41005,7 +40935,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of Operation resources contained within the specified zone.",
+	//   "description": "Retrieves a list of Operation resources contained within the specified zone.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.zoneOperations.list",
 	//   "parameterOrder": [
diff --git a/compute/v1/compute-api.json b/compute/v1/compute-api.json
index bc27bb7..8d5db80 100644
--- a/compute/v1/compute-api.json
+++ b/compute/v1/compute-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/aU2RyGSEMbRxHCIqylkOho4GK2M\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/c55dTQvv4NWDkglZO3_PlmckRzg\"",
  "discoveryVersion": "v1",
  "id": "compute:v1",
  "name": "compute",
  "version": "v1",
- "revision": "20160107",
+ "revision": "20160120",
  "title": "Compute Engine API",
  "description": "API for the Google Compute Engine service.",
  "ownerDomain": "google.com",
@@ -746,12 +746,12 @@
     },
     "maxRate": {
      "type": "integer",
-     "description": "The max RPS of the group. Can be used with either balancing mode, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.",
+     "description": "The max requests per second (RPS) of the group. Can be used with either balancing mode, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.",
      "format": "int32"
     },
     "maxRatePerInstance": {
      "type": "number",
-     "description": "The max RPS that a single backed instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.",
+     "description": "The max requests per second (RPS) that a single backed instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.",
      "format": "float"
     },
     "maxUtilization": {
@@ -764,7 +764,7 @@
   "BackendService": {
    "id": "BackendService",
    "type": "object",
-   "description": "A BackendService resource. This resource defines a group of backend virtual machines together with their serving capacity.",
+   "description": "A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity.",
    "properties": {
     "backends": {
      "type": "array",
@@ -810,7 +810,7 @@
     },
     "port": {
      "type": "integer",
-     "description": "Deprecated in favor of port name. The TCP port to connect on the backend. The default value is 80.",
+     "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.",
      "format": "int32"
     },
     "portName": {
@@ -834,7 +834,7 @@
     },
     "timeoutSec": {
      "type": "integer",
-     "description": "How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.",
+     "description": "How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds. Valid range is [1, 86400].",
      "format": "int32"
     }
    }
@@ -1431,7 +1431,7 @@
     },
     "network": {
      "type": "string",
-     "description": "URL of the network resource for this firewall rule. This field is required for creating an instance but optional when creating a firewall rule. If not specified when creating a firewall rule, the default network is used:\nglobal/networks/default\nIf you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs:  \n- https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network \n- projects/myproject/global/networks/my-network \n- global/networks/default"
+     "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used:\nglobal/networks/default\nIf you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs:  \n- https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network \n- projects/myproject/global/networks/my-network \n- global/networks/default"
     },
     "selfLink": {
      "type": "string",
@@ -1555,7 +1555,7 @@
     },
     "target": {
      "type": "string",
-     "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global TargetHttpProxy or TargetHttpsProxy resource."
+     "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global TargetHttpProxy or TargetHttpsProxy resource. The forwarded traffic must be of a type appropriate to the target object. For example, TargetHttpProxy requires HTTP traffic, and TargetHttpsProxy requires HTTPS traffic."
     }
    }
   },
@@ -2128,7 +2128,7 @@
     },
     "description": {
      "type": "string",
-     "description": "An optional textual description of the resource; provided by the client when the resource is created."
+     "description": "An optional description of this resource. Provide this property when you create the resource."
     },
     "disks": {
      "type": "array",
@@ -2139,7 +2139,7 @@
     },
     "id": {
      "type": "string",
-     "description": "[Output Only] Unique identifier for the resource. This identifier is defined by the server.",
+     "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
      "format": "uint64"
     },
     "kind": {
@@ -2162,7 +2162,7 @@
     },
     "name": {
      "type": "string",
-     "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
+     "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
     },
     "networkInterfaces": {
      "type": "array",
@@ -2177,7 +2177,7 @@
     },
     "selfLink": {
      "type": "string",
-     "description": "[Output Only] Server defined URL for this resource."
+     "description": "[Output Only] Server-defined URL for this resource."
     },
     "serviceAccounts": {
      "type": "array",
@@ -2247,11 +2247,11 @@
     },
     "nextPageToken": {
      "type": "string",
-     "description": "[Output Only] A token used to continue a truncated list request."
+     "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
     },
     "selfLink": {
      "type": "string",
-     "description": "[Output Only] Server defined URL for this resource."
+     "description": "[Output Only] Server-defined URL for this resource."
     }
    }
   },
@@ -2312,6 +2312,10 @@
      "description": "[Output Only] The total number of instances in the instance group.",
      "format": "int32"
     },
+    "subnetwork": {
+     "type": "string",
+     "description": "[Output Only] The URL of the subnetwork to which all instances in the instance group belong."
+    },
     "zone": {
      "type": "string",
      "description": "[Output Only] The URL of the zone where the instance group is located."
@@ -2490,7 +2494,7 @@
     },
     "creating": {
      "type": "integer",
-     "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created.",
+     "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create one of these instances, it tries again until it creates the instance successfully.",
      "format": "int32"
     },
     "deleting": {
@@ -2929,11 +2933,11 @@
     },
     "nextPageToken": {
      "type": "string",
-     "description": "[Output Only] A token used to continue a truncated list request."
+     "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
     },
     "selfLink": {
      "type": "string",
-     "description": "[Output Only] Server defined URL for this resource."
+     "description": "[Output Only] Server-defined URL for this resource."
     }
    }
   },
@@ -3209,6 +3213,16 @@
     }
    }
   },
+  "InstancesSetMachineTypeRequest": {
+   "id": "InstancesSetMachineTypeRequest",
+   "type": "object",
+   "properties": {
+    "machineType": {
+     "type": "string",
+     "description": "Full or partial URL of the machine type resource. See Machine Types for a full list of machine types. For example: zones/us-central1-f/machineTypes/n1-standard-1"
+    }
+   }
+  },
   "License": {
    "id": "License",
    "type": "object",
@@ -3464,7 +3478,7 @@
    "properties": {
     "currentAction": {
      "type": "string",
-     "description": "[Output Only] The current action that the managed instance group has scheduled for the instance. Possible values: \n- NONE The instance is running, and the managed instance group does not have any scheduled actions for this instance. \n- CREATING The managed instance group is creating this instance. \n- RECREATING The managed instance group is recreating this instance. \n- DELETING The managed instance group is permanently deleting this instance. \n- ABANDONING The managed instance group is abandoning this instance. The instance will be removed from the instance group and from any target pools that are associated with this group. \n- RESTARTING The managed instance group is restarting the instance. \n- REFRESHING The managed instance group is applying configuration changes to the instance without stopping it. For example, the group can update the target pool list for an instance without stopping that instance.",
+     "description": "[Output Only] The current action that the managed instance group has scheduled for the instance. Possible values: \n- NONE The instance is running, and the managed instance group does not have any scheduled actions for this instance. \n- CREATING The managed instance group is creating this instance. If the group fails to create this instance, it will try again until it is successful. \n- CREATING_WITHOUT_RETRIES The managed instance group is attempting to create this instance only once. If the group fails to create this instance, it does not try again and the group's target_size value is decreased. \n- RECREATING The managed instance group is recreating this instance. \n- DELETING The managed instance group is permanently deleting this instance. \n- ABANDONING The managed instance group is abandoning this instance. The instance will be removed from the instance group and from any target pools that are associated with this group. \n- RESTARTING The managed instance group is restarting the instance. \n- REFRESHING The managed instance group is applying configuration changes to the instance without stopping it. For example, the group can update the target pool list for an instance without stopping that instance.",
      "enum": [
       "ABANDONING",
       "CREATING",
@@ -3629,6 +3643,10 @@
      "description": "The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
      "pattern": "[0-9]{1,3}(?:\\.[0-9]{1,3}){3}/[0-9]{1,2}"
     },
+    "autoCreateSubnetworks": {
+     "type": "boolean",
+     "description": "When set to true, the network is created in \"auto subnet mode\". When set to false, the network is in \"custom subnet mode\".\n\nIn \"auto subnet mode\", a newly created network is assigned the default CIDR of 10.128.0.0/9 and it automatically creates one subnetwork per region."
+    },
     "creationTimestamp": {
      "type": "string",
      "description": "[Output Only] Creation timestamp in RFC3339 text format."
@@ -3665,6 +3683,13 @@
     "selfLink": {
      "type": "string",
      "description": "[Output Only] Server-defined URL for the resource."
+    },
+    "subnetworks": {
+     "type": "array",
+     "description": "[Output Only] Server-defined fully-qualified URLs for all subnetworks in this network.",
+     "items": {
+      "type": "string"
+     }
     }
    }
   },
@@ -3696,6 +3721,10 @@
     "networkIP": {
      "type": "string",
      "description": "[Output Only] An optional IPV4 internal network address assigned to the instance for this network interface."
+    },
+    "subnetwork": {
+     "type": "string",
+     "description": "The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, do not provide this property. If the network is in auto subnet mode, providing the subnetwork is optional. If the network is in custom subnet mode, then this field should be specified. If you specify this property, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs:  \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/subnetworks/subnetwork \n- zones/zone/subnetworks/subnetwork"
     }
    }
   },
@@ -3784,7 +3813,7 @@
     },
     "httpErrorStatusCode": {
      "type": "integer",
-     "description": "[Output Only] If the operation fails, this field contains the HTTP error message that was returned. For example, a 404 means the resource was not found.",
+     "description": "[Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.",
      "format": "int32"
     },
     "id": {
@@ -3811,12 +3840,12 @@
     },
     "progress": {
      "type": "integer",
-     "description": "[Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should monotonically increase as the operation progresses.",
+     "description": "[Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.",
      "format": "int32"
     },
     "region": {
      "type": "string",
-     "description": "[Output Only] URL of the region where the operation resides. Only applicable for regional resources."
+     "description": "[Output Only] URL of the region where the operation resides. Only available when performing regional operations."
     },
     "selfLink": {
      "type": "string",
@@ -3925,7 +3954,7 @@
     },
     "zone": {
      "type": "string",
-     "description": "[Output Only] URL of the zone where the operation resides."
+     "description": "[Output Only] URL of the zone where the operation resides. Only available when performing per-zone operations."
     }
    }
   },
@@ -4074,7 +4103,7 @@
    "properties": {
     "defaultService": {
      "type": "string",
-     "description": "The URL to the BackendService resource. This will be used if none of the pathRules defined by this PathMatcher is met by the URL's path portion."
+     "description": "The full or partial URL to the BackendService resource. This will be used if none of the pathRules defined by this PathMatcher is matched by the URL's path portion. For example, the following are all valid URLs to a BackendService resource:  \n- https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService \n- compute/v1/projects/project/global/backendServices/backendService \n- global/backendServices/backendService"
     },
     "description": {
      "type": "string",
@@ -4162,7 +4191,7 @@
     },
     "usageExportLocation": {
      "$ref": "UsageExportLocation",
-     "description": "The location in Cloud Storage and naming method of the daily usage report."
+     "description": "The naming prefix for daily usage reports and the Google Cloud Storage bucket where they are stored."
     }
    }
   },
@@ -4200,6 +4229,7 @@
       "SSD_TOTAL_GB",
       "SSL_CERTIFICATES",
       "STATIC_ADDRESSES",
+      "SUBNETWORKS",
       "TARGET_HTTPS_PROXIES",
       "TARGET_HTTP_PROXIES",
       "TARGET_INSTANCES",
@@ -4235,6 +4265,7 @@
       "",
       "",
       "",
+      "",
       ""
      ]
     },
@@ -4352,7 +4383,7 @@
   "Route": {
    "id": "Route",
    "type": "object",
-   "description": "The route resource. A Route is a rule that specifies how certain packets should be handled by the virtual network. Routes are associated with instances by tag and the set of Routes for a particular instance is called its routing table. For each packet leaving a instance, the system searches that instance's routing table for a single best matching Route. Routes match packets by destination IP address, preferring smaller or more specific ranges over larger ones. If there is a tie, the system selects the Route with the smallest priority value. If there is still a tie, it uses the layer three and four packet headers to select just one of the remaining matching Routes. The packet is then forwarded as specified by the nextHop field of the winning Route -- either to another instance destination, a instance gateway or a Google Compute Engien-operated gateway. Packets that do not match any Route in the sending instance's routing table are dropped.",
+   "description": "The route resource. A Route is a rule that specifies how certain packets should be handled by the virtual network. Routes are associated with instances by tags and the set of Routes for a particular instance is called its routing table. For each packet leaving a instance, the system searches that instance's routing table for a single best matching Route. Routes match packets by destination IP address, preferring smaller or more specific ranges over larger ones. If there is a tie, the system selects the Route with the smallest priority value. If there is still a tie, it uses the layer three and four packet headers to select just one of the remaining matching Routes. The packet is then forwarded as specified by the nextHop field of the winning Route -- either to another instance destination, a instance gateway or a Google Compute Engien-operated gateway. Packets that do not match any Route in the sending instance's routing table are dropped.",
    "properties": {
     "creationTimestamp": {
      "type": "string",
@@ -4402,11 +4433,11 @@
     },
     "nextHopGateway": {
      "type": "string",
-     "description": "The URL to a gateway that should handle matching packets. Currently, this is only the internet gateway:  projects/\u003cproject-id\u003e/global/gateways/default-internet-gateway"
+     "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL:  projects/\u003cproject-id\u003e/global/gateways/default-internet-gateway"
     },
     "nextHopInstance": {
      "type": "string",
-     "description": "The fully-qualified URL to an instance that should handle matching packets. For example:\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/"
+     "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example:\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/"
     },
     "nextHopIp": {
      "type": "string",
@@ -4422,7 +4453,7 @@
     },
     "priority": {
      "type": "integer",
-     "description": "Breaks ties between Routes of equal specificity. Routes with smaller values win when tied with routes with larger values. Default value is 1000. A valid range is between 0 and 65535.",
+     "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In the case of two routes with equal prefix length, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.",
      "format": "uint32",
      "annotations": {
       "required": [
@@ -4525,7 +4556,7 @@
     },
     "items": {
      "type": "array",
-     "description": "A list of Route resources.",
+     "description": "[Output Only] A list of Route resources.",
      "items": {
       "$ref": "Route"
      }
@@ -4588,7 +4619,7 @@
     },
     "selfLink": {
      "type": "string",
-     "description": "[Output Only] Server defined URL for the resource."
+     "description": "[Output Only] Server-defined URL for the resource."
     }
    }
   },
@@ -4656,7 +4687,7 @@
     },
     "sourceDisk": {
      "type": "string",
-     "description": "The source disk used to create this snapshot."
+     "description": "[Output Only] The source disk used to create this snapshot."
     },
     "sourceDiskId": {
      "type": "string",
@@ -4710,7 +4741,7 @@
     },
     "items": {
      "type": "array",
-     "description": "A list of Snapshot resources.",
+     "description": "[Output Only] A list of Snapshot resources.",
      "items": {
       "$ref": "Snapshot"
      }
@@ -4733,7 +4764,7 @@
   "SslCertificate": {
    "id": "SslCertificate",
    "type": "object",
-   "description": "An SslCertificate resource. This resource provides a mechanism to upload an SSL key and certificate to global HTTPS loadbalancer to serve secure connections.",
+   "description": "An SslCertificate resource. This resource provides a mechanism to upload an SSL key and certificate to the load balancer to serve secure connections from the user.",
    "properties": {
     "certificate": {
      "type": "string",
@@ -4803,6 +4834,194 @@
     }
    }
   },
+  "Subnetwork": {
+   "id": "Subnetwork",
+   "type": "object",
+   "description": "A Subnetwork resource.",
+   "properties": {
+    "creationTimestamp": {
+     "type": "string",
+     "description": "[Output Only] Creation timestamp in RFC3339 text format."
+    },
+    "description": {
+     "type": "string",
+     "description": "An optional description of this resource. Provide this property when you create the resource."
+    },
+    "gatewayAddress": {
+     "type": "string",
+     "description": "[Output Only] The gateway address for default routes to reach destination addresses outside this subnetwork."
+    },
+    "id": {
+     "type": "string",
+     "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+     "format": "uint64"
+    },
+    "ipCidrRange": {
+     "type": "string",
+     "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and non-overlapping within a network."
+    },
+    "kind": {
+     "type": "string",
+     "description": "[Output Only] Type of the resource. Always compute#subnetwork for Subnetwork resources.",
+     "default": "compute#subnetwork"
+    },
+    "name": {
+     "type": "string",
+     "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+     "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
+    },
+    "network": {
+     "type": "string",
+     "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. Only networks that are in the distributed mode can have subnetworks."
+    },
+    "region": {
+     "type": "string",
+     "description": "[Output Only] URL of the region where the Subnetwork resides."
+    },
+    "selfLink": {
+     "type": "string",
+     "description": "[Output Only] Server-defined URL for the resource."
+    }
+   }
+  },
+  "SubnetworkAggregatedList": {
+   "id": "SubnetworkAggregatedList",
+   "type": "object",
+   "properties": {
+    "id": {
+     "type": "string",
+     "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server."
+    },
+    "items": {
+     "type": "object",
+     "description": "[Output] A map of scoped Subnetwork lists.",
+     "additionalProperties": {
+      "$ref": "SubnetworksScopedList",
+      "description": "Name of the scope containing this set of Subnetworks."
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "[Output Only] Type of resource. Always compute#subnetworkAggregatedList for aggregated lists of subnetworks.",
+     "default": "compute#subnetworkAggregatedList"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
+    },
+    "selfLink": {
+     "type": "string",
+     "description": "[Output Only] Server-defined URL for this resource."
+    }
+   }
+  },
+  "SubnetworkList": {
+   "id": "SubnetworkList",
+   "type": "object",
+   "description": "Contains a list of Subnetwork resources.",
+   "properties": {
+    "id": {
+     "type": "string",
+     "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server."
+    },
+    "items": {
+     "type": "array",
+     "description": "The Subnetwork resources.",
+     "items": {
+      "$ref": "Subnetwork"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "[Output Only] Type of resource. Always compute#subnetworkList for lists of subnetworks.",
+     "default": "compute#subnetworkList"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
+    },
+    "selfLink": {
+     "type": "string",
+     "description": "[Output Only] Server-defined URL for this resource."
+    }
+   }
+  },
+  "SubnetworksScopedList": {
+   "id": "SubnetworksScopedList",
+   "type": "object",
+   "properties": {
+    "subnetworks": {
+     "type": "array",
+     "description": "List of subnetworks contained in this scope.",
+     "items": {
+      "$ref": "Subnetwork"
+     }
+    },
+    "warning": {
+     "type": "object",
+     "description": "An informational warning that appears when the list of addresses is empty.",
+     "properties": {
+      "code": {
+       "type": "string",
+       "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+       "enum": [
+        "DEPRECATED_RESOURCE_USED",
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+        "INJECTED_KERNELS_DEPRECATED",
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+        "NEXT_HOP_CANNOT_IP_FORWARD",
+        "NEXT_HOP_INSTANCE_NOT_FOUND",
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+        "NEXT_HOP_NOT_RUNNING",
+        "NOT_CRITICAL_ERROR",
+        "NO_RESULTS_ON_PAGE",
+        "REQUIRED_TOS_AGREEMENT",
+        "RESOURCE_NOT_DELETED",
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+        "UNREACHABLE"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        ""
+       ]
+      },
+      "data": {
+       "type": "array",
+       "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+       "items": {
+        "type": "object",
+        "properties": {
+         "key": {
+          "type": "string",
+          "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource, and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
+         },
+         "value": {
+          "type": "string",
+          "description": "[Output Only] A warning data value corresponding to the key."
+         }
+        }
+       }
+      },
+      "message": {
+       "type": "string",
+       "description": "[Output Only] A human-readable description of the warning code."
+      }
+     }
+    }
+   }
+  },
   "Tags": {
    "id": "Tags",
    "type": "object",
@@ -4938,7 +5157,7 @@
     },
     "sslCertificates": {
      "type": "array",
-     "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. Currently exactly one SSL certificate must be specified.",
+     "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. Currently exactly one SSL certificate must be specified.",
      "items": {
       "type": "string"
      }
@@ -5878,7 +6097,7 @@
    "properties": {
     "bucketName": {
      "type": "string",
-     "description": "The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This is just the bucket name, with no gs:// or https://storage.googleapis.com/ in front of it."
+     "description": "The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This can either be the bucket name by itself, such as example-bucket, or the bucket name with gs:// or https://storage.googleapis.com/ in front of it, such as gs://example-bucket."
     },
     "reportNamePrefix": {
      "type": "string",
@@ -5917,6 +6136,13 @@
      "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
      "default": "compute#vpnTunnel"
     },
+    "localTrafficSelector": {
+     "type": "array",
+     "description": "Local traffic selector to use when establishing the VPN tunnel with peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint.",
+     "items": {
+      "type": "string"
+     }
+    },
     "name": {
      "type": "string",
      "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
@@ -5941,7 +6167,7 @@
     },
     "sharedSecret": {
      "type": "string",
-     "description": "Shared secret used to set the secure session between the GCE VPN gateway and the peer VPN gateway."
+     "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway."
     },
     "sharedSecretHash": {
      "type": "string",
@@ -6243,7 +6469,7 @@
      "id": "compute.addresses.aggregatedList",
      "path": "{project}/aggregated/addresses",
      "httpMethod": "GET",
-     "description": "Retrieves the list of addresses grouped by scope.",
+     "description": "Retrieves an aggregated list of addresses.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -6407,7 +6633,7 @@
      "id": "compute.addresses.list",
      "path": "{project}/regions/{region}/addresses",
      "httpMethod": "GET",
-     "description": "Retrieves the list of address resources contained within the specified region.",
+     "description": "Retrieves a list of address resources contained within the specified region.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -6464,7 +6690,7 @@
      "id": "compute.autoscalers.aggregatedList",
      "path": "{project}/aggregated/autoscalers",
      "httpMethod": "GET",
-     "description": "Retrieves the list of autoscalers grouped by scope.",
+     "description": "Retrieves an aggregated list of autoscalers.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -6628,7 +6854,7 @@
      "id": "compute.autoscalers.list",
      "path": "{project}/zones/{zone}/autoscalers",
      "httpMethod": "GET",
-     "description": "Retrieves the list of autoscaler resources contained within the specified zone.",
+     "description": "Retrieves a list of autoscaler resources contained within the specified zone.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -6874,7 +7100,7 @@
      "id": "compute.backendServices.insert",
      "path": "{project}/global/backendServices",
      "httpMethod": "POST",
-     "description": "Creates a BackendService resource in the specified project using the data included in the request.",
+     "description": "Creates a BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a backend service. Read  Restrictions and Guidelines for more information.",
      "parameters": {
       "project": {
        "type": "string",
@@ -6947,7 +7173,7 @@
      "id": "compute.backendServices.patch",
      "path": "{project}/global/backendServices/{backendService}",
      "httpMethod": "PATCH",
-     "description": "Update the entire content of the BackendService resource. This method supports patch semantics.",
+     "description": "Updates the entire content of the BackendService resource. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information. This method supports patch semantics.",
      "parameters": {
       "backendService": {
        "type": "string",
@@ -6983,7 +7209,7 @@
      "id": "compute.backendServices.update",
      "path": "{project}/global/backendServices/{backendService}",
      "httpMethod": "PUT",
-     "description": "Update the entire content of the BackendService resource.",
+     "description": "Updates the entire content of the BackendService resource. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information.",
      "parameters": {
       "backendService": {
        "type": "string",
@@ -7023,7 +7249,7 @@
      "id": "compute.diskTypes.aggregatedList",
      "path": "{project}/aggregated/diskTypes",
      "httpMethod": "GET",
-     "description": "Retrieves the list of disk type resources grouped by scope.",
+     "description": "Retrieves an aggregated list of disk type resources.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -7110,7 +7336,7 @@
      "id": "compute.diskTypes.list",
      "path": "{project}/zones/{zone}/diskTypes",
      "httpMethod": "GET",
-     "description": "Retrieves the list of disk type resources available to the specified project.",
+     "description": "Retrieves a list of disk type resources available to the specified project.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -7167,7 +7393,7 @@
      "id": "compute.disks.aggregatedList",
      "path": "{project}/aggregated/disks",
      "httpMethod": "GET",
-     "description": "Retrieves the list of persistent disks grouped by scope.",
+     "description": "Retrieves an aggregated list of persistent disks.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -7380,7 +7606,7 @@
      "id": "compute.disks.list",
      "path": "{project}/zones/{zone}/disks",
      "httpMethod": "GET",
-     "description": "Retrieves the list of persistent disks contained within the specified zone.",
+     "description": "Retrieves a list of persistent disks contained within the specified zone.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -7653,7 +7879,7 @@
      "id": "compute.forwardingRules.aggregatedList",
      "path": "{project}/aggregated/forwardingRules",
      "httpMethod": "GET",
-     "description": "Retrieves the list of forwarding rules grouped by scope.",
+     "description": "Retrieves an aggregated list of forwarding rules.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -7817,7 +8043,7 @@
      "id": "compute.forwardingRules.list",
      "path": "{project}/regions/{region}/forwardingRules",
      "httpMethod": "GET",
-     "description": "Retrieves the list of ForwardingRule resources available to the specified project and region.",
+     "description": "Retrieves a list of ForwardingRule resources available to the specified project and region.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -8013,7 +8239,7 @@
      "id": "compute.globalAddresses.list",
      "path": "{project}/global/addresses",
      "httpMethod": "GET",
-     "description": "Retrieves the list of global address resources.",
+     "description": "Retrieves a list of global address resources.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -8157,7 +8383,7 @@
      "id": "compute.globalForwardingRules.list",
      "path": "{project}/global/forwardingRules",
      "httpMethod": "GET",
-     "description": "Retrieves the list of ForwardingRule resources available to the specified project.",
+     "description": "Retrieves a list of ForwardingRule resources available to the specified project.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -8242,7 +8468,7 @@
      "id": "compute.globalOperations.aggregatedList",
      "path": "{project}/aggregated/operations",
      "httpMethod": "GET",
-     "description": "Retrieves the list of all operations grouped by scope.",
+     "description": "Retrieves an aggregated list of all operations.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -8351,7 +8577,7 @@
      "id": "compute.globalOperations.list",
      "path": "{project}/global/operations",
      "httpMethod": "GET",
-     "description": "Retrieves the list of Operation resources contained within the specified project.",
+     "description": "Retrieves a list of Operation resources contained within the specified project.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -9102,7 +9328,7 @@
      "id": "compute.instanceGroupManagers.delete",
      "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
      "httpMethod": "DELETE",
-     "description": "Deletes the specified managed instance group and all of the instances in that group.",
+     "description": "Deletes the specified managed instance group and all of the instances in that group. Note that the instance group must not belong to a backend service. Read  Deleting an instance group for more information.",
      "parameters": {
       "instanceGroupManager": {
        "type": "string",
@@ -9527,7 +9753,7 @@
      "id": "compute.instanceGroups.addInstances",
      "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/addInstances",
      "httpMethod": "POST",
-     "description": "Adds a list of instances to the specified instance group. All of the instances in the instance group must be in the same network/subnetwork.",
+     "description": "Adds a list of instances to the specified instance group. Read  Adding instances for more information.",
      "parameters": {
       "instanceGroup": {
        "type": "string",
@@ -9614,7 +9840,7 @@
      "id": "compute.instanceGroups.delete",
      "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}",
      "httpMethod": "DELETE",
-     "description": "Deletes the specified instance group. The instances in the group are not deleted.",
+     "description": "Deletes the specified instance group. The instances in the group are not deleted. Note that instance group must not belong to a backend service. Read  Deleting an instance group for more information.",
      "parameters": {
       "instanceGroup": {
        "type": "string",
@@ -9997,7 +10223,7 @@
      "id": "compute.instanceTemplates.insert",
      "path": "{project}/global/instanceTemplates",
      "httpMethod": "POST",
-     "description": "Creates an instance template in the specified project using the data that is included in the request.",
+     "description": "Creates an instance template in the specified project using the data that is included in the request. If you are creating a new template to update an existing instance group, your new instance template must use the same network or, if applicable, the same subnetwork as the original template.",
      "parameters": {
       "project": {
        "type": "string",
@@ -10634,6 +10860,50 @@
       "https://www.googleapis.com/auth/compute"
      ]
     },
+    "setMachineType": {
+     "id": "compute.instances.setMachineType",
+     "path": "{project}/zones/{zone}/instances/{instance}/setMachineType",
+     "httpMethod": "POST",
+     "description": "Changes the machine type for a stopped instance to the machine type specified in the request.",
+     "parameters": {
+      "instance": {
+       "type": "string",
+       "description": "Name of the instance scoping this request.",
+       "required": true,
+       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+       "location": "path"
+      },
+      "project": {
+       "type": "string",
+       "description": "Project ID for this request.",
+       "required": true,
+       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+       "location": "path"
+      },
+      "zone": {
+       "type": "string",
+       "description": "The name of the zone for this request.",
+       "required": true,
+       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "project",
+      "zone",
+      "instance"
+     ],
+     "request": {
+      "$ref": "InstancesSetMachineTypeRequest"
+     },
+     "response": {
+      "$ref": "Operation"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/compute"
+     ]
+    },
     "setMetadata": {
      "id": "compute.instances.setMetadata",
      "path": "{project}/zones/{zone}/instances/{instance}/setMetadata",
@@ -10770,7 +11040,7 @@
      "id": "compute.instances.start",
      "path": "{project}/zones/{zone}/instances/{instance}/start",
      "httpMethod": "POST",
-     "description": "This method starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
+     "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
      "parameters": {
       "instance": {
        "type": "string",
@@ -10811,7 +11081,7 @@
      "id": "compute.instances.stop",
      "path": "{project}/zones/{zone}/instances/{instance}/stop",
      "httpMethod": "POST",
-     "description": "This method stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur per-minute, virtual machine usage charges while they are stopped, but any resources that the virtual machine is using, such as persistent disks and static IP addresses,will continue to be charged until they are deleted. For more information, see Stopping an instance.",
+     "description": "Stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur per-minute, virtual machine usage charges while they are stopped, but any resources that the virtual machine is using, such as persistent disks and static IP addresses, will continue to be charged until they are deleted. For more information, see Stopping an instance.",
      "parameters": {
       "instance": {
        "type": "string",
@@ -10894,7 +11164,7 @@
      "id": "compute.machineTypes.aggregatedList",
      "path": "{project}/aggregated/machineTypes",
      "httpMethod": "GET",
-     "description": "Retrieves the list of machine type resources grouped by scope.",
+     "description": "Retrieves an aggregated list of machine type resources.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -10981,7 +11251,7 @@
      "id": "compute.machineTypes.list",
      "path": "{project}/zones/{zone}/machineTypes",
      "httpMethod": "GET",
-     "description": "Retrieves the list of machine type resources available to the specified project.",
+     "description": "Retrieves a list of machine type resources available to the specified project.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -11383,7 +11653,7 @@
       },
       "region": {
        "type": "string",
-       "description": "Name of the zone scoping this request.",
+       "description": "Name of the region scoping this request.",
        "required": true,
        "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
        "location": "path"
@@ -11407,7 +11677,7 @@
      "id": "compute.regionOperations.list",
      "path": "{project}/regions/{region}/operations",
      "httpMethod": "GET",
-     "description": "Retrieves the list of Operation resources contained within the specified region.",
+     "description": "Retrieves a list of Operation resources contained within the specified region.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -11945,6 +12215,227 @@
     }
    }
   },
+  "subnetworks": {
+   "methods": {
+    "aggregatedList": {
+     "id": "compute.subnetworks.aggregatedList",
+     "path": "{project}/aggregated/subnetworks",
+     "httpMethod": "GET",
+     "description": "Retrieves an aggregated list of subnetworks.",
+     "parameters": {
+      "filter": {
+       "type": "string",
+       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+       "default": "500",
+       "format": "uint32",
+       "minimum": "0",
+       "maximum": "500",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+       "location": "query"
+      },
+      "project": {
+       "type": "string",
+       "description": "Project ID for this request.",
+       "required": true,
+       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "project"
+     ],
+     "response": {
+      "$ref": "SubnetworkAggregatedList"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/compute",
+      "https://www.googleapis.com/auth/compute.readonly"
+     ]
+    },
+    "delete": {
+     "id": "compute.subnetworks.delete",
+     "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
+     "httpMethod": "DELETE",
+     "description": "Deletes the specified subnetwork.",
+     "parameters": {
+      "project": {
+       "type": "string",
+       "description": "Project ID for this request.",
+       "required": true,
+       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+       "location": "path"
+      },
+      "region": {
+       "type": "string",
+       "description": "Name of the region scoping this request.",
+       "required": true,
+       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+       "location": "path"
+      },
+      "subnetwork": {
+       "type": "string",
+       "description": "Name of the Subnetwork resource to delete.",
+       "required": true,
+       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "project",
+      "region",
+      "subnetwork"
+     ],
+     "response": {
+      "$ref": "Operation"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/compute"
+     ]
+    },
+    "get": {
+     "id": "compute.subnetworks.get",
+     "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
+     "httpMethod": "GET",
+     "description": "Returns the specified subnetwork.",
+     "parameters": {
+      "project": {
+       "type": "string",
+       "description": "Project ID for this request.",
+       "required": true,
+       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+       "location": "path"
+      },
+      "region": {
+       "type": "string",
+       "description": "Name of the region scoping this request.",
+       "required": true,
+       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+       "location": "path"
+      },
+      "subnetwork": {
+       "type": "string",
+       "description": "Name of the Subnetwork resource to return.",
+       "required": true,
+       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "project",
+      "region",
+      "subnetwork"
+     ],
+     "response": {
+      "$ref": "Subnetwork"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/compute",
+      "https://www.googleapis.com/auth/compute.readonly"
+     ]
+    },
+    "insert": {
+     "id": "compute.subnetworks.insert",
+     "path": "{project}/regions/{region}/subnetworks",
+     "httpMethod": "POST",
+     "description": "Creates a subnetwork in the specified project using the data included in the request.",
+     "parameters": {
+      "project": {
+       "type": "string",
+       "description": "Project ID for this request.",
+       "required": true,
+       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+       "location": "path"
+      },
+      "region": {
+       "type": "string",
+       "description": "Name of the region scoping this request.",
+       "required": true,
+       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "project",
+      "region"
+     ],
+     "request": {
+      "$ref": "Subnetwork"
+     },
+     "response": {
+      "$ref": "Operation"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/compute"
+     ]
+    },
+    "list": {
+     "id": "compute.subnetworks.list",
+     "path": "{project}/regions/{region}/subnetworks",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of subnetworks available to the specified project.",
+     "parameters": {
+      "filter": {
+       "type": "string",
+       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+       "default": "500",
+       "format": "uint32",
+       "minimum": "0",
+       "maximum": "500",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+       "location": "query"
+      },
+      "project": {
+       "type": "string",
+       "description": "Project ID for this request.",
+       "required": true,
+       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+       "location": "path"
+      },
+      "region": {
+       "type": "string",
+       "description": "Name of the region scoping this request.",
+       "required": true,
+       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "project",
+      "region"
+     ],
+     "response": {
+      "$ref": "SubnetworkList"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/compute",
+      "https://www.googleapis.com/auth/compute.readonly"
+     ]
+    }
+   }
+  },
   "targetHttpProxies": {
    "methods": {
     "delete": {
@@ -12347,7 +12838,7 @@
      "id": "compute.targetInstances.aggregatedList",
      "path": "{project}/aggregated/targetInstances",
      "httpMethod": "GET",
-     "description": "Retrieves the list of target instances grouped by scope.",
+     "description": "Retrieves an aggregated list of target instances.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -12511,7 +13002,7 @@
      "id": "compute.targetInstances.list",
      "path": "{project}/zones/{zone}/targetInstances",
      "httpMethod": "GET",
-     "description": "Retrieves the list of TargetInstance resources available to the specified project and zone.",
+     "description": "Retrieves a list of TargetInstance resources available to the specified project and zone.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -12654,7 +13145,7 @@
      "id": "compute.targetPools.aggregatedList",
      "path": "{project}/aggregated/targetPools",
      "httpMethod": "GET",
-     "description": "Retrieves the list of target pools grouped by scope.",
+     "description": "Retrieves an aggregated list of target pools.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -12782,7 +13273,7 @@
      "id": "compute.targetPools.getHealth",
      "path": "{project}/regions/{region}/targetPools/{targetPool}/getHealth",
      "httpMethod": "POST",
-     "description": "Gets the most recent health check results for each IP for the given instance that is referenced by given TargetPool.",
+     "description": "Gets the most recent health check results for each IP for the given instance that is referenced by the given TargetPool.",
      "parameters": {
       "project": {
        "type": "string",
@@ -12862,7 +13353,7 @@
      "id": "compute.targetPools.list",
      "path": "{project}/regions/{region}/targetPools",
      "httpMethod": "GET",
-     "description": "Retrieves the list of TargetPool resources available to the specified project and region.",
+     "description": "Retrieves a list of TargetPool resources available to the specified project and region.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -13055,7 +13546,7 @@
      "id": "compute.targetVpnGateways.aggregatedList",
      "path": "{project}/aggregated/targetVpnGateways",
      "httpMethod": "GET",
-     "description": "Retrieves the list of target VPN gateways grouped by scope.",
+     "description": "Retrieves an aggregated list of target VPN gateways .",
      "parameters": {
       "filter": {
        "type": "string",
@@ -13219,7 +13710,7 @@
      "id": "compute.targetVpnGateways.list",
      "path": "{project}/regions/{region}/targetVpnGateways",
      "httpMethod": "GET",
-     "description": "Retrieves the list of TargetVpnGateway resources available to the specified project and region.",
+     "description": "Retrieves a list of TargetVpnGateway resources available to the specified project and region.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -13416,7 +13907,7 @@
      "id": "compute.urlMaps.patch",
      "path": "{project}/global/urlMaps/{urlMap}",
      "httpMethod": "PATCH",
-     "description": "Update the entire content of the UrlMap resource. This method supports patch semantics.",
+     "description": "Updates the entire content of the UrlMap resource. This method supports patch semantics.",
      "parameters": {
       "project": {
        "type": "string",
@@ -13452,7 +13943,7 @@
      "id": "compute.urlMaps.update",
      "path": "{project}/global/urlMaps/{urlMap}",
      "httpMethod": "PUT",
-     "description": "Update the entire content of the UrlMap resource.",
+     "description": "Updates the entire content of the UrlMap resource.",
      "parameters": {
       "project": {
        "type": "string",
@@ -13488,7 +13979,7 @@
      "id": "compute.urlMaps.validate",
      "path": "{project}/global/urlMaps/{urlMap}/validate",
      "httpMethod": "POST",
-     "description": "Run static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
+     "description": "Runs static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
      "parameters": {
       "project": {
        "type": "string",
@@ -13528,7 +14019,7 @@
      "id": "compute.vpnTunnels.aggregatedList",
      "path": "{project}/aggregated/vpnTunnels",
      "httpMethod": "GET",
-     "description": "Retrieves the list of VPN tunnels grouped by scope.",
+     "description": "Retrieves an aggregated list of VPN tunnels.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -13692,7 +14183,7 @@
      "id": "compute.vpnTunnels.list",
      "path": "{project}/regions/{region}/vpnTunnels",
      "httpMethod": "GET",
-     "description": "Retrieves the list of VpnTunnel resources contained in the specified project and region.",
+     "description": "Retrieves a list of VpnTunnel resources contained in the specified project and region.",
      "parameters": {
       "filter": {
        "type": "string",
@@ -13829,7 +14320,7 @@
      "id": "compute.zoneOperations.list",
      "path": "{project}/zones/{zone}/operations",
      "httpMethod": "GET",
-     "description": "Retrieves the list of Operation resources contained within the specified zone.",
+     "description": "Retrieves a list of Operation resources contained within the specified zone.",
      "parameters": {
       "filter": {
        "type": "string",
diff --git a/compute/v1/compute-gen.go b/compute/v1/compute-gen.go
index 2f9d250..442346a 100644
--- a/compute/v1/compute-gen.go
+++ b/compute/v1/compute-gen.go
@@ -97,6 +97,7 @@
 	s.Routes = NewRoutesService(s)
 	s.Snapshots = NewSnapshotsService(s)
 	s.SslCertificates = NewSslCertificatesService(s)
+	s.Subnetworks = NewSubnetworksService(s)
 	s.TargetHttpProxies = NewTargetHttpProxiesService(s)
 	s.TargetHttpsProxies = NewTargetHttpsProxiesService(s)
 	s.TargetInstances = NewTargetInstancesService(s)
@@ -166,6 +167,8 @@
 
 	SslCertificates *SslCertificatesService
 
+	Subnetworks *SubnetworksService
+
 	TargetHttpProxies *TargetHttpProxiesService
 
 	TargetHttpsProxies *TargetHttpsProxiesService
@@ -426,6 +429,15 @@
 	s *Service
 }
 
+func NewSubnetworksService(s *Service) *SubnetworksService {
+	rs := &SubnetworksService{s: s}
+	return rs
+}
+
+type SubnetworksService struct {
+	s *Service
+}
+
 func NewTargetHttpProxiesService(s *Service) *TargetHttpProxiesService {
 	rs := &TargetHttpProxiesService{s: s}
 	return rs
@@ -1370,15 +1382,15 @@
 	// fully-qualified URL, rather than a partial URL.
 	Group string `json:"group,omitempty"`
 
-	// MaxRate: The max RPS of the group. Can be used with either balancing
-	// mode, but required if RATE mode. For RATE mode, either maxRate or
-	// maxRatePerInstance must be set.
+	// MaxRate: The max requests per second (RPS) of the group. Can be used
+	// with either balancing mode, but required if RATE mode. For RATE mode,
+	// either maxRate or maxRatePerInstance must be set.
 	MaxRate int64 `json:"maxRate,omitempty"`
 
-	// MaxRatePerInstance: The max RPS that a single backed instance can
-	// handle. This is used to calculate the capacity of the group. Can be
-	// used in either balancing mode. For RATE mode, either maxRate or
-	// maxRatePerInstance must be set.
+	// MaxRatePerInstance: The max requests per second (RPS) that a single
+	// backed instance can handle. This is used to calculate the capacity of
+	// the group. Can be used in either balancing mode. For RATE mode,
+	// either maxRate or maxRatePerInstance must be set.
 	MaxRatePerInstance float64 `json:"maxRatePerInstance,omitempty"`
 
 	// MaxUtilization: Used when balancingMode is UTILIZATION. This ratio
@@ -1402,8 +1414,7 @@
 }
 
 // BackendService: A BackendService resource. This resource defines a
-// group of backend virtual machines together with their serving
-// capacity.
+// group of backend virtual machines and their serving capacity.
 type BackendService struct {
 	// Backends: The list of backends that serve this BackendService.
 	Backends []*Backend `json:"backends,omitempty"`
@@ -1445,8 +1456,8 @@
 	// last character, which cannot be a dash.
 	Name string `json:"name,omitempty"`
 
-	// Port: Deprecated in favor of port name. The TCP port to connect on
-	// the backend. The default value is 80.
+	// Port: Deprecated in favor of portName. The TCP port to connect on the
+	// backend. The default value is 80.
 	Port int64 `json:"port,omitempty"`
 
 	// PortName: Name of backend port. The same name should appear in the
@@ -1462,7 +1473,8 @@
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// TimeoutSec: How many seconds to wait for the backend before
-	// considering it a failed request. Default is 30 seconds.
+	// considering it a failed request. Default is 30 seconds. Valid range
+	// is [1, 86400].
 	TimeoutSec int64 `json:"timeoutSec,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -2234,10 +2246,9 @@
 	// last character, which cannot be a dash.
 	Name string `json:"name,omitempty"`
 
-	// Network: URL of the network resource for this firewall rule. This
-	// field is required for creating an instance but optional when creating
-	// a firewall rule. If not specified when creating a firewall rule, the
-	// default network is used:
+	// Network: URL of the network resource for this firewall rule. If not
+	// specified when creating a firewall rule, the default network is
+	// used:
 	// global/networks/default
 	// If you choose to specify this property, you can specify the network
 	// as a full or partial URL. For example, the following are all valid
@@ -2434,6 +2445,9 @@
 	// traffic. For regional forwarding rules, this target must live in the
 	// same region as the forwarding rule. For global forwarding rules, this
 	// target must be a global TargetHttpProxy or TargetHttpsProxy resource.
+	// The forwarded traffic must be of a type appropriate to the target
+	// object. For example, TargetHttpProxy requires HTTP traffic, and
+	// TargetHttpsProxy requires HTTPS traffic.
 	Target string `json:"target,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -3157,16 +3171,16 @@
 	// format.
 	CreationTimestamp string `json:"creationTimestamp,omitempty"`
 
-	// Description: An optional textual description of the resource;
-	// provided by the client when the resource is created.
+	// Description: An optional description of this resource. Provide this
+	// property when you create the resource.
 	Description string `json:"description,omitempty"`
 
 	// Disks: Array of disks associated with this instance. Persistent disks
 	// must be created before you can assign them.
 	Disks []*AttachedDisk `json:"disks,omitempty"`
 
-	// Id: [Output Only] Unique identifier for the resource. This identifier
-	// is defined by the server.
+	// Id: [Output Only] The unique identifier for the resource. This
+	// identifier is defined by the server.
 	Id uint64 `json:"id,omitempty,string"`
 
 	// Kind: [Output Only] Type of the resource. Always compute#instance for
@@ -3201,13 +3215,14 @@
 	// This includes custom metadata and predefined keys.
 	Metadata *Metadata `json:"metadata,omitempty"`
 
-	// Name: Name of the resource; provided by the client when the resource
-	// is created. The name must be 1-63 characters long, and comply with
-	// RFC1035. Specifically, the name must be 1-63 characters long and
-	// match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
-	// the first character must be a lowercase letter, and all following
-	// characters must be a dash, lowercase letter, or digit, except the
-	// last character, which cannot be a dash.
+	// Name: The name of the resource, provided by the client when initially
+	// creating the resource. The resource name must be 1-63 characters
+	// long, and comply with RFC1035. Specifically, the name must be 1-63
+	// characters long and match the regular expression
+	// [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a
+	// lowercase letter, and all following characters must be a dash,
+	// lowercase letter, or digit, except the last character, which cannot
+	// be a dash.
 	Name string `json:"name,omitempty"`
 
 	// NetworkInterfaces: An array of configurations for this interface.
@@ -3218,7 +3233,7 @@
 	// Scheduling: Scheduling options for this instance.
 	Scheduling *Scheduling `json:"scheduling,omitempty"`
 
-	// SelfLink: [Output Only] Server defined URL for this resource.
+	// SelfLink: [Output Only] Server-defined URL for this resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// ServiceAccounts: A list of service accounts, with their specified
@@ -3289,11 +3304,15 @@
 	// resources.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: [Output Only] A token used to continue a truncated
-	// list request.
+	// NextPageToken: [Output Only] This token allows you to get the next
+	// page of results for list requests. If the number of results is larger
+	// than maxResults, use the nextPageToken as a value for the query
+	// parameter pageToken in the next list request. Subsequent list
+	// requests will have their own nextPageToken to continue paging through
+	// the results.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
-	// SelfLink: [Output Only] Server defined URL for this resource.
+	// SelfLink: [Output Only] Server-defined URL for this resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -3364,6 +3383,10 @@
 	// group.
 	Size int64 `json:"size,omitempty"`
 
+	// Subnetwork: [Output Only] The URL of the subnetwork to which all
+	// instances in the instance group belong.
+	Subnetwork string `json:"subnetwork,omitempty"`
+
 	// Zone: [Output Only] The URL of the zone where the instance group is
 	// located.
 	Zone string `json:"zone,omitempty"`
@@ -3573,7 +3596,8 @@
 
 	// Creating: [Output Only] The number of instances in the managed
 	// instance group that are scheduled to be created or are currently
-	// being created.
+	// being created. If the group fails to create one of these instances,
+	// it tries again until it creates the instance successfully.
 	Creating int64 `json:"creating,omitempty"`
 
 	// Deleting: [Output Only] The number of instances in the managed
@@ -4196,11 +4220,15 @@
 	// lists of Instance resources.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: [Output Only] A token used to continue a truncated
-	// list request.
+	// NextPageToken: [Output Only] This token allows you to get the next
+	// page of results for list requests. If the number of results is larger
+	// than maxResults, use the nextPageToken as a value for the query
+	// parameter pageToken in the next list request. Subsequent list
+	// requests will have their own nextPageToken to continue paging through
+	// the results.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
-	// SelfLink: [Output Only] Server defined URL for this resource.
+	// SelfLink: [Output Only] Server-defined URL for this resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -4571,6 +4599,27 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
+type InstancesSetMachineTypeRequest struct {
+	// MachineType: Full or partial URL of the machine type resource. See
+	// Machine Types for a full list of machine types. For example:
+	// zones/us-central1-f/machineTypes/n1-standard-1
+	MachineType string `json:"machineType,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "MachineType") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *InstancesSetMachineTypeRequest) MarshalJSON() ([]byte, error) {
+	type noMethod InstancesSetMachineTypeRequest
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
 // License: A license resource.
 type License struct {
 	// ChargesUseFee: [Output Only] If true, the customer will be charged
@@ -4894,7 +4943,13 @@
 	// instance group has scheduled for the instance. Possible values:
 	// - NONE The instance is running, and the managed instance group does
 	// not have any scheduled actions for this instance.
-	// - CREATING The managed instance group is creating this instance.
+	// - CREATING The managed instance group is creating this instance. If
+	// the group fails to create this instance, it will try again until it
+	// is successful.
+	// - CREATING_WITHOUT_RETRIES The managed instance group is attempting
+	// to create this instance only once. If the group fails to create this
+	// instance, it does not try again and the group's target_size value is
+	// decreased.
 	// - RECREATING The managed instance group is recreating this instance.
 	//
 	// - DELETING The managed instance group is permanently deleting this
@@ -5121,6 +5176,15 @@
 	// 192.168.0.0/16. Provided by the client when the network is created.
 	IPv4Range string `json:"IPv4Range,omitempty"`
 
+	// AutoCreateSubnetworks: When set to true, the network is created in
+	// "auto subnet mode". When set to false, the network is in "custom
+	// subnet mode".
+	//
+	// In "auto subnet mode", a newly created network is assigned the
+	// default CIDR of 10.128.0.0/9 and it automatically creates one
+	// subnetwork per region.
+	AutoCreateSubnetworks bool `json:"autoCreateSubnetworks,omitempty"`
+
 	// CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text
 	// format.
 	CreationTimestamp string `json:"creationTimestamp,omitempty"`
@@ -5154,6 +5218,10 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// Subnetworks: [Output Only] Server-defined fully-qualified URLs for
+	// all subnetworks in this network.
+	Subnetworks []string `json:"subnetworks,omitempty"`
+
 	// ServerResponse contains the HTTP response code and headers from the
 	// server.
 	googleapi.ServerResponse `json:"-"`
@@ -5205,6 +5273,18 @@
 	// assigned to the instance for this network interface.
 	NetworkIP string `json:"networkIP,omitempty"`
 
+	// Subnetwork: The URL of the Subnetwork resource for this instance. If
+	// the network resource is in legacy mode, do not provide this property.
+	// If the network is in auto subnet mode, providing the subnetwork is
+	// optional. If the network is in custom subnet mode, then this field
+	// should be specified. If you specify this property, you can specify
+	// the subnetwork as a full or partial URL. For example, the following
+	// are all valid URLs:
+	// -
+	// https://www.googleapis.com/compute/v1/projects/project/zones/zone/subnetworks/subnetwork
+	// - zones/zone/subnetworks/subnetwork
+	Subnetwork string `json:"subnetwork,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "AccessConfigs") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -5291,8 +5371,8 @@
 	HttpErrorMessage string `json:"httpErrorMessage,omitempty"`
 
 	// HttpErrorStatusCode: [Output Only] If the operation fails, this field
-	// contains the HTTP error message that was returned. For example, a 404
-	// means the resource was not found.
+	// contains the HTTP error status code that was returned. For example, a
+	// 404 means the resource was not found.
 	HttpErrorStatusCode int64 `json:"httpErrorStatusCode,omitempty"`
 
 	// Id: [Output Only] The unique identifier for the resource. This
@@ -5316,13 +5396,13 @@
 
 	// Progress: [Output Only] An optional progress indicator that ranges
 	// from 0 to 100. There is no requirement that this be linear or support
-	// any granularity of operations. This should not be used to guess at
-	// when the operation will be complete. This number should monotonically
+	// any granularity of operations. This should not be used to guess when
+	// the operation will be complete. This number should monotonically
 	// increase as the operation progresses.
 	Progress int64 `json:"progress,omitempty"`
 
 	// Region: [Output Only] URL of the region where the operation resides.
-	// Only applicable for regional resources.
+	// Only available when performing regional operations.
 	Region string `json:"region,omitempty"`
 
 	// SelfLink: [Output Only] Server-defined URL for the resource.
@@ -5361,7 +5441,8 @@
 	// processing of the operation, this field will be populated.
 	Warnings []*OperationWarnings `json:"warnings,omitempty"`
 
-	// Zone: [Output Only] URL of the zone where the operation resides.
+	// Zone: [Output Only] URL of the zone where the operation resides. Only
+	// available when performing per-zone operations.
 	Zone string `json:"zone,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -5695,9 +5776,15 @@
 // BackendService from the longest-matched rule will serve the URL. If
 // no rule was matched, the default service will be used.
 type PathMatcher struct {
-	// DefaultService: The URL to the BackendService resource. This will be
-	// used if none of the pathRules defined by this PathMatcher is met by
-	// the URL's path portion.
+	// DefaultService: The full or partial URL to the BackendService
+	// resource. This will be used if none of the pathRules defined by this
+	// PathMatcher is matched by the URL's path portion. For example, the
+	// following are all valid URLs to a BackendService resource:
+	// -
+	// https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService
+	// - compute/v1/projects/project/global/backendServices/backendService
+	//
+	// - global/backendServices/backendService
 	DefaultService string `json:"defaultService,omitempty"`
 
 	// Description: An optional description of this resource. Provide this
@@ -5791,8 +5878,8 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
-	// UsageExportLocation: The location in Cloud Storage and naming method
-	// of the daily usage report.
+	// UsageExportLocation: The naming prefix for daily usage reports and
+	// the Google Cloud Storage bucket where they are stored.
 	UsageExportLocation *UsageExportLocation `json:"usageExportLocation,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -5843,6 +5930,7 @@
 	//   "SSD_TOTAL_GB"
 	//   "SSL_CERTIFICATES"
 	//   "STATIC_ADDRESSES"
+	//   "SUBNETWORKS"
 	//   "TARGET_HTTPS_PROXIES"
 	//   "TARGET_HTTP_PROXIES"
 	//   "TARGET_INSTANCES"
@@ -5995,7 +6083,7 @@
 
 // Route: The route resource. A Route is a rule that specifies how
 // certain packets should be handled by the virtual network. Routes are
-// associated with instances by tag and the set of Routes for a
+// associated with instances by tags and the set of Routes for a
 // particular instance is called its routing table. For each packet
 // leaving a instance, the system searches that instance's routing table
 // for a single best matching Route. Routes match packets by destination
@@ -6043,12 +6131,13 @@
 	Network string `json:"network,omitempty"`
 
 	// NextHopGateway: The URL to a gateway that should handle matching
-	// packets. Currently, this is only the internet gateway:
+	// packets. You can only specify the internet gateway using a full or
+	// partial valid URL:
 	// projects/<project-id>/global/gateways/default-internet-gateway
 	NextHopGateway string `json:"nextHopGateway,omitempty"`
 
-	// NextHopInstance: The fully-qualified URL to an instance that should
-	// handle matching packets. For
+	// NextHopInstance: The URL to an instance that should handle matching
+	// packets. You can specify this as a full or partial URL. For
 	// example:
 	// https://www.googleapis.com/compute/v1/projects/project/zones/
 	// zone/instances/
@@ -6066,9 +6155,11 @@
 	// packets.
 	NextHopVpnTunnel string `json:"nextHopVpnTunnel,omitempty"`
 
-	// Priority: Breaks ties between Routes of equal specificity. Routes
-	// with smaller values win when tied with routes with larger values.
-	// Default value is 1000. A valid range is between 0 and 65535.
+	// Priority: The priority of this route. Priority is used to break ties
+	// in cases where there is more than one matching route of equal prefix
+	// length. In the case of two routes with equal prefix length, the one
+	// with the lowest-numbered priority value wins. Default value is 1000.
+	// Valid range is 0 through 65535.
 	Priority int64 `json:"priority,omitempty"`
 
 	// SelfLink: [Output Only] Server-defined fully-qualified URL for this
@@ -6182,7 +6273,7 @@
 	// server.
 	Id string `json:"id,omitempty"`
 
-	// Items: A list of Route resources.
+	// Items: [Output Only] A list of Route resources.
 	Items []*Route `json:"items,omitempty"`
 
 	// Kind: Type of resource.
@@ -6264,7 +6355,7 @@
 	// compute#serialPortOutput for serial port output.
 	Kind string `json:"kind,omitempty"`
 
-	// SelfLink: [Output Only] Server defined URL for the resource.
+	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -6346,7 +6437,8 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
-	// SourceDisk: The source disk used to create this snapshot.
+	// SourceDisk: [Output Only] The source disk used to create this
+	// snapshot.
 	SourceDisk string `json:"sourceDisk,omitempty"`
 
 	// SourceDiskId: [Output Only] The ID value of the disk used to create
@@ -6404,7 +6496,7 @@
 	// identifier is defined by the server.
 	Id string `json:"id,omitempty"`
 
-	// Items: A list of Snapshot resources.
+	// Items: [Output Only] A list of Snapshot resources.
 	Items []*Snapshot `json:"items,omitempty"`
 
 	// Kind: Type of resource.
@@ -6441,8 +6533,8 @@
 }
 
 // SslCertificate: An SslCertificate resource. This resource provides a
-// mechanism to upload an SSL key and certificate to global HTTPS
-// loadbalancer to serve secure connections.
+// mechanism to upload an SSL key and certificate to the load balancer
+// to serve secure connections from the user.
 type SslCertificate struct {
 	// Certificate: A local certificate file. The certificate must be in PEM
 	// format. The certificate chain must be no greater than 5 certs long.
@@ -6542,6 +6634,258 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
+// Subnetwork: A Subnetwork resource.
+type Subnetwork struct {
+	// CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text
+	// format.
+	CreationTimestamp string `json:"creationTimestamp,omitempty"`
+
+	// Description: An optional description of this resource. Provide this
+	// property when you create the resource.
+	Description string `json:"description,omitempty"`
+
+	// GatewayAddress: [Output Only] The gateway address for default routes
+	// to reach destination addresses outside this subnetwork.
+	GatewayAddress string `json:"gatewayAddress,omitempty"`
+
+	// Id: [Output Only] The unique identifier for the resource. This
+	// identifier is defined by the server.
+	Id uint64 `json:"id,omitempty,string"`
+
+	// IpCidrRange: The range of internal addresses that are owned by this
+	// subnetwork. Provide this property when you create the subnetwork. For
+	// example, 10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and
+	// non-overlapping within a network.
+	IpCidrRange string `json:"ipCidrRange,omitempty"`
+
+	// Kind: [Output Only] Type of the resource. Always compute#subnetwork
+	// for Subnetwork resources.
+	Kind string `json:"kind,omitempty"`
+
+	// Name: The name of the resource, provided by the client when initially
+	// creating the resource. The name must be 1-63 characters long, and
+	// comply with RFC1035. Specifically, the name must be 1-63 characters
+	// long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])?
+	// which means the first character must be a lowercase letter, and all
+	// following characters must be a dash, lowercase letter, or digit,
+	// except the last character, which cannot be a dash.
+	Name string `json:"name,omitempty"`
+
+	// Network: The URL of the network to which this subnetwork belongs,
+	// provided by the client when initially creating the subnetwork. Only
+	// networks that are in the distributed mode can have subnetworks.
+	Network string `json:"network,omitempty"`
+
+	// Region: [Output Only] URL of the region where the Subnetwork resides.
+	Region string `json:"region,omitempty"`
+
+	// SelfLink: [Output Only] Server-defined URL for the resource.
+	SelfLink string `json:"selfLink,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CreationTimestamp")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Subnetwork) MarshalJSON() ([]byte, error) {
+	type noMethod Subnetwork
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type SubnetworkAggregatedList struct {
+	// Id: [Output Only] The unique identifier for the resource. This
+	// identifier is defined by the server.
+	Id string `json:"id,omitempty"`
+
+	// Items: [Output] A map of scoped Subnetwork lists.
+	Items map[string]SubnetworksScopedList `json:"items,omitempty"`
+
+	// Kind: [Output Only] Type of resource. Always
+	// compute#subnetworkAggregatedList for aggregated lists of subnetworks.
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: [Output Only] This token allows you to get the next
+	// page of results for list requests. If the number of results is larger
+	// than maxResults, use the nextPageToken as a value for the query
+	// parameter pageToken in the next list request. Subsequent list
+	// requests will have their own nextPageToken to continue paging through
+	// the results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// SelfLink: [Output Only] Server-defined URL for this resource.
+	SelfLink string `json:"selfLink,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SubnetworkAggregatedList) MarshalJSON() ([]byte, error) {
+	type noMethod SubnetworkAggregatedList
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// SubnetworkList: Contains a list of Subnetwork resources.
+type SubnetworkList struct {
+	// Id: [Output Only] The unique identifier for the resource. This
+	// identifier is defined by the server.
+	Id string `json:"id,omitempty"`
+
+	// Items: The Subnetwork resources.
+	Items []*Subnetwork `json:"items,omitempty"`
+
+	// Kind: [Output Only] Type of resource. Always compute#subnetworkList
+	// for lists of subnetworks.
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: [Output Only] This token allows you to get the next
+	// page of results for list requests. If the number of results is larger
+	// than maxResults, use the nextPageToken as a value for the query
+	// parameter pageToken in the next list request. Subsequent list
+	// requests will have their own nextPageToken to continue paging through
+	// the results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// SelfLink: [Output Only] Server-defined URL for this resource.
+	SelfLink string `json:"selfLink,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SubnetworkList) MarshalJSON() ([]byte, error) {
+	type noMethod SubnetworkList
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type SubnetworksScopedList struct {
+	// Subnetworks: List of subnetworks contained in this scope.
+	Subnetworks []*Subnetwork `json:"subnetworks,omitempty"`
+
+	// Warning: An informational warning that appears when the list of
+	// addresses is empty.
+	Warning *SubnetworksScopedListWarning `json:"warning,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Subnetworks") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SubnetworksScopedList) MarshalJSON() ([]byte, error) {
+	type noMethod SubnetworksScopedList
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// SubnetworksScopedListWarning: An informational warning that appears
+// when the list of addresses is empty.
+type SubnetworksScopedListWarning struct {
+	// Code: [Output Only] A warning code, if applicable. For example,
+	// Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
+	// the response.
+	//
+	// Possible values:
+	//   "DEPRECATED_RESOURCE_USED"
+	//   "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+	//   "INJECTED_KERNELS_DEPRECATED"
+	//   "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+	//   "NEXT_HOP_CANNOT_IP_FORWARD"
+	//   "NEXT_HOP_INSTANCE_NOT_FOUND"
+	//   "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+	//   "NEXT_HOP_NOT_RUNNING"
+	//   "NOT_CRITICAL_ERROR"
+	//   "NO_RESULTS_ON_PAGE"
+	//   "REQUIRED_TOS_AGREEMENT"
+	//   "RESOURCE_NOT_DELETED"
+	//   "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+	//   "UNREACHABLE"
+	Code string `json:"code,omitempty"`
+
+	// Data: [Output Only] Metadata about this warning in key: value format.
+	// For example:
+	// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+	Data []*SubnetworksScopedListWarningData `json:"data,omitempty"`
+
+	// Message: [Output Only] A human-readable description of the warning
+	// code.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SubnetworksScopedListWarning) MarshalJSON() ([]byte, error) {
+	type noMethod SubnetworksScopedListWarning
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type SubnetworksScopedListWarningData struct {
+	// Key: [Output Only] A key that provides more detail on the warning
+	// being returned. For example, for warnings where there are no results
+	// in a list request for a particular zone, this key might be scope and
+	// the key value might be the zone name. Other examples might be a key
+	// indicating a deprecated resource, and a suggested replacement, or a
+	// warning about invalid network settings (for example, if an instance
+	// attempts to perform IP forwarding but is not enabled for IP
+	// forwarding).
+	Key string `json:"key,omitempty"`
+
+	// Value: [Output Only] A warning data value corresponding to the key.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Key") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SubnetworksScopedListWarningData) MarshalJSON() ([]byte, error) {
+	type noMethod SubnetworksScopedListWarningData
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
 // Tags: A set of instance tags.
 type Tags struct {
 	// Fingerprint: Specifies a fingerprint for this request, which is
@@ -6723,8 +7067,8 @@
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// SslCertificates: URLs to SslCertificate resources that are used to
-	// authenticate connections to Backends. Currently exactly one SSL
-	// certificate must be specified.
+	// authenticate connections between users and the load balancer.
+	// Currently exactly one SSL certificate must be specified.
 	SslCertificates []string `json:"sslCertificates,omitempty"`
 
 	// UrlMap: URL to the UrlMap resource that defines the mapping from URL
@@ -7984,8 +8328,10 @@
 type UsageExportLocation struct {
 	// BucketName: The name of an existing bucket in Cloud Storage where the
 	// usage report object is stored. The Google Service Account is granted
-	// write access to this bucket. This is just the bucket name, with no
-	// gs:// or https://storage.googleapis.com/ in front of it.
+	// write access to this bucket. This can either be the bucket name by
+	// itself, such as example-bucket, or the bucket name with gs:// or
+	// https://storage.googleapis.com/ in front of it, such as
+	// gs://example-bucket.
 	BucketName string `json:"bucketName,omitempty"`
 
 	// ReportNamePrefix: An optional prefix for the name of the usage report
@@ -8037,6 +8383,12 @@
 	// VPN tunnels.
 	Kind string `json:"kind,omitempty"`
 
+	// LocalTrafficSelector: Local traffic selector to use when establishing
+	// the VPN tunnel with peer VPN gateway. The value should be a CIDR
+	// formatted string, for example: 192.168.0.0/16. The ranges should be
+	// disjoint.
+	LocalTrafficSelector []string `json:"localTrafficSelector,omitempty"`
+
 	// Name: Name of the resource; provided by the client when the resource
 	// is created. The name must be 1-63 characters long, and comply with
 	// RFC1035. Specifically, the name must be 1-63 characters long and
@@ -8056,7 +8408,7 @@
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// SharedSecret: Shared secret used to set the secure session between
-	// the GCE VPN gateway and the peer VPN gateway.
+	// the Cloud VPN gateway and the peer VPN gateway.
 	SharedSecret string `json:"sharedSecret,omitempty"`
 
 	// SharedSecretHash: Hash of the shared secret.
@@ -8432,7 +8784,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of addresses grouped by scope.
+// AggregatedList: Retrieves an aggregated list of addresses.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/addresses/aggregatedList
 func (r *AddressesService) AggregatedList(project string) *AddressesAggregatedListCall {
 	c := &AddressesAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -8573,7 +8925,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of addresses grouped by scope.",
+	//   "description": "Retrieves an aggregated list of addresses.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.addresses.aggregatedList",
 	//   "parameterOrder": [
@@ -9073,7 +9425,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of address resources contained within the
+// List: Retrieves a list of address resources contained within the
 // specified region.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/addresses/list
 func (r *AddressesService) List(project string, region string) *AddressesListCall {
@@ -9217,7 +9569,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of address resources contained within the specified region.",
+	//   "description": "Retrieves a list of address resources contained within the specified region.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.addresses.list",
 	//   "parameterOrder": [
@@ -9303,7 +9655,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of autoscalers grouped by scope.
+// AggregatedList: Retrieves an aggregated list of autoscalers.
 func (r *AutoscalersService) AggregatedList(project string) *AutoscalersAggregatedListCall {
 	c := &AutoscalersAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -9443,7 +9795,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of autoscalers grouped by scope.",
+	//   "description": "Retrieves an aggregated list of autoscalers.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.autoscalers.aggregatedList",
 	//   "parameterOrder": [
@@ -9940,7 +10292,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of autoscaler resources contained within the
+// List: Retrieves a list of autoscaler resources contained within the
 // specified zone.
 func (r *AutoscalersService) List(project string, zone string) *AutoscalersListCall {
 	c := &AutoscalersListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -10083,7 +10435,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of autoscaler resources contained within the specified zone.",
+	//   "description": "Retrieves a list of autoscaler resources contained within the specified zone.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.autoscalers.list",
 	//   "parameterOrder": [
@@ -10862,7 +11214,9 @@
 }
 
 // Insert: Creates a BackendService resource in the specified project
-// using the data included in the request.
+// using the data included in the request. There are several
+// restrictions and guidelines to keep in mind when creating a backend
+// service. Read  Restrictions and Guidelines for more information.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/backendServices/insert
 func (r *BackendServicesService) Insert(project string, backendservice *BackendService) *BackendServicesInsertCall {
 	c := &BackendServicesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -10946,7 +11300,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Creates a BackendService resource in the specified project using the data included in the request.",
+	//   "description": "Creates a BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a backend service. Read  Restrictions and Guidelines for more information.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.backendServices.insert",
 	//   "parameterOrder": [
@@ -11207,8 +11561,10 @@
 	ctx_           context.Context
 }
 
-// Patch: Update the entire content of the BackendService resource. This
-// method supports patch semantics.
+// Patch: Updates the entire content of the BackendService resource.
+// There are several restrictions and guidelines to keep in mind when
+// updating a backend service. Read  Restrictions and Guidelines for
+// more information. This method supports patch semantics.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/backendServices/patch
 func (r *BackendServicesService) Patch(project string, backendService string, backendservice *BackendService) *BackendServicesPatchCall {
 	c := &BackendServicesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -11294,7 +11650,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Update the entire content of the BackendService resource. This method supports patch semantics.",
+	//   "description": "Updates the entire content of the BackendService resource. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information. This method supports patch semantics.",
 	//   "httpMethod": "PATCH",
 	//   "id": "compute.backendServices.patch",
 	//   "parameterOrder": [
@@ -11343,7 +11699,10 @@
 	ctx_           context.Context
 }
 
-// Update: Update the entire content of the BackendService resource.
+// Update: Updates the entire content of the BackendService resource.
+// There are several restrictions and guidelines to keep in mind when
+// updating a backend service. Read  Restrictions and Guidelines for
+// more information.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/backendServices/update
 func (r *BackendServicesService) Update(project string, backendService string, backendservice *BackendService) *BackendServicesUpdateCall {
 	c := &BackendServicesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -11429,7 +11788,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Update the entire content of the BackendService resource.",
+	//   "description": "Updates the entire content of the BackendService resource. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information.",
 	//   "httpMethod": "PUT",
 	//   "id": "compute.backendServices.update",
 	//   "parameterOrder": [
@@ -11477,8 +11836,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of disk type resources grouped by
-// scope.
+// AggregatedList: Retrieves an aggregated list of disk type resources.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/diskTypes/aggregatedList
 func (r *DiskTypesService) AggregatedList(project string) *DiskTypesAggregatedListCall {
 	c := &DiskTypesAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -11619,7 +11977,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of disk type resources grouped by scope.",
+	//   "description": "Retrieves an aggregated list of disk type resources.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.diskTypes.aggregatedList",
 	//   "parameterOrder": [
@@ -11848,7 +12206,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of disk type resources available to the
+// List: Retrieves a list of disk type resources available to the
 // specified project.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/diskTypes/list
 func (r *DiskTypesService) List(project string, zone string) *DiskTypesListCall {
@@ -11992,7 +12350,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of disk type resources available to the specified project.",
+	//   "description": "Retrieves a list of disk type resources available to the specified project.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.diskTypes.list",
 	//   "parameterOrder": [
@@ -12078,8 +12436,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of persistent disks grouped by
-// scope.
+// AggregatedList: Retrieves an aggregated list of persistent disks.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/disks/aggregatedList
 func (r *DisksService) AggregatedList(project string) *DisksAggregatedListCall {
 	c := &DisksAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -12220,7 +12577,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of persistent disks grouped by scope.",
+	//   "description": "Retrieves an aggregated list of persistent disks.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.disks.aggregatedList",
 	//   "parameterOrder": [
@@ -12881,7 +13238,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of persistent disks contained within the
+// List: Retrieves a list of persistent disks contained within the
 // specified zone.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/disks/list
 func (r *DisksService) List(project string, zone string) *DisksListCall {
@@ -13025,7 +13382,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of persistent disks contained within the specified zone.",
+	//   "description": "Retrieves a list of persistent disks contained within the specified zone.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.disks.list",
 	//   "parameterOrder": [
@@ -13991,8 +14348,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of forwarding rules grouped by
-// scope.
+// AggregatedList: Retrieves an aggregated list of forwarding rules.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/forwardingRules/aggregatedList
 func (r *ForwardingRulesService) AggregatedList(project string) *ForwardingRulesAggregatedListCall {
 	c := &ForwardingRulesAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -14133,7 +14489,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of forwarding rules grouped by scope.",
+	//   "description": "Retrieves an aggregated list of forwarding rules.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.forwardingRules.aggregatedList",
 	//   "parameterOrder": [
@@ -14633,7 +14989,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of ForwardingRule resources available to the
+// List: Retrieves a list of ForwardingRule resources available to the
 // specified project and region.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/forwardingRules/list
 func (r *ForwardingRulesService) List(project string, region string) *ForwardingRulesListCall {
@@ -14777,7 +15133,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of ForwardingRule resources available to the specified project and region.",
+	//   "description": "Retrieves a list of ForwardingRule resources available to the specified project and region.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.forwardingRules.list",
 	//   "parameterOrder": [
@@ -15398,7 +15754,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of global address resources.
+// List: Retrieves a list of global address resources.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/globalAddresses/list
 func (r *GlobalAddressesService) List(project string) *GlobalAddressesListCall {
 	c := &GlobalAddressesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -15539,7 +15895,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of global address resources.",
+	//   "description": "Retrieves a list of global address resources.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.globalAddresses.list",
 	//   "parameterOrder": [
@@ -16005,7 +16361,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of ForwardingRule resources available to the
+// List: Retrieves a list of ForwardingRule resources available to the
 // specified project.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/globalForwardingRules/list
 func (r *GlobalForwardingRulesService) List(project string) *GlobalForwardingRulesListCall {
@@ -16147,7 +16503,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of ForwardingRule resources available to the specified project.",
+	//   "description": "Retrieves a list of ForwardingRule resources available to the specified project.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.globalForwardingRules.list",
 	//   "parameterOrder": [
@@ -16361,8 +16717,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of all operations grouped by
-// scope.
+// AggregatedList: Retrieves an aggregated list of all operations.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/globalOperations/aggregatedList
 func (r *GlobalOperationsService) AggregatedList(project string) *GlobalOperationsAggregatedListCall {
 	c := &GlobalOperationsAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -16503,7 +16858,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of all operations grouped by scope.",
+	//   "description": "Retrieves an aggregated list of all operations.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.globalOperations.aggregatedList",
 	//   "parameterOrder": [
@@ -16817,7 +17172,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of Operation resources contained within the
+// List: Retrieves a list of Operation resources contained within the
 // specified project.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/globalOperations/list
 func (r *GlobalOperationsService) List(project string) *GlobalOperationsListCall {
@@ -16959,7 +17314,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of Operation resources contained within the specified project.",
+	//   "description": "Retrieves a list of Operation resources contained within the specified project.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.globalOperations.list",
 	//   "parameterOrder": [
@@ -19922,7 +20277,9 @@
 }
 
 // Delete: Deletes the specified managed instance group and all of the
-// instances in that group.
+// instances in that group. Note that the instance group must not belong
+// to a backend service. Read  Deleting an instance group for more
+// information.
 func (r *InstanceGroupManagersService) Delete(project string, zone string, instanceGroupManager string) *InstanceGroupManagersDeleteCall {
 	c := &InstanceGroupManagersDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -20002,7 +20359,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Deletes the specified managed instance group and all of the instances in that group.",
+	//   "description": "Deletes the specified managed instance group and all of the instances in that group. Note that the instance group must not belong to a backend service. Read  Deleting an instance group for more information.",
 	//   "httpMethod": "DELETE",
 	//   "id": "compute.instanceGroupManagers.delete",
 	//   "parameterOrder": [
@@ -21452,8 +21809,7 @@
 }
 
 // AddInstances: Adds a list of instances to the specified instance
-// group. All of the instances in the instance group must be in the same
-// network/subnetwork.
+// group. Read  Adding instances for more information.
 func (r *InstanceGroupsService) AddInstances(project string, zone string, instanceGroup string, instancegroupsaddinstancesrequest *InstanceGroupsAddInstancesRequest) *InstanceGroupsAddInstancesCall {
 	c := &InstanceGroupsAddInstancesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -21540,7 +21896,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Adds a list of instances to the specified instance group. All of the instances in the instance group must be in the same network/subnetwork.",
+	//   "description": "Adds a list of instances to the specified instance group. Read  Adding instances for more information.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.instanceGroups.addInstances",
 	//   "parameterOrder": [
@@ -21815,7 +22171,9 @@
 }
 
 // Delete: Deletes the specified instance group. The instances in the
-// group are not deleted.
+// group are not deleted. Note that instance group must not belong to a
+// backend service. Read  Deleting an instance group for more
+// information.
 func (r *InstanceGroupsService) Delete(project string, zone string, instanceGroup string) *InstanceGroupsDeleteCall {
 	c := &InstanceGroupsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -21895,7 +22253,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Deletes the specified instance group. The instances in the group are not deleted.",
+	//   "description": "Deletes the specified instance group. The instances in the group are not deleted. Note that instance group must not belong to a backend service. Read  Deleting an instance group for more information.",
 	//   "httpMethod": "DELETE",
 	//   "id": "compute.instanceGroups.delete",
 	//   "parameterOrder": [
@@ -23221,7 +23579,10 @@
 }
 
 // Insert: Creates an instance template in the specified project using
-// the data that is included in the request.
+// the data that is included in the request. If you are creating a new
+// template to update an existing instance group, your new instance
+// template must use the same network or, if applicable, the same
+// subnetwork as the original template.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/instanceTemplates/insert
 func (r *InstanceTemplatesService) Insert(project string, instancetemplate *InstanceTemplate) *InstanceTemplatesInsertCall {
 	c := &InstanceTemplatesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -23305,7 +23666,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Creates an instance template in the specified project using the data that is included in the request.",
+	//   "description": "Creates an instance template in the specified project using the data that is included in the request. If you are creating a new template to update an existing instance group, your new instance template must use the same network or, if applicable, the same subnetwork as the original template.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.instanceTemplates.insert",
 	//   "parameterOrder": [
@@ -25479,6 +25840,152 @@
 
 }
 
+// method id "compute.instances.setMachineType":
+
+type InstancesSetMachineTypeCall struct {
+	s                              *Service
+	project                        string
+	zone                           string
+	instance                       string
+	instancessetmachinetyperequest *InstancesSetMachineTypeRequest
+	urlParams_                     gensupport.URLParams
+	ctx_                           context.Context
+}
+
+// SetMachineType: Changes the machine type for a stopped instance to
+// the machine type specified in the request.
+func (r *InstancesService) SetMachineType(project string, zone string, instance string, instancessetmachinetyperequest *InstancesSetMachineTypeRequest) *InstancesSetMachineTypeCall {
+	c := &InstancesSetMachineTypeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.zone = zone
+	c.instance = instance
+	c.instancessetmachinetyperequest = instancessetmachinetyperequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *InstancesSetMachineTypeCall) Fields(s ...googleapi.Field) *InstancesSetMachineTypeCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *InstancesSetMachineTypeCall) Context(ctx context.Context) *InstancesSetMachineTypeCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *InstancesSetMachineTypeCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.instancessetmachinetyperequest)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/zones/{zone}/instances/{instance}/setMachineType")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"project":  c.project,
+		"zone":     c.zone,
+		"instance": c.instance,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "compute.instances.setMachineType" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *InstancesSetMachineTypeCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Changes the machine type for a stopped instance to the machine type specified in the request.",
+	//   "httpMethod": "POST",
+	//   "id": "compute.instances.setMachineType",
+	//   "parameterOrder": [
+	//     "project",
+	//     "zone",
+	//     "instance"
+	//   ],
+	//   "parameters": {
+	//     "instance": {
+	//       "description": "Name of the instance scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "zone": {
+	//       "description": "The name of the zone for this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/zones/{zone}/instances/{instance}/setMachineType",
+	//   "request": {
+	//     "$ref": "InstancesSetMachineTypeRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
 // method id "compute.instances.setMetadata":
 
 type InstancesSetMetadataCall struct {
@@ -25930,9 +26437,9 @@
 	ctx_       context.Context
 }
 
-// Start: This method starts an instance that was stopped using the
-// using the instances().stop method. For more information, see Restart
-// an instance.
+// Start: Starts an instance that was stopped using the using the
+// instances().stop method. For more information, see Restart an
+// instance.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/instances/start
 func (r *InstancesService) Start(project string, zone string, instance string) *InstancesStartCall {
 	c := &InstancesStartCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -26013,7 +26520,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "This method starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
+	//   "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.instances.start",
 	//   "parameterOrder": [
@@ -26067,13 +26574,13 @@
 	ctx_       context.Context
 }
 
-// Stop: This method stops a running instance, shutting it down cleanly,
-// and allows you to restart the instance at a later time. Stopped
-// instances do not incur per-minute, virtual machine usage charges
-// while they are stopped, but any resources that the virtual machine is
-// using, such as persistent disks and static IP addresses,will continue
-// to be charged until they are deleted. For more information, see
-// Stopping an instance.
+// Stop: Stops a running instance, shutting it down cleanly, and allows
+// you to restart the instance at a later time. Stopped instances do not
+// incur per-minute, virtual machine usage charges while they are
+// stopped, but any resources that the virtual machine is using, such as
+// persistent disks and static IP addresses, will continue to be charged
+// until they are deleted. For more information, see Stopping an
+// instance.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/instances/stop
 func (r *InstancesService) Stop(project string, zone string, instance string) *InstancesStopCall {
 	c := &InstancesStopCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -26154,7 +26661,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "This method stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur per-minute, virtual machine usage charges while they are stopped, but any resources that the virtual machine is using, such as persistent disks and static IP addresses,will continue to be charged until they are deleted. For more information, see Stopping an instance.",
+	//   "description": "Stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur per-minute, virtual machine usage charges while they are stopped, but any resources that the virtual machine is using, such as persistent disks and static IP addresses, will continue to be charged until they are deleted. For more information, see Stopping an instance.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.instances.stop",
 	//   "parameterOrder": [
@@ -26346,8 +26853,8 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of machine type resources grouped
-// by scope.
+// AggregatedList: Retrieves an aggregated list of machine type
+// resources.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/machineTypes/aggregatedList
 func (r *MachineTypesService) AggregatedList(project string) *MachineTypesAggregatedListCall {
 	c := &MachineTypesAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -26488,7 +26995,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of machine type resources grouped by scope.",
+	//   "description": "Retrieves an aggregated list of machine type resources.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.machineTypes.aggregatedList",
 	//   "parameterOrder": [
@@ -26717,7 +27224,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of machine type resources available to the
+// List: Retrieves a list of machine type resources available to the
 // specified project.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/machineTypes/list
 func (r *MachineTypesService) List(project string, zone string) *MachineTypesListCall {
@@ -26861,7 +27368,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of machine type resources available to the specified project.",
+	//   "description": "Retrieves a list of machine type resources available to the specified project.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.machineTypes.list",
 	//   "parameterOrder": [
@@ -28413,7 +28920,7 @@
 	//       "type": "string"
 	//     },
 	//     "region": {
-	//       "description": "Name of the zone scoping this request.",
+	//       "description": "Name of the region scoping this request.",
 	//       "location": "path",
 	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
 	//       "required": true,
@@ -28444,7 +28951,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of Operation resources contained within the
+// List: Retrieves a list of Operation resources contained within the
 // specified region.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/regionOperations/list
 func (r *RegionOperationsService) List(project string, region string) *RegionOperationsListCall {
@@ -28588,7 +29095,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of Operation resources contained within the specified region.",
+	//   "description": "Retrieves a list of Operation resources contained within the specified region.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.regionOperations.list",
 	//   "parameterOrder": [
@@ -30724,6 +31231,872 @@
 	}
 }
 
+// method id "compute.subnetworks.aggregatedList":
+
+type SubnetworksAggregatedListCall struct {
+	s            *Service
+	project      string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// AggregatedList: Retrieves an aggregated list of subnetworks.
+func (r *SubnetworksService) AggregatedList(project string) *SubnetworksAggregatedListCall {
+	c := &SubnetworksAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	return c
+}
+
+// Filter sets the optional parameter "filter": Sets a filter expression
+// for filtering listed resources, in the form filter={expression}. Your
+// {expression} must be in the format: field_name comparison_string
+// literal_string.
+//
+// The field_name is the name of the field you want to compare. Only
+// atomic field types are supported (string, number, boolean). The
+// comparison_string must be either eq (equals) or ne (not equals). The
+// literal_string is the string value to filter to. The literal value
+// must be valid for the type of field you are filtering by (string,
+// number, boolean). For string fields, the literal value is interpreted
+// as a regular expression using RE2 syntax. The literal value must
+// match the entire field.
+//
+// For example, filter=name ne example-instance.
+//
+// Compute Engine Beta API Only: If you use filtering in the Beta API,
+// you can also filter on nested fields. For example, you could filter
+// on instances that have set the scheduling.automaticRestart field to
+// true. In particular, use filtering on nested fields to take advantage
+// of instance labels to organize and filter results based on label
+// values.
+//
+// The Beta API also supports filtering on multiple expressions by
+// providing each separate expression within parentheses. For example,
+// (scheduling.automaticRestart eq true) (zone eq us-central1-f).
+// Multiple expressions are treated as AND expressions meaning that
+// resources must match all expressions to pass the filters.
+func (c *SubnetworksAggregatedListCall) Filter(filter string) *SubnetworksAggregatedListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": The maximum
+// number of results per page that Compute Engine should return. If the
+// number of available results is larger than maxResults, Compute Engine
+// returns a nextPageToken that can be used to get the next page of
+// results in subsequent list requests.
+func (c *SubnetworksAggregatedListCall) MaxResults(maxResults int64) *SubnetworksAggregatedListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Specifies a page
+// token to use. Set pageToken to the nextPageToken returned by a
+// previous list request to get the next page of results.
+func (c *SubnetworksAggregatedListCall) PageToken(pageToken string) *SubnetworksAggregatedListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SubnetworksAggregatedListCall) Fields(s ...googleapi.Field) *SubnetworksAggregatedListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *SubnetworksAggregatedListCall) IfNoneMatch(entityTag string) *SubnetworksAggregatedListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SubnetworksAggregatedListCall) Context(ctx context.Context) *SubnetworksAggregatedListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SubnetworksAggregatedListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/aggregated/subnetworks")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "compute.subnetworks.aggregatedList" call.
+// Exactly one of *SubnetworkAggregatedList or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *SubnetworkAggregatedList.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *SubnetworksAggregatedListCall) Do(opts ...googleapi.CallOption) (*SubnetworkAggregatedList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &SubnetworkAggregatedList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves an aggregated list of subnetworks.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.subnetworks.aggregatedList",
+	//   "parameterOrder": [
+	//     "project"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "default": "500",
+	//       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+	//       "format": "uint32",
+	//       "location": "query",
+	//       "maximum": "500",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/aggregated/subnetworks",
+	//   "response": {
+	//     "$ref": "SubnetworkAggregatedList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *SubnetworksAggregatedListCall) Pages(ctx context.Context, f func(*SubnetworkAggregatedList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "compute.subnetworks.delete":
+
+type SubnetworksDeleteCall struct {
+	s          *Service
+	project    string
+	region     string
+	subnetwork string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes the specified subnetwork.
+func (r *SubnetworksService) Delete(project string, region string, subnetwork string) *SubnetworksDeleteCall {
+	c := &SubnetworksDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.subnetwork = subnetwork
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SubnetworksDeleteCall) Fields(s ...googleapi.Field) *SubnetworksDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SubnetworksDeleteCall) Context(ctx context.Context) *SubnetworksDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SubnetworksDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/subnetworks/{subnetwork}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"project":    c.project,
+		"region":     c.region,
+		"subnetwork": c.subnetwork,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "compute.subnetworks.delete" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *SubnetworksDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes the specified subnetwork.",
+	//   "httpMethod": "DELETE",
+	//   "id": "compute.subnetworks.delete",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "subnetwork"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "subnetwork": {
+	//       "description": "Name of the Subnetwork resource to delete.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.subnetworks.get":
+
+type SubnetworksGetCall struct {
+	s            *Service
+	project      string
+	region       string
+	subnetwork   string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Returns the specified subnetwork.
+func (r *SubnetworksService) Get(project string, region string, subnetwork string) *SubnetworksGetCall {
+	c := &SubnetworksGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.subnetwork = subnetwork
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SubnetworksGetCall) Fields(s ...googleapi.Field) *SubnetworksGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *SubnetworksGetCall) IfNoneMatch(entityTag string) *SubnetworksGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SubnetworksGetCall) Context(ctx context.Context) *SubnetworksGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SubnetworksGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/subnetworks/{subnetwork}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"project":    c.project,
+		"region":     c.region,
+		"subnetwork": c.subnetwork,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "compute.subnetworks.get" call.
+// Exactly one of *Subnetwork or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Subnetwork.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *SubnetworksGetCall) Do(opts ...googleapi.CallOption) (*Subnetwork, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Subnetwork{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Returns the specified subnetwork.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.subnetworks.get",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "subnetwork"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "subnetwork": {
+	//       "description": "Name of the Subnetwork resource to return.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
+	//   "response": {
+	//     "$ref": "Subnetwork"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "compute.subnetworks.insert":
+
+type SubnetworksInsertCall struct {
+	s          *Service
+	project    string
+	region     string
+	subnetwork *Subnetwork
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Insert: Creates a subnetwork in the specified project using the data
+// included in the request.
+func (r *SubnetworksService) Insert(project string, region string, subnetwork *Subnetwork) *SubnetworksInsertCall {
+	c := &SubnetworksInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.subnetwork = subnetwork
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SubnetworksInsertCall) Fields(s ...googleapi.Field) *SubnetworksInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SubnetworksInsertCall) Context(ctx context.Context) *SubnetworksInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SubnetworksInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.subnetwork)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/subnetworks")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "compute.subnetworks.insert" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *SubnetworksInsertCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates a subnetwork in the specified project using the data included in the request.",
+	//   "httpMethod": "POST",
+	//   "id": "compute.subnetworks.insert",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/subnetworks",
+	//   "request": {
+	//     "$ref": "Subnetwork"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.subnetworks.list":
+
+type SubnetworksListCall struct {
+	s            *Service
+	project      string
+	region       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of subnetworks available to the specified
+// project.
+func (r *SubnetworksService) List(project string, region string) *SubnetworksListCall {
+	c := &SubnetworksListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	return c
+}
+
+// Filter sets the optional parameter "filter": Sets a filter expression
+// for filtering listed resources, in the form filter={expression}. Your
+// {expression} must be in the format: field_name comparison_string
+// literal_string.
+//
+// The field_name is the name of the field you want to compare. Only
+// atomic field types are supported (string, number, boolean). The
+// comparison_string must be either eq (equals) or ne (not equals). The
+// literal_string is the string value to filter to. The literal value
+// must be valid for the type of field you are filtering by (string,
+// number, boolean). For string fields, the literal value is interpreted
+// as a regular expression using RE2 syntax. The literal value must
+// match the entire field.
+//
+// For example, filter=name ne example-instance.
+//
+// Compute Engine Beta API Only: If you use filtering in the Beta API,
+// you can also filter on nested fields. For example, you could filter
+// on instances that have set the scheduling.automaticRestart field to
+// true. In particular, use filtering on nested fields to take advantage
+// of instance labels to organize and filter results based on label
+// values.
+//
+// The Beta API also supports filtering on multiple expressions by
+// providing each separate expression within parentheses. For example,
+// (scheduling.automaticRestart eq true) (zone eq us-central1-f).
+// Multiple expressions are treated as AND expressions meaning that
+// resources must match all expressions to pass the filters.
+func (c *SubnetworksListCall) Filter(filter string) *SubnetworksListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": The maximum
+// number of results per page that Compute Engine should return. If the
+// number of available results is larger than maxResults, Compute Engine
+// returns a nextPageToken that can be used to get the next page of
+// results in subsequent list requests.
+func (c *SubnetworksListCall) MaxResults(maxResults int64) *SubnetworksListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Specifies a page
+// token to use. Set pageToken to the nextPageToken returned by a
+// previous list request to get the next page of results.
+func (c *SubnetworksListCall) PageToken(pageToken string) *SubnetworksListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SubnetworksListCall) Fields(s ...googleapi.Field) *SubnetworksListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *SubnetworksListCall) IfNoneMatch(entityTag string) *SubnetworksListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SubnetworksListCall) Context(ctx context.Context) *SubnetworksListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SubnetworksListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/subnetworks")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "compute.subnetworks.list" call.
+// Exactly one of *SubnetworkList or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *SubnetworkList.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *SubnetworksListCall) Do(opts ...googleapi.CallOption) (*SubnetworkList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &SubnetworkList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of subnetworks available to the specified project.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.subnetworks.list",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "default": "500",
+	//       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+	//       "format": "uint32",
+	//       "location": "query",
+	//       "maximum": "500",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/subnetworks",
+	//   "response": {
+	//     "$ref": "SubnetworkList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *SubnetworksListCall) Pages(ctx context.Context, f func(*SubnetworkList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
 // method id "compute.targetHttpProxies.delete":
 
 type TargetHttpProxiesDeleteCall struct {
@@ -32349,8 +33722,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of target instances grouped by
-// scope.
+// AggregatedList: Retrieves an aggregated list of target instances.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/targetInstances/aggregatedList
 func (r *TargetInstancesService) AggregatedList(project string) *TargetInstancesAggregatedListCall {
 	c := &TargetInstancesAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -32491,7 +33863,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of target instances grouped by scope.",
+	//   "description": "Retrieves an aggregated list of target instances.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.targetInstances.aggregatedList",
 	//   "parameterOrder": [
@@ -32991,7 +34363,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of TargetInstance resources available to the
+// List: Retrieves a list of TargetInstance resources available to the
 // specified project and zone.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/targetInstances/list
 func (r *TargetInstancesService) List(project string, zone string) *TargetInstancesListCall {
@@ -33135,7 +34507,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of TargetInstance resources available to the specified project and zone.",
+	//   "description": "Retrieves a list of TargetInstance resources available to the specified project and zone.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.targetInstances.list",
 	//   "parameterOrder": [
@@ -33511,7 +34883,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of target pools grouped by scope.
+// AggregatedList: Retrieves an aggregated list of target pools.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/targetPools/aggregatedList
 func (r *TargetPoolsService) AggregatedList(project string) *TargetPoolsAggregatedListCall {
 	c := &TargetPoolsAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -33652,7 +35024,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of target pools grouped by scope.",
+	//   "description": "Retrieves an aggregated list of target pools.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.targetPools.aggregatedList",
 	//   "parameterOrder": [
@@ -34018,7 +35390,7 @@
 }
 
 // GetHealth: Gets the most recent health check results for each IP for
-// the given instance that is referenced by given TargetPool.
+// the given instance that is referenced by the given TargetPool.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/targetPools/getHealth
 func (r *TargetPoolsService) GetHealth(project string, region string, targetPool string, instancereference *InstanceReference) *TargetPoolsGetHealthCall {
 	c := &TargetPoolsGetHealthCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -34106,7 +35478,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Gets the most recent health check results for each IP for the given instance that is referenced by given TargetPool.",
+	//   "description": "Gets the most recent health check results for each IP for the given instance that is referenced by the given TargetPool.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.targetPools.getHealth",
 	//   "parameterOrder": [
@@ -34299,7 +35671,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of TargetPool resources available to the
+// List: Retrieves a list of TargetPool resources available to the
 // specified project and region.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/targetPools/list
 func (r *TargetPoolsService) List(project string, region string) *TargetPoolsListCall {
@@ -34443,7 +35815,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of TargetPool resources available to the specified project and region.",
+	//   "description": "Retrieves a list of TargetPool resources available to the specified project and region.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.targetPools.list",
 	//   "parameterOrder": [
@@ -34978,8 +36350,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of target VPN gateways grouped by
-// scope.
+// AggregatedList: Retrieves an aggregated list of target VPN gateways .
 func (r *TargetVpnGatewaysService) AggregatedList(project string) *TargetVpnGatewaysAggregatedListCall {
 	c := &TargetVpnGatewaysAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -35119,7 +36490,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of target VPN gateways grouped by scope.",
+	//   "description": "Retrieves an aggregated list of target VPN gateways .",
 	//   "httpMethod": "GET",
 	//   "id": "compute.targetVpnGateways.aggregatedList",
 	//   "parameterOrder": [
@@ -35616,8 +36987,8 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of TargetVpnGateway resources available to
-// the specified project and region.
+// List: Retrieves a list of TargetVpnGateway resources available to the
+// specified project and region.
 func (r *TargetVpnGatewaysService) List(project string, region string) *TargetVpnGatewaysListCall {
 	c := &TargetVpnGatewaysListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -35759,7 +37130,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of TargetVpnGateway resources available to the specified project and region.",
+	//   "description": "Retrieves a list of TargetVpnGateway resources available to the specified project and region.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.targetVpnGateways.list",
 	//   "parameterOrder": [
@@ -36454,7 +37825,7 @@
 	ctx_       context.Context
 }
 
-// Patch: Update the entire content of the UrlMap resource. This method
+// Patch: Updates the entire content of the UrlMap resource. This method
 // supports patch semantics.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/urlMaps/patch
 func (r *UrlMapsService) Patch(project string, urlMap string, urlmap *UrlMap) *UrlMapsPatchCall {
@@ -36541,7 +37912,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Update the entire content of the UrlMap resource. This method supports patch semantics.",
+	//   "description": "Updates the entire content of the UrlMap resource. This method supports patch semantics.",
 	//   "httpMethod": "PATCH",
 	//   "id": "compute.urlMaps.patch",
 	//   "parameterOrder": [
@@ -36590,7 +37961,7 @@
 	ctx_       context.Context
 }
 
-// Update: Update the entire content of the UrlMap resource.
+// Update: Updates the entire content of the UrlMap resource.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/urlMaps/update
 func (r *UrlMapsService) Update(project string, urlMap string, urlmap *UrlMap) *UrlMapsUpdateCall {
 	c := &UrlMapsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -36676,7 +38047,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Update the entire content of the UrlMap resource.",
+	//   "description": "Updates the entire content of the UrlMap resource.",
 	//   "httpMethod": "PUT",
 	//   "id": "compute.urlMaps.update",
 	//   "parameterOrder": [
@@ -36725,7 +38096,7 @@
 	ctx_                   context.Context
 }
 
-// Validate: Run static validation for the UrlMap. In particular, the
+// Validate: Runs static validation for the UrlMap. In particular, the
 // tests of the provided UrlMap will be run. Calling this method does
 // NOT create the UrlMap.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/urlMaps/validate
@@ -36813,7 +38184,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Run static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
+	//   "description": "Runs static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
 	//   "httpMethod": "POST",
 	//   "id": "compute.urlMaps.validate",
 	//   "parameterOrder": [
@@ -36861,7 +38232,7 @@
 	ctx_         context.Context
 }
 
-// AggregatedList: Retrieves the list of VPN tunnels grouped by scope.
+// AggregatedList: Retrieves an aggregated list of VPN tunnels.
 func (r *VpnTunnelsService) AggregatedList(project string) *VpnTunnelsAggregatedListCall {
 	c := &VpnTunnelsAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -37001,7 +38372,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of VPN tunnels grouped by scope.",
+	//   "description": "Retrieves an aggregated list of VPN tunnels.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.vpnTunnels.aggregatedList",
 	//   "parameterOrder": [
@@ -37498,7 +38869,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of VpnTunnel resources contained in the
+// List: Retrieves a list of VpnTunnel resources contained in the
 // specified project and region.
 func (r *VpnTunnelsService) List(project string, region string) *VpnTunnelsListCall {
 	c := &VpnTunnelsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -37641,7 +39012,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of VpnTunnel resources contained in the specified project and region.",
+	//   "description": "Retrieves a list of VpnTunnel resources contained in the specified project and region.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.vpnTunnels.list",
 	//   "parameterOrder": [
@@ -37986,7 +39357,7 @@
 	ctx_         context.Context
 }
 
-// List: Retrieves the list of Operation resources contained within the
+// List: Retrieves a list of Operation resources contained within the
 // specified zone.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/zoneOperations/list
 func (r *ZoneOperationsService) List(project string, zone string) *ZoneOperationsListCall {
@@ -38130,7 +39501,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves the list of Operation resources contained within the specified zone.",
+	//   "description": "Retrieves a list of Operation resources contained within the specified zone.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.zoneOperations.list",
 	//   "parameterOrder": [
diff --git a/content/v2/content-api.json b/content/v2/content-api.json
index cfaf471..37e4dd9 100644
--- a/content/v2/content-api.json
+++ b/content/v2/content-api.json
@@ -1,12 +1,12 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/kOAnA9e-BsAB37sr1x6cT3rxlkc\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/WzxFI4GBYGkZGJCfKJi51ODdQOI\"",
  "discoveryVersion": "v1",
  "id": "content:v2",
  "name": "content",
  "canonicalName": "Shopping Content",
  "version": "v2",
- "revision": "20151211",
+ "revision": "20160115",
  "title": "Content API for Shopping",
  "description": "Manage product items, inventory, and Merchant Center accounts for Google Shopping.",
  "ownerDomain": "google.com",
@@ -1231,7 +1231,7 @@
     },
     "hour": {
      "type": "integer",
-     "description": "The hour of the day the feed file should be fetched (0-24).",
+     "description": "The hour of the day the feed file should be fetched (0-23).",
      "format": "uint32"
     },
     "password": {
diff --git a/content/v2/content-gen.go b/content/v2/content-gen.go
index e93bcfc..c0aa61b 100644
--- a/content/v2/content-gen.go
+++ b/content/v2/content-gen.go
@@ -1533,7 +1533,7 @@
 	// link using one of those four protocols.
 	FetchUrl string `json:"fetchUrl,omitempty"`
 
-	// Hour: The hour of the day the feed file should be fetched (0-24).
+	// Hour: The hour of the day the feed file should be fetched (0-23).
 	Hour int64 `json:"hour,omitempty"`
 
 	// Password: An optional password for fetch_url.
diff --git a/dataflow/v1b3/dataflow-api.json b/dataflow/v1b3/dataflow-api.json
index e57b7f5..1d236b7 100644
--- a/dataflow/v1b3/dataflow-api.json
+++ b/dataflow/v1b3/dataflow-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/ALGPA_KnBMWi8ED2AhMEce_HO4k\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/z_qEBVG4geak7DrKYhi9NJcxQa4\"",
  "discoveryVersion": "v1",
  "id": "dataflow:v1b3",
  "name": "dataflow",
  "version": "v1b3",
- "revision": "20160104",
+ "revision": "20160123",
  "title": "Google Dataflow API",
  "description": "Google Dataflow API.",
  "ownerDomain": "google.com",
@@ -160,7 +160,9 @@
       "JOB_STATE_DONE",
       "JOB_STATE_FAILED",
       "JOB_STATE_CANCELLED",
-      "JOB_STATE_UPDATED"
+      "JOB_STATE_UPDATED",
+      "JOB_STATE_DRAINING",
+      "JOB_STATE_DRAINED"
      ]
     },
     "currentStateTime": {
@@ -177,7 +179,9 @@
       "JOB_STATE_DONE",
       "JOB_STATE_FAILED",
       "JOB_STATE_CANCELLED",
-      "JOB_STATE_UPDATED"
+      "JOB_STATE_UPDATED",
+      "JOB_STATE_DRAINING",
+      "JOB_STATE_DRAINED"
      ]
     },
     "executionInfo": {
@@ -341,7 +345,7 @@
     },
     "zone": {
      "type": "string",
-     "description": "Zone to run the worker pools in (e.g. \"us-central1-a\"). If empty or unspecified, the service will attempt to choose a reasonable default."
+     "description": "Zone to run the worker pools in. If empty or unspecified, the service will attempt to choose a reasonable default."
     },
     "taskrunnerSettings": {
      "$ref": "TaskRunnerSettings",
@@ -881,6 +885,14 @@
      "type": "number",
      "description": "Completion as fraction of the input consumed, from 0.0 (beginning, nothing consumed), to 1.0 (end of the input, entire input consumed).",
      "format": "double"
+    },
+    "remainingParallelism": {
+     "$ref": "ReportedParallelism",
+     "description": "Total amount of parallelism in the input of this WorkItem that has not been consumed yet (i.e. can be delegated to a new WorkItem via dynamic splitting). \"Amount of parallelism\" refers to how many non-empty parts of the input can be read in parallel. This does not necessarily equal number of records. An input that can be read in parallel down to the individual records is called \"perfectly splittable\". An example of non-perfectly parallelizable input is a block-compressed file format where a block of records has to be read as a whole, but different blocks can be read in parallel. Examples: * If we have read 30 records out of 50 in a perfectly splittable 50-record input, this value should be 20. * If we are reading through block 3 in a block-compressed file consisting of 5 blocks, this value should be 2 (since blocks 4 and 5 can be processed in parallel by new work items via dynamic splitting). * If we are reading through the last block in a block-compressed file, or reading or processing the last record in a perfectly splittable input, this value should be 0, because the remainder of the work item cannot be further split."
+    },
+    "consumedParallelism": {
+     "$ref": "ReportedParallelism",
+     "description": "Total amount of parallelism in the portion of input of this work item that has already been consumed. In the first two examples above (see remaining_parallelism), the value should be 30 or 3 respectively. The sum of remaining_parallelism and consumed_parallelism should equal the total amount of parallelism in this work item. If specified, must be finite."
     }
    }
   },
@@ -933,6 +945,22 @@
     }
    }
   },
+  "ReportedParallelism": {
+   "id": "ReportedParallelism",
+   "type": "object",
+   "description": "Represents the level of parallelism in a WorkItem's input, reported by the worker.",
+   "properties": {
+    "isInfinite": {
+     "type": "boolean",
+     "description": "Specifies whether the parallelism is infinite. If true, \"value\" is ignored. Infinite parallelism means the service will assume that the work item can always be split into more non-empty work items by dynamic splitting. This is a work-around for lack of support for infinity by the current JSON-based Java RPC stack."
+    },
+    "value": {
+     "type": "number",
+     "description": "Specifies the level of parallelism in case it is finite.",
+     "format": "double"
+    }
+   }
+  },
   "DynamicSourceSplit": {
    "id": "DynamicSourceSplit",
    "type": "object",
diff --git a/dataflow/v1b3/dataflow-gen.go b/dataflow/v1b3/dataflow-gen.go
index c23562f..91b1dce 100644
--- a/dataflow/v1b3/dataflow-gen.go
+++ b/dataflow/v1b3/dataflow-gen.go
@@ -153,6 +153,14 @@
 // ApproximateReportedProgress: A progress measurement of a WorkItem by
 // a worker.
 type ApproximateReportedProgress struct {
+	// ConsumedParallelism: Total amount of parallelism in the portion of
+	// input of this work item that has already been consumed. In the first
+	// two examples above (see remaining_parallelism), the value should be
+	// 30 or 3 respectively. The sum of remaining_parallelism and
+	// consumed_parallelism should equal the total amount of parallelism in
+	// this work item. If specified, must be finite.
+	ConsumedParallelism *ReportedParallelism `json:"consumedParallelism,omitempty"`
+
 	// FractionConsumed: Completion as fraction of the input consumed, from
 	// 0.0 (beginning, nothing consumed), to 1.0 (end of the input, entire
 	// input consumed).
@@ -161,8 +169,28 @@
 	// Position: A Position within the work to represent a progress.
 	Position *Position `json:"position,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "FractionConsumed") to
-	// unconditionally include in API requests. By default, fields with
+	// RemainingParallelism: Total amount of parallelism in the input of
+	// this WorkItem that has not been consumed yet (i.e. can be delegated
+	// to a new WorkItem via dynamic splitting). "Amount of parallelism"
+	// refers to how many non-empty parts of the input can be read in
+	// parallel. This does not necessarily equal number of records. An input
+	// that can be read in parallel down to the individual records is called
+	// "perfectly splittable". An example of non-perfectly parallelizable
+	// input is a block-compressed file format where a block of records has
+	// to be read as a whole, but different blocks can be read in parallel.
+	// Examples: * If we have read 30 records out of 50 in a perfectly
+	// splittable 50-record input, this value should be 20. * If we are
+	// reading through block 3 in a block-compressed file consisting of 5
+	// blocks, this value should be 2 (since blocks 4 and 5 can be processed
+	// in parallel by new work items via dynamic splitting). * If we are
+	// reading through the last block in a block-compressed file, or reading
+	// or processing the last record in a perfectly splittable input, this
+	// value should be 0, because the remainder of the work item cannot be
+	// further split.
+	RemainingParallelism *ReportedParallelism `json:"remainingParallelism,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ConsumedParallelism")
+	// to unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
 	// server regardless of whether the field is empty or not. This may be
@@ -622,6 +650,8 @@
 	//   "JOB_STATE_FAILED"
 	//   "JOB_STATE_CANCELLED"
 	//   "JOB_STATE_UPDATED"
+	//   "JOB_STATE_DRAINING"
+	//   "JOB_STATE_DRAINED"
 	CurrentState string `json:"currentState,omitempty"`
 
 	// CurrentStateTime: The timestamp associated with the current state.
@@ -676,6 +706,8 @@
 	//   "JOB_STATE_FAILED"
 	//   "JOB_STATE_CANCELLED"
 	//   "JOB_STATE_UPDATED"
+	//   "JOB_STATE_DRAINING"
+	//   "JOB_STATE_DRAINED"
 	RequestedState string `json:"requestedState,omitempty"`
 
 	// Steps: The top-level steps that constitute the entire job.
@@ -1509,6 +1541,34 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
+// ReportedParallelism: Represents the level of parallelism in a
+// WorkItem's input, reported by the worker.
+type ReportedParallelism struct {
+	// IsInfinite: Specifies whether the parallelism is infinite. If true,
+	// "value" is ignored. Infinite parallelism means the service will
+	// assume that the work item can always be split into more non-empty
+	// work items by dynamic splitting. This is a work-around for lack of
+	// support for infinity by the current JSON-based Java RPC stack.
+	IsInfinite bool `json:"isInfinite,omitempty"`
+
+	// Value: Specifies the level of parallelism in case it is finite.
+	Value float64 `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "IsInfinite") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ReportedParallelism) MarshalJSON() ([]byte, error) {
+	type noMethod ReportedParallelism
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
 // SendWorkerMessagesRequest: A request for sending worker messages to
 // the service.
 type SendWorkerMessagesRequest struct {
@@ -2932,9 +2992,8 @@
 	//   "TEARDOWN_NEVER"
 	TeardownPolicy string `json:"teardownPolicy,omitempty"`
 
-	// Zone: Zone to run the worker pools in (e.g. "us-central1-a"). If
-	// empty or unspecified, the service will attempt to choose a reasonable
-	// default.
+	// Zone: Zone to run the worker pools in. If empty or unspecified, the
+	// service will attempt to choose a reasonable default.
 	Zone string `json:"zone,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AutoscalingSettings")
diff --git a/deploymentmanager/v2/deploymentmanager-api.json b/deploymentmanager/v2/deploymentmanager-api.json
index 40ab831..2309eba 100644
--- a/deploymentmanager/v2/deploymentmanager-api.json
+++ b/deploymentmanager/v2/deploymentmanager-api.json
@@ -1,12 +1,12 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/rSUkxW0tS4QSeRrv5a5_4SUYkYo\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/XQbTrYsKXQ8hNhfyJi0YvdtpGpE\"",
  "discoveryVersion": "v1",
  "id": "deploymentmanager:v2",
  "name": "deploymentmanager",
  "canonicalName": "Deployment Manager",
  "version": "v2",
- "revision": "20160104",
+ "revision": "20160201",
  "title": "Google Cloud Deployment Manager API",
  "description": "The Deployment Manager API allows users to declaratively configure, deploy and run complex solutions on the Google Cloud Platform.",
  "ownerDomain": "google.com",
@@ -120,6 +120,13 @@
      "type": "string",
      "description": "[Output Only] Timestamp when the deployment was created, in RFC3339 text format ."
     },
+    "labels": {
+     "type": "array",
+     "description": "Map of labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: [a-z]([-a-z0-9]*[a-z0-9])? Label values must be between 0 and 63 characters long and must conform to the regular expression ([a-z]([-a-z0-9]*[a-z0-9])?)?",
+     "items": {
+      "$ref": "DeploymentLabelEntry"
+     }
+    },
     "manifest": {
      "type": "string",
      "description": "[Output Only] URL of the manifest representing the last manifest that was successfully deployed."
@@ -142,17 +149,48 @@
     }
    }
   },
+  "DeploymentLabelEntry": {
+   "id": "DeploymentLabelEntry",
+   "type": "object",
+   "properties": {
+    "key": {
+     "type": "string"
+    },
+    "value": {
+     "type": "string"
+    }
+   }
+  },
   "DeploymentUpdate": {
    "id": "DeploymentUpdate",
    "type": "object",
    "description": "",
    "properties": {
+    "labels": {
+     "type": "array",
+     "description": "[Output Only] Map of labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: [a-z]([-a-z0-9]*[a-z0-9])? Label values must be between 0 and 63 characters long and must conform to the regular expression ([a-z]([-a-z0-9]*[a-z0-9])?)?",
+     "items": {
+      "$ref": "DeploymentUpdateLabelEntry"
+     }
+    },
     "manifest": {
      "type": "string",
      "description": "[Output Only] URL of the manifest representing the update configuration of this deployment."
     }
    }
   },
+  "DeploymentUpdateLabelEntry": {
+   "id": "DeploymentUpdateLabelEntry",
+   "type": "object",
+   "properties": {
+    "key": {
+     "type": "string"
+    },
+    "value": {
+     "type": "string"
+    }
+   }
+  },
   "DeploymentsCancelPreviewRequest": {
    "id": "DeploymentsCancelPreviewRequest",
    "type": "object",
@@ -160,7 +198,7 @@
    "properties": {
     "fingerprint": {
      "type": "string",
-     "description": "Specifies a fingerprint for cancelPreview() requests. A fingerprint is a randomly generated value that must be provided in cancelPreview() requests to perform optimistic locking. This ensures optimistic concurrency so that the deployment does not have conflicting requests (e.g. if someone attempts to make a new update request while another user attempts to cancel a preview, this would prevent one of the requests).\n\nThe fingerprint is initially generated by Deployment Manager and changes after every request to modify a deployment. To get the latest fingerprint value, perform a get() request to a deployment.",
+     "description": "Specifies a fingerprint for cancelPreview() requests. A fingerprint is a randomly generated value that must be provided in cancelPreview() requests to perform optimistic locking. This ensures optimistic concurrency so that the deployment does not have conflicting requests (e.g. if someone attempts to make a new update request while another user attempts to cancel a preview, this would prevent one of the requests).\n\nThe fingerprint is initially generated by Deployment Manager and changes after every request to modify a deployment. To get the latest fingerprint value, perform a get() request on the deployment.",
      "format": "byte"
     }
    }
@@ -190,7 +228,7 @@
    "properties": {
     "fingerprint": {
      "type": "string",
-     "description": "Specifies a fingerprint for stop() requests. A fingerprint is a randomly generated value that must be provided in stop() requests to perform optimistic locking. This ensures optimistic concurrency so that the deployment does not have conflicting requests (e.g. if someone attempts to make a new update request while another user attempts to stop an ongoing update request, this would prevent a collision).\n\nThe fingerprint is initially generated by Deployment Manager and changes after every request to modify a deployment. To get the latest fingerprint value, perform a get() request to a deployment.",
+     "description": "Specifies a fingerprint for stop() requests. A fingerprint is a randomly generated value that must be provided in stop() requests to perform optimistic locking. This ensures optimistic concurrency so that the deployment does not have conflicting requests (e.g. if someone attempts to make a new update request while another user attempts to stop an ongoing update request, this would prevent a collision).\n\nThe fingerprint is initially generated by Deployment Manager and changes after every request to modify a deployment. To get the latest fingerprint value, perform a get() request on the deployment.",
      "format": "byte"
     }
    }
@@ -278,7 +316,7 @@
    "properties": {
     "clientOperationId": {
      "type": "string",
-     "description": "[Output Only] A unique client ID generated by the server."
+     "description": "[Output Only] Reserved for future use."
     },
     "creationTimestamp": {
      "type": "string",
@@ -348,7 +386,7 @@
     },
     "operationType": {
      "type": "string",
-     "description": "[Output Only] The type of operation, which can be insert, update, or delete."
+     "description": "[Output Only] The type of operation, such as insert, update, or delete, and so on."
     },
     "progress": {
      "type": "integer",
@@ -357,7 +395,7 @@
     },
     "region": {
      "type": "string",
-     "description": "[Output Only] URL of the region where the operation resides. Only available when performing regional operations."
+     "description": "[Output Only] The URL of the region where the operation resides. Only available when performing regional operations."
     },
     "selfLink": {
      "type": "string",
@@ -382,7 +420,7 @@
     },
     "targetLink": {
      "type": "string",
-     "description": "[Output Only] The URL of the resource that the operation is modifying."
+     "description": "[Output Only] The URL of the resource that the operation modifies."
     },
     "user": {
      "type": "string",
@@ -424,7 +462,7 @@
     },
     "zone": {
      "type": "string",
-     "description": "[Output Only] URL of the zone where the operation resides. Only available when performing per-zone operations."
+     "description": "[Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations."
     }
    }
   },
@@ -843,12 +881,12 @@
      "parameters": {
       "filter": {
        "type": "string",
-       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
        "location": "query"
       },
       "maxResults": {
        "type": "integer",
-       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
        "default": "500",
        "format": "uint32",
        "minimum": "0",
@@ -924,7 +962,7 @@
       },
       "preview": {
        "type": "boolean",
-       "description": "If set to true, updates the deployment and creates and updates the \"shell\" resources but does not actually alter or instantiate these resources. This allows you to preview what your deployment looks like. You can use this intent to preview how an update would affect your deployment. You must provide a target.config with a configuration if this is set to true. After previewing a deployment, you can deploy your resources by making a request with the update() or you can cancelPreview() to remove the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it.",
+       "description": "If set to true, updates the deployment and creates and updates the \"shell\" resources but does not actually alter or instantiate these resources. This allows you to preview what your deployment will look like. You can use this intent to preview how an update would affect your deployment. You must provide a target.config with a configuration if this is set to true. After previewing a deployment, you can deploy your resources by making a request with the update() or you can cancelPreview() to remove the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it.",
        "default": "false",
        "location": "query"
       },
@@ -1030,7 +1068,7 @@
       },
       "preview": {
        "type": "boolean",
-       "description": "If set to true, updates the deployment and creates and updates the \"shell\" resources but does not actually alter or instantiate these resources. This allows you to preview what your deployment looks like. You can use this intent to preview how an update would affect your deployment. You must provide a target.config with a configuration if this is set to true. After previewing a deployment, you can deploy your resources by making a request with the update() or you can cancelPreview() to remove the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it.",
+       "description": "If set to true, updates the deployment and creates and updates the \"shell\" resources but does not actually alter or instantiate these resources. This allows you to preview what your deployment will look like. You can use this intent to preview how an update would affect your deployment. You must provide a target.config with a configuration if this is set to true. After previewing a deployment, you can deploy your resources by making a request with the update() or you can cancelPreview() to remove the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it.",
        "default": "false",
        "location": "query"
       },
@@ -1119,12 +1157,12 @@
       },
       "filter": {
        "type": "string",
-       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
        "location": "query"
       },
       "maxResults": {
        "type": "integer",
-       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
        "default": "500",
        "format": "uint32",
        "minimum": "0",
@@ -1204,12 +1242,12 @@
      "parameters": {
       "filter": {
        "type": "string",
-       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
        "location": "query"
       },
       "maxResults": {
        "type": "integer",
-       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
        "default": "500",
        "format": "uint32",
        "minimum": "0",
@@ -1303,12 +1341,12 @@
       },
       "filter": {
        "type": "string",
-       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
        "location": "query"
       },
       "maxResults": {
        "type": "integer",
-       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
        "default": "500",
        "format": "uint32",
        "minimum": "0",
@@ -1354,12 +1392,12 @@
      "parameters": {
       "filter": {
        "type": "string",
-       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
        "location": "query"
       },
       "maxResults": {
        "type": "integer",
-       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
        "default": "500",
        "format": "uint32",
        "minimum": "0",
diff --git a/deploymentmanager/v2/deploymentmanager-gen.go b/deploymentmanager/v2/deploymentmanager-gen.go
index 4de44d9..892c811 100644
--- a/deploymentmanager/v2/deploymentmanager-gen.go
+++ b/deploymentmanager/v2/deploymentmanager-gen.go
@@ -186,6 +186,14 @@
 	// in RFC3339 text format .
 	InsertTime string `json:"insertTime,omitempty"`
 
+	// Labels: Map of labels; provided by the client when the resource is
+	// created or updated. Specifically: Label keys must be between 1 and 63
+	// characters long and must conform to the following regular expression:
+	// [a-z]([-a-z0-9]*[a-z0-9])? Label values must be between 0 and 63
+	// characters long and must conform to the regular expression
+	// ([a-z]([-a-z0-9]*[a-z0-9])?)?
+	Labels []*DeploymentLabelEntry `json:"labels,omitempty"`
+
 	// Manifest: [Output Only] URL of the manifest representing the last
 	// manifest that was successfully deployed.
 	Manifest string `json:"manifest,omitempty"`
@@ -231,12 +239,40 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
+type DeploymentLabelEntry struct {
+	Key string `json:"key,omitempty"`
+
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Key") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DeploymentLabelEntry) MarshalJSON() ([]byte, error) {
+	type noMethod DeploymentLabelEntry
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
 type DeploymentUpdate struct {
+	// Labels: [Output Only] Map of labels; provided by the client when the
+	// resource is created or updated. Specifically: Label keys must be
+	// between 1 and 63 characters long and must conform to the following
+	// regular expression: [a-z]([-a-z0-9]*[a-z0-9])? Label values must be
+	// between 0 and 63 characters long and must conform to the regular
+	// expression ([a-z]([-a-z0-9]*[a-z0-9])?)?
+	Labels []*DeploymentUpdateLabelEntry `json:"labels,omitempty"`
+
 	// Manifest: [Output Only] URL of the manifest representing the update
 	// configuration of this deployment.
 	Manifest string `json:"manifest,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "Manifest") to
+	// ForceSendFields is a list of field names (e.g. "Labels") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -251,6 +287,26 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
+type DeploymentUpdateLabelEntry struct {
+	Key string `json:"key,omitempty"`
+
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Key") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DeploymentUpdateLabelEntry) MarshalJSON() ([]byte, error) {
+	type noMethod DeploymentUpdateLabelEntry
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
 type DeploymentsCancelPreviewRequest struct {
 	// Fingerprint: Specifies a fingerprint for cancelPreview() requests. A
 	// fingerprint is a randomly generated value that must be provided in
@@ -262,7 +318,7 @@
 	//
 	// The fingerprint is initially generated by Deployment Manager and
 	// changes after every request to modify a deployment. To get the latest
-	// fingerprint value, perform a get() request to a deployment.
+	// fingerprint value, perform a get() request on the deployment.
 	Fingerprint string `json:"fingerprint,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Fingerprint") to
@@ -322,7 +378,7 @@
 	//
 	// The fingerprint is initially generated by Deployment Manager and
 	// changes after every request to modify a deployment. To get the latest
-	// fingerprint value, perform a get() request to a deployment.
+	// fingerprint value, perform a get() request on the deployment.
 	Fingerprint string `json:"fingerprint,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Fingerprint") to
@@ -442,8 +498,7 @@
 // Operation: An Operation resource, used to manage asynchronous API
 // requests.
 type Operation struct {
-	// ClientOperationId: [Output Only] A unique client ID generated by the
-	// server.
+	// ClientOperationId: [Output Only] Reserved for future use.
 	ClientOperationId string `json:"clientOperationId,omitempty"`
 
 	// CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text
@@ -486,8 +541,8 @@
 	// Name: [Output Only] Name of the resource.
 	Name string `json:"name,omitempty"`
 
-	// OperationType: [Output Only] The type of operation, which can be
-	// insert, update, or delete.
+	// OperationType: [Output Only] The type of operation, such as insert,
+	// update, or delete, and so on.
 	OperationType string `json:"operationType,omitempty"`
 
 	// Progress: [Output Only] An optional progress indicator that ranges
@@ -497,8 +552,8 @@
 	// increase as the operation progresses.
 	Progress int64 `json:"progress,omitempty"`
 
-	// Region: [Output Only] URL of the region where the operation resides.
-	// Only available when performing regional operations.
+	// Region: [Output Only] The URL of the region where the operation
+	// resides. Only available when performing regional operations.
 	Region string `json:"region,omitempty"`
 
 	// SelfLink: [Output Only] Server-defined URL for the resource.
@@ -521,7 +576,7 @@
 	TargetId uint64 `json:"targetId,omitempty,string"`
 
 	// TargetLink: [Output Only] The URL of the resource that the operation
-	// is modifying.
+	// modifies.
 	TargetLink string `json:"targetLink,omitempty"`
 
 	// User: [Output Only] User who requested the operation, for example:
@@ -532,8 +587,8 @@
 	// processing of the operation, this field will be populated.
 	Warnings []*OperationWarnings `json:"warnings,omitempty"`
 
-	// Zone: [Output Only] URL of the zone where the operation resides. Only
-	// available when performing per-zone operations.
+	// Zone: [Output Only] The URL of the zone where the operation resides.
+	// Only available when performing per-zone operations.
 	Zone string `json:"zone,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -1652,7 +1707,9 @@
 // as a regular expression using RE2 syntax. The literal value must
 // match the entire field.
 //
-// For example, filter=name ne example-instance.
+// For example, to filter for instances whose name is not equal to
+// example-instance, you would use filter=name ne
+// example-instance.
 //
 // Compute Engine Beta API Only: If you use filtering in the Beta API,
 // you can also filter on nested fields. For example, you could filter
@@ -1672,10 +1729,10 @@
 }
 
 // MaxResults sets the optional parameter "maxResults": The maximum
-// number of results per page that Compute Engine should return. If the
-// number of available results is larger than maxResults, Compute Engine
-// returns a nextPageToken that can be used to get the next page of
-// results in subsequent list requests.
+// number of results per page that should be returned. If the number of
+// available results is larger than maxResults, Compute Engine returns a
+// nextPageToken that can be used to get the next page of results in
+// subsequent list requests.
 func (c *DeploymentsListCall) MaxResults(maxResults int64) *DeploymentsListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
@@ -1779,13 +1836,13 @@
 	//   ],
 	//   "parameters": {
 	//     "filter": {
-	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
 	//       "default": "500",
-	//       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+	//       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
 	//       "format": "uint32",
 	//       "location": "query",
 	//       "maximum": "500",
@@ -1886,14 +1943,14 @@
 // Preview sets the optional parameter "preview": If set to true,
 // updates the deployment and creates and updates the "shell" resources
 // but does not actually alter or instantiate these resources. This
-// allows you to preview what your deployment looks like. You can use
-// this intent to preview how an update would affect your deployment.
-// You must provide a target.config with a configuration if this is set
-// to true. After previewing a deployment, you can deploy your resources
-// by making a request with the update() or you can cancelPreview() to
-// remove the preview altogether. Note that the deployment will still
-// exist after you cancel the preview and you must separately delete
-// this deployment if you want to remove it.
+// allows you to preview what your deployment will look like. You can
+// use this intent to preview how an update would affect your
+// deployment. You must provide a target.config with a configuration if
+// this is set to true. After previewing a deployment, you can deploy
+// your resources by making a request with the update() or you can
+// cancelPreview() to remove the preview altogether. Note that the
+// deployment will still exist after you cancel the preview and you must
+// separately delete this deployment if you want to remove it.
 func (c *DeploymentsPatchCall) Preview(preview bool) *DeploymentsPatchCall {
 	c.urlParams_.Set("preview", fmt.Sprint(preview))
 	return c
@@ -2020,7 +2077,7 @@
 	//     },
 	//     "preview": {
 	//       "default": "false",
-	//       "description": "If set to true, updates the deployment and creates and updates the \"shell\" resources but does not actually alter or instantiate these resources. This allows you to preview what your deployment looks like. You can use this intent to preview how an update would affect your deployment. You must provide a target.config with a configuration if this is set to true. After previewing a deployment, you can deploy your resources by making a request with the update() or you can cancelPreview() to remove the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it.",
+	//       "description": "If set to true, updates the deployment and creates and updates the \"shell\" resources but does not actually alter or instantiate these resources. This allows you to preview what your deployment will look like. You can use this intent to preview how an update would affect your deployment. You must provide a target.config with a configuration if this is set to true. After previewing a deployment, you can deploy your resources by making a request with the update() or you can cancelPreview() to remove the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it.",
 	//       "location": "query",
 	//       "type": "boolean"
 	//     },
@@ -2229,14 +2286,14 @@
 // Preview sets the optional parameter "preview": If set to true,
 // updates the deployment and creates and updates the "shell" resources
 // but does not actually alter or instantiate these resources. This
-// allows you to preview what your deployment looks like. You can use
-// this intent to preview how an update would affect your deployment.
-// You must provide a target.config with a configuration if this is set
-// to true. After previewing a deployment, you can deploy your resources
-// by making a request with the update() or you can cancelPreview() to
-// remove the preview altogether. Note that the deployment will still
-// exist after you cancel the preview and you must separately delete
-// this deployment if you want to remove it.
+// allows you to preview what your deployment will look like. You can
+// use this intent to preview how an update would affect your
+// deployment. You must provide a target.config with a configuration if
+// this is set to true. After previewing a deployment, you can deploy
+// your resources by making a request with the update() or you can
+// cancelPreview() to remove the preview altogether. Note that the
+// deployment will still exist after you cancel the preview and you must
+// separately delete this deployment if you want to remove it.
 func (c *DeploymentsUpdateCall) Preview(preview bool) *DeploymentsUpdateCall {
 	c.urlParams_.Set("preview", fmt.Sprint(preview))
 	return c
@@ -2363,7 +2420,7 @@
 	//     },
 	//     "preview": {
 	//       "default": "false",
-	//       "description": "If set to true, updates the deployment and creates and updates the \"shell\" resources but does not actually alter or instantiate these resources. This allows you to preview what your deployment looks like. You can use this intent to preview how an update would affect your deployment. You must provide a target.config with a configuration if this is set to true. After previewing a deployment, you can deploy your resources by making a request with the update() or you can cancelPreview() to remove the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it.",
+	//       "description": "If set to true, updates the deployment and creates and updates the \"shell\" resources but does not actually alter or instantiate these resources. This allows you to preview what your deployment will look like. You can use this intent to preview how an update would affect your deployment. You must provide a target.config with a configuration if this is set to true. After previewing a deployment, you can deploy your resources by making a request with the update() or you can cancelPreview() to remove the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it.",
 	//       "location": "query",
 	//       "type": "boolean"
 	//     },
@@ -2573,7 +2630,9 @@
 // as a regular expression using RE2 syntax. The literal value must
 // match the entire field.
 //
-// For example, filter=name ne example-instance.
+// For example, to filter for instances whose name is not equal to
+// example-instance, you would use filter=name ne
+// example-instance.
 //
 // Compute Engine Beta API Only: If you use filtering in the Beta API,
 // you can also filter on nested fields. For example, you could filter
@@ -2593,10 +2652,10 @@
 }
 
 // MaxResults sets the optional parameter "maxResults": The maximum
-// number of results per page that Compute Engine should return. If the
-// number of available results is larger than maxResults, Compute Engine
-// returns a nextPageToken that can be used to get the next page of
-// results in subsequent list requests.
+// number of results per page that should be returned. If the number of
+// available results is larger than maxResults, Compute Engine returns a
+// nextPageToken that can be used to get the next page of results in
+// subsequent list requests.
 func (c *ManifestsListCall) MaxResults(maxResults int64) *ManifestsListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
@@ -2709,13 +2768,13 @@
 	//       "type": "string"
 	//     },
 	//     "filter": {
-	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
 	//       "default": "500",
-	//       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+	//       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
 	//       "format": "uint32",
 	//       "location": "query",
 	//       "maximum": "500",
@@ -2939,7 +2998,9 @@
 // as a regular expression using RE2 syntax. The literal value must
 // match the entire field.
 //
-// For example, filter=name ne example-instance.
+// For example, to filter for instances whose name is not equal to
+// example-instance, you would use filter=name ne
+// example-instance.
 //
 // Compute Engine Beta API Only: If you use filtering in the Beta API,
 // you can also filter on nested fields. For example, you could filter
@@ -2959,10 +3020,10 @@
 }
 
 // MaxResults sets the optional parameter "maxResults": The maximum
-// number of results per page that Compute Engine should return. If the
-// number of available results is larger than maxResults, Compute Engine
-// returns a nextPageToken that can be used to get the next page of
-// results in subsequent list requests.
+// number of results per page that should be returned. If the number of
+// available results is larger than maxResults, Compute Engine returns a
+// nextPageToken that can be used to get the next page of results in
+// subsequent list requests.
 func (c *OperationsListCall) MaxResults(maxResults int64) *OperationsListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
@@ -3066,13 +3127,13 @@
 	//   ],
 	//   "parameters": {
 	//     "filter": {
-	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
 	//       "default": "500",
-	//       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+	//       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
 	//       "format": "uint32",
 	//       "location": "query",
 	//       "maximum": "500",
@@ -3309,7 +3370,9 @@
 // as a regular expression using RE2 syntax. The literal value must
 // match the entire field.
 //
-// For example, filter=name ne example-instance.
+// For example, to filter for instances whose name is not equal to
+// example-instance, you would use filter=name ne
+// example-instance.
 //
 // Compute Engine Beta API Only: If you use filtering in the Beta API,
 // you can also filter on nested fields. For example, you could filter
@@ -3329,10 +3392,10 @@
 }
 
 // MaxResults sets the optional parameter "maxResults": The maximum
-// number of results per page that Compute Engine should return. If the
-// number of available results is larger than maxResults, Compute Engine
-// returns a nextPageToken that can be used to get the next page of
-// results in subsequent list requests.
+// number of results per page that should be returned. If the number of
+// available results is larger than maxResults, Compute Engine returns a
+// nextPageToken that can be used to get the next page of results in
+// subsequent list requests.
 func (c *ResourcesListCall) MaxResults(maxResults int64) *ResourcesListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
@@ -3445,13 +3508,13 @@
 	//       "type": "string"
 	//     },
 	//     "filter": {
-	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
 	//       "default": "500",
-	//       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+	//       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
 	//       "format": "uint32",
 	//       "location": "query",
 	//       "maximum": "500",
@@ -3537,7 +3600,9 @@
 // as a regular expression using RE2 syntax. The literal value must
 // match the entire field.
 //
-// For example, filter=name ne example-instance.
+// For example, to filter for instances whose name is not equal to
+// example-instance, you would use filter=name ne
+// example-instance.
 //
 // Compute Engine Beta API Only: If you use filtering in the Beta API,
 // you can also filter on nested fields. For example, you could filter
@@ -3557,10 +3622,10 @@
 }
 
 // MaxResults sets the optional parameter "maxResults": The maximum
-// number of results per page that Compute Engine should return. If the
-// number of available results is larger than maxResults, Compute Engine
-// returns a nextPageToken that can be used to get the next page of
-// results in subsequent list requests.
+// number of results per page that should be returned. If the number of
+// available results is larger than maxResults, Compute Engine returns a
+// nextPageToken that can be used to get the next page of results in
+// subsequent list requests.
 func (c *TypesListCall) MaxResults(maxResults int64) *TypesListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
@@ -3664,13 +3729,13 @@
 	//   ],
 	//   "parameters": {
 	//     "filter": {
-	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
 	//       "default": "500",
-	//       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+	//       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
 	//       "format": "uint32",
 	//       "location": "query",
 	//       "maximum": "500",
diff --git a/deploymentmanager/v2beta2/deploymentmanager-api.json b/deploymentmanager/v2beta2/deploymentmanager-api.json
index 62e740c..2e44d5e 100644
--- a/deploymentmanager/v2beta2/deploymentmanager-api.json
+++ b/deploymentmanager/v2beta2/deploymentmanager-api.json
@@ -1,12 +1,12 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/L0xc6p-gR1O4iwA7mMPQ4x5HaTE\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/ujrl013tcrXc2AVD72qD1eDxLw4\"",
  "discoveryVersion": "v1",
  "id": "deploymentmanager:v2beta2",
  "name": "deploymentmanager",
  "canonicalName": "Deployment Manager",
  "version": "v2beta2",
- "revision": "20160104",
+ "revision": "20160201",
  "title": "Google Cloud Deployment Manager API",
  "description": "The Deployment Manager API allows users to declaratively configure, deploy and run complex solutions on the Google Cloud Platform.",
  "ownerDomain": "google.com",
@@ -258,7 +258,7 @@
    "properties": {
     "clientOperationId": {
      "type": "string",
-     "description": "[Output Only] A unique client ID generated by the server."
+     "description": "[Output Only] Reserved for future use."
     },
     "creationTimestamp": {
      "type": "string",
@@ -328,7 +328,7 @@
     },
     "operationType": {
      "type": "string",
-     "description": "[Output Only] The type of operation, which can be insert, update, or delete."
+     "description": "[Output Only] The type of operation, such as insert, update, or delete, and so on."
     },
     "progress": {
      "type": "integer",
@@ -337,7 +337,7 @@
     },
     "region": {
      "type": "string",
-     "description": "[Output Only] URL of the region where the operation resides. Only available when performing regional operations."
+     "description": "[Output Only] The URL of the region where the operation resides. Only available when performing regional operations."
     },
     "selfLink": {
      "type": "string",
@@ -362,7 +362,7 @@
     },
     "targetLink": {
      "type": "string",
-     "description": "[Output Only] The URL of the resource that the operation is modifying."
+     "description": "[Output Only] The URL of the resource that the operation modifies."
     },
     "user": {
      "type": "string",
@@ -404,7 +404,7 @@
     },
     "zone": {
      "type": "string",
-     "description": "[Output Only] URL of the zone where the operation resides. Only available when performing per-zone operations."
+     "description": "[Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations."
     }
    }
   },
@@ -694,12 +694,12 @@
      "parameters": {
       "filter": {
        "type": "string",
-       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
        "location": "query"
       },
       "maxResults": {
        "type": "integer",
-       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
        "default": "500",
        "format": "uint32",
        "minimum": "0",
@@ -950,12 +950,12 @@
       },
       "filter": {
        "type": "string",
-       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
        "location": "query"
       },
       "maxResults": {
        "type": "integer",
-       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
        "default": "500",
        "format": "uint32",
        "minimum": "0",
@@ -1035,12 +1035,12 @@
      "parameters": {
       "filter": {
        "type": "string",
-       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
        "location": "query"
       },
       "maxResults": {
        "type": "integer",
-       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
        "default": "500",
        "format": "uint32",
        "minimum": "0",
@@ -1134,12 +1134,12 @@
       },
       "filter": {
        "type": "string",
-       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
        "location": "query"
       },
       "maxResults": {
        "type": "integer",
-       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
        "default": "500",
        "format": "uint32",
        "minimum": "0",
@@ -1185,12 +1185,12 @@
      "parameters": {
       "filter": {
        "type": "string",
-       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
        "location": "query"
       },
       "maxResults": {
        "type": "integer",
-       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
        "default": "500",
        "format": "uint32",
        "minimum": "0",
diff --git a/deploymentmanager/v2beta2/deploymentmanager-gen.go b/deploymentmanager/v2beta2/deploymentmanager-gen.go
index 61c509a..bcfcc30 100644
--- a/deploymentmanager/v2beta2/deploymentmanager-gen.go
+++ b/deploymentmanager/v2beta2/deploymentmanager-gen.go
@@ -396,8 +396,7 @@
 // Operation: An Operation resource, used to manage asynchronous API
 // requests.
 type Operation struct {
-	// ClientOperationId: [Output Only] A unique client ID generated by the
-	// server.
+	// ClientOperationId: [Output Only] Reserved for future use.
 	ClientOperationId string `json:"clientOperationId,omitempty"`
 
 	// CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text
@@ -440,8 +439,8 @@
 	// Name: [Output Only] Name of the resource.
 	Name string `json:"name,omitempty"`
 
-	// OperationType: [Output Only] The type of operation, which can be
-	// insert, update, or delete.
+	// OperationType: [Output Only] The type of operation, such as insert,
+	// update, or delete, and so on.
 	OperationType string `json:"operationType,omitempty"`
 
 	// Progress: [Output Only] An optional progress indicator that ranges
@@ -451,8 +450,8 @@
 	// increase as the operation progresses.
 	Progress int64 `json:"progress,omitempty"`
 
-	// Region: [Output Only] URL of the region where the operation resides.
-	// Only available when performing regional operations.
+	// Region: [Output Only] The URL of the region where the operation
+	// resides. Only available when performing regional operations.
 	Region string `json:"region,omitempty"`
 
 	// SelfLink: [Output Only] Server-defined URL for the resource.
@@ -475,7 +474,7 @@
 	TargetId uint64 `json:"targetId,omitempty,string"`
 
 	// TargetLink: [Output Only] The URL of the resource that the operation
-	// is modifying.
+	// modifies.
 	TargetLink string `json:"targetLink,omitempty"`
 
 	// User: [Output Only] User who requested the operation, for example:
@@ -486,8 +485,8 @@
 	// processing of the operation, this field will be populated.
 	Warnings []*OperationWarnings `json:"warnings,omitempty"`
 
-	// Zone: [Output Only] URL of the zone where the operation resides. Only
-	// available when performing per-zone operations.
+	// Zone: [Output Only] The URL of the zone where the operation resides.
+	// Only available when performing per-zone operations.
 	Zone string `json:"zone,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -1278,7 +1277,9 @@
 // as a regular expression using RE2 syntax. The literal value must
 // match the entire field.
 //
-// For example, filter=name ne example-instance.
+// For example, to filter for instances whose name is not equal to
+// example-instance, you would use filter=name ne
+// example-instance.
 //
 // Compute Engine Beta API Only: If you use filtering in the Beta API,
 // you can also filter on nested fields. For example, you could filter
@@ -1298,10 +1299,10 @@
 }
 
 // MaxResults sets the optional parameter "maxResults": The maximum
-// number of results per page that Compute Engine should return. If the
-// number of available results is larger than maxResults, Compute Engine
-// returns a nextPageToken that can be used to get the next page of
-// results in subsequent list requests.
+// number of results per page that should be returned. If the number of
+// available results is larger than maxResults, Compute Engine returns a
+// nextPageToken that can be used to get the next page of results in
+// subsequent list requests.
 func (c *DeploymentsListCall) MaxResults(maxResults int64) *DeploymentsListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
@@ -1405,13 +1406,13 @@
 	//   ],
 	//   "parameters": {
 	//     "filter": {
-	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
 	//       "default": "500",
-	//       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+	//       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
 	//       "format": "uint32",
 	//       "location": "query",
 	//       "maximum": "500",
@@ -2069,7 +2070,9 @@
 // as a regular expression using RE2 syntax. The literal value must
 // match the entire field.
 //
-// For example, filter=name ne example-instance.
+// For example, to filter for instances whose name is not equal to
+// example-instance, you would use filter=name ne
+// example-instance.
 //
 // Compute Engine Beta API Only: If you use filtering in the Beta API,
 // you can also filter on nested fields. For example, you could filter
@@ -2089,10 +2092,10 @@
 }
 
 // MaxResults sets the optional parameter "maxResults": The maximum
-// number of results per page that Compute Engine should return. If the
-// number of available results is larger than maxResults, Compute Engine
-// returns a nextPageToken that can be used to get the next page of
-// results in subsequent list requests.
+// number of results per page that should be returned. If the number of
+// available results is larger than maxResults, Compute Engine returns a
+// nextPageToken that can be used to get the next page of results in
+// subsequent list requests.
 func (c *ManifestsListCall) MaxResults(maxResults int64) *ManifestsListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
@@ -2205,13 +2208,13 @@
 	//       "type": "string"
 	//     },
 	//     "filter": {
-	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
 	//       "default": "500",
-	//       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+	//       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
 	//       "format": "uint32",
 	//       "location": "query",
 	//       "maximum": "500",
@@ -2435,7 +2438,9 @@
 // as a regular expression using RE2 syntax. The literal value must
 // match the entire field.
 //
-// For example, filter=name ne example-instance.
+// For example, to filter for instances whose name is not equal to
+// example-instance, you would use filter=name ne
+// example-instance.
 //
 // Compute Engine Beta API Only: If you use filtering in the Beta API,
 // you can also filter on nested fields. For example, you could filter
@@ -2455,10 +2460,10 @@
 }
 
 // MaxResults sets the optional parameter "maxResults": The maximum
-// number of results per page that Compute Engine should return. If the
-// number of available results is larger than maxResults, Compute Engine
-// returns a nextPageToken that can be used to get the next page of
-// results in subsequent list requests.
+// number of results per page that should be returned. If the number of
+// available results is larger than maxResults, Compute Engine returns a
+// nextPageToken that can be used to get the next page of results in
+// subsequent list requests.
 func (c *OperationsListCall) MaxResults(maxResults int64) *OperationsListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
@@ -2562,13 +2567,13 @@
 	//   ],
 	//   "parameters": {
 	//     "filter": {
-	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
 	//       "default": "500",
-	//       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+	//       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
 	//       "format": "uint32",
 	//       "location": "query",
 	//       "maximum": "500",
@@ -2805,7 +2810,9 @@
 // as a regular expression using RE2 syntax. The literal value must
 // match the entire field.
 //
-// For example, filter=name ne example-instance.
+// For example, to filter for instances whose name is not equal to
+// example-instance, you would use filter=name ne
+// example-instance.
 //
 // Compute Engine Beta API Only: If you use filtering in the Beta API,
 // you can also filter on nested fields. For example, you could filter
@@ -2825,10 +2832,10 @@
 }
 
 // MaxResults sets the optional parameter "maxResults": The maximum
-// number of results per page that Compute Engine should return. If the
-// number of available results is larger than maxResults, Compute Engine
-// returns a nextPageToken that can be used to get the next page of
-// results in subsequent list requests.
+// number of results per page that should be returned. If the number of
+// available results is larger than maxResults, Compute Engine returns a
+// nextPageToken that can be used to get the next page of results in
+// subsequent list requests.
 func (c *ResourcesListCall) MaxResults(maxResults int64) *ResourcesListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
@@ -2941,13 +2948,13 @@
 	//       "type": "string"
 	//     },
 	//     "filter": {
-	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
 	//       "default": "500",
-	//       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+	//       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
 	//       "format": "uint32",
 	//       "location": "query",
 	//       "maximum": "500",
@@ -3033,7 +3040,9 @@
 // as a regular expression using RE2 syntax. The literal value must
 // match the entire field.
 //
-// For example, filter=name ne example-instance.
+// For example, to filter for instances whose name is not equal to
+// example-instance, you would use filter=name ne
+// example-instance.
 //
 // Compute Engine Beta API Only: If you use filtering in the Beta API,
 // you can also filter on nested fields. For example, you could filter
@@ -3053,10 +3062,10 @@
 }
 
 // MaxResults sets the optional parameter "maxResults": The maximum
-// number of results per page that Compute Engine should return. If the
-// number of available results is larger than maxResults, Compute Engine
-// returns a nextPageToken that can be used to get the next page of
-// results in subsequent list requests.
+// number of results per page that should be returned. If the number of
+// available results is larger than maxResults, Compute Engine returns a
+// nextPageToken that can be used to get the next page of results in
+// subsequent list requests.
 func (c *TypesListCall) MaxResults(maxResults int64) *TypesListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
@@ -3160,13 +3169,13 @@
 	//   ],
 	//   "parameters": {
 	//     "filter": {
-	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances whose name is not equal to example-instance, you would use filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
 	//       "default": "500",
-	//       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+	//       "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
 	//       "format": "uint32",
 	//       "location": "query",
 	//       "maximum": "500",
diff --git a/dfareporting/v2.0/dfareporting-api.json b/dfareporting/v2.0/dfareporting-api.json
index d18d1ac..28ded8c 100644
--- a/dfareporting/v2.0/dfareporting-api.json
+++ b/dfareporting/v2.0/dfareporting-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/Nmqpez4nwe2EpknHDosjQDC15hs\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/oqdDZIjRhG9NFdopeNWofK9pTDs\"",
  "discoveryVersion": "v1",
  "id": "dfareporting:v2.0",
  "name": "dfareporting",
  "version": "v2.0",
- "revision": "20151109",
+ "revision": "20160128",
  "title": "DCM/DFA Reporting And Trafficking API",
  "description": "Manage your DoubleClick Campaign Manager ad campaigns and reports.",
  "ownerDomain": "google.com",
@@ -149,7 +149,7 @@
     },
     "currencyId": {
      "type": "string",
-     "description": "ID of currency associated with this account. This is a required field.\nAcceptable values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB",
+     "description": "ID of currency associated with this account. This is a required field.\nAcceptable values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB \n- \"41\" for IDR \n- \"42\" for CZK \n- \"43\" for RON \n- \"44\" for HUF \n- \"45\" for RUB \n- \"46\" for AED \n- \"47\" for BGN \n- \"48\" for HRK",
      "format": "int64"
     },
     "defaultCreativeSizeId": {
@@ -1643,11 +1643,13 @@
      "enum": [
       "ARTWORK_TYPE_FLASH",
       "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
       "ARTWORK_TYPE_MIXED"
      ],
      "enumDescriptions": [
       "",
       "",
+      "",
       ""
      ]
     },
@@ -2132,11 +2134,13 @@
      "enum": [
       "ARTWORK_TYPE_FLASH",
       "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
       "ARTWORK_TYPE_MIXED"
      ],
      "enumDescriptions": [
       "",
       "",
+      "",
       ""
      ]
     },
@@ -2906,11 +2910,13 @@
      "enum": [
       "ARTWORK_TYPE_FLASH",
       "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
       "ARTWORK_TYPE_MIXED"
      ],
      "enumDescriptions": [
       "",
       "",
+      "",
       ""
      ]
     },
@@ -3195,12 +3201,14 @@
       "CLICK",
       "POST_CLICK",
       "POST_CLICK_AND_IMPRESSION",
-      "POST_IMPRESSION"
+      "POST_IMPRESSION",
+      "VIDEO_COMPLETION"
      ],
      "enumDescriptions": [
       "",
       "",
       "",
+      "",
       ""
      ]
     }
@@ -3735,7 +3743,7 @@
     },
     "currencyId": {
      "type": "string",
-     "description": "Currency ID of this directory site.\nPossible values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB",
+     "description": "Currency ID of this directory site.\nPossible values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB \n- \"41\" for IDR \n- \"42\" for CZK \n- \"43\" for RON \n- \"44\" for HUF \n- \"45\" for RUB \n- \"46\" for AED \n- \"47\" for BGN \n- \"48\" for HRK",
      "format": "int64"
     },
     "description": {
@@ -7465,7 +7473,9 @@
       "VIDEO_MIDPOINT",
       "VIDEO_MUTE",
       "VIDEO_PAUSE",
+      "VIDEO_PROGRESS",
       "VIDEO_REWIND",
+      "VIDEO_SKIP",
       "VIDEO_START",
       "VIDEO_STOP",
       "VIDEO_THIRD_QUARTILE"
@@ -7487,6 +7497,8 @@
       "",
       "",
       "",
+      "",
+      "",
       ""
      ]
     },
@@ -9702,6 +9714,7 @@
         "OBJECT_MEDIA_ORDER",
         "OBJECT_PLACEMENT",
         "OBJECT_PLACEMENT_STRATEGY",
+        "OBJECT_PLAYSTORE_LINK",
         "OBJECT_PROVIDED_LIST_CLIENT",
         "OBJECT_RATE_CARD",
         "OBJECT_REMARKETING_LIST",
@@ -9749,6 +9762,7 @@
         "",
         "",
         "",
+        "",
         ""
        ],
        "location": "query"
@@ -10200,7 +10214,7 @@
       "accept": [
        "*/*"
       ],
-      "maxSize": "100MB",
+      "maxSize": "1024MB",
       "protocols": {
        "simple": {
         "multipart": true,
diff --git a/dfareporting/v2.0/dfareporting-gen.go b/dfareporting/v2.0/dfareporting-gen.go
index 7875d47..9c894a8 100644
--- a/dfareporting/v2.0/dfareporting-gen.go
+++ b/dfareporting/v2.0/dfareporting-gen.go
@@ -761,6 +761,14 @@
 	// - "37" for PLN
 	// - "39" for INR
 	// - "40" for THB
+	// - "41" for IDR
+	// - "42" for CZK
+	// - "43" for RON
+	// - "44" for HUF
+	// - "45" for RUB
+	// - "46" for AED
+	// - "47" for BGN
+	// - "48" for HRK
 	CurrencyId int64 `json:"currencyId,omitempty,string"`
 
 	// DefaultCreativeSizeId: Default placement dimensions for this account.
@@ -2601,6 +2609,7 @@
 	// Possible values:
 	//   "ARTWORK_TYPE_FLASH"
 	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
 	//   "ARTWORK_TYPE_MIXED"
 	ArtworkType string `json:"artworkType,omitempty"`
 
@@ -3038,6 +3047,7 @@
 	// Possible values:
 	//   "ARTWORK_TYPE_FLASH"
 	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
 	//   "ARTWORK_TYPE_MIXED"
 	ArtworkType string `json:"artworkType,omitempty"`
 
@@ -3704,6 +3714,7 @@
 	// Possible values:
 	//   "ARTWORK_TYPE_FLASH"
 	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
 	//   "ARTWORK_TYPE_MIXED"
 	ArtworkType string `json:"artworkType,omitempty"`
 
@@ -4059,6 +4070,7 @@
 	//   "POST_CLICK"
 	//   "POST_CLICK_AND_IMPRESSION"
 	//   "POST_IMPRESSION"
+	//   "VIDEO_COMPLETION"
 	OptimizationModel string `json:"optimizationModel,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Id") to
@@ -4689,6 +4701,14 @@
 	// - "37" for PLN
 	// - "39" for INR
 	// - "40" for THB
+	// - "41" for IDR
+	// - "42" for CZK
+	// - "43" for RON
+	// - "44" for HUF
+	// - "45" for RUB
+	// - "46" for AED
+	// - "47" for BGN
+	// - "48" for HRK
 	CurrencyId int64 `json:"currencyId,omitempty,string"`
 
 	// Description: Description of this directory site.
@@ -8895,7 +8915,9 @@
 	//   "VIDEO_MIDPOINT"
 	//   "VIDEO_MUTE"
 	//   "VIDEO_PAUSE"
+	//   "VIDEO_PROGRESS"
 	//   "VIDEO_REWIND"
+	//   "VIDEO_SKIP"
 	//   "VIDEO_START"
 	//   "VIDEO_STOP"
 	//   "VIDEO_THIRD_QUARTILE"
@@ -15789,6 +15811,7 @@
 //   "OBJECT_MEDIA_ORDER"
 //   "OBJECT_PLACEMENT"
 //   "OBJECT_PLACEMENT_STRATEGY"
+//   "OBJECT_PLAYSTORE_LINK"
 //   "OBJECT_PROVIDED_LIST_CLIENT"
 //   "OBJECT_RATE_CARD"
 //   "OBJECT_REMARKETING_LIST"
@@ -16021,6 +16044,7 @@
 	//         "OBJECT_MEDIA_ORDER",
 	//         "OBJECT_PLACEMENT",
 	//         "OBJECT_PLACEMENT_STRATEGY",
+	//         "OBJECT_PLAYSTORE_LINK",
 	//         "OBJECT_PROVIDED_LIST_CLIENT",
 	//         "OBJECT_RATE_CARD",
 	//         "OBJECT_REMARKETING_LIST",
@@ -16068,6 +16092,7 @@
 	//         "",
 	//         "",
 	//         "",
+	//         "",
 	//         ""
 	//       ],
 	//       "location": "query",
@@ -17756,7 +17781,7 @@
 	//     "accept": [
 	//       "*/*"
 	//     ],
-	//     "maxSize": "100MB",
+	//     "maxSize": "1024MB",
 	//     "protocols": {
 	//       "resumable": {
 	//         "multipart": true,
diff --git a/dfareporting/v2.1/dfareporting-api.json b/dfareporting/v2.1/dfareporting-api.json
index 575fc95..7c7f4fb 100644
--- a/dfareporting/v2.1/dfareporting-api.json
+++ b/dfareporting/v2.1/dfareporting-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/H5pMbrYaa57---vP07_ODm8KQXs\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/LXXpBaE8i7ZX7RPAX5gbB3wiaoA\"",
  "discoveryVersion": "v1",
  "id": "dfareporting:v2.1",
  "name": "dfareporting",
  "version": "v2.1",
- "revision": "20151109",
+ "revision": "20160128",
  "title": "DCM/DFA Reporting And Trafficking API",
  "description": "Manage your DoubleClick Campaign Manager ad campaigns and reports.",
  "ownerDomain": "google.com",
@@ -149,7 +149,7 @@
     },
     "currencyId": {
      "type": "string",
-     "description": "ID of currency associated with this account. This is a required field.\nAcceptable values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB",
+     "description": "ID of currency associated with this account. This is a required field.\nAcceptable values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB \n- \"41\" for IDR \n- \"42\" for CZK \n- \"43\" for RON \n- \"44\" for HUF \n- \"45\" for RUB \n- \"46\" for AED \n- \"47\" for BGN \n- \"48\" for HRK",
      "format": "int64"
     },
     "defaultCreativeSizeId": {
@@ -1708,11 +1708,13 @@
      "enum": [
       "ARTWORK_TYPE_FLASH",
       "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
       "ARTWORK_TYPE_MIXED"
      ],
      "enumDescriptions": [
       "",
       "",
+      "",
       ""
      ]
     },
@@ -2201,11 +2203,13 @@
      "enum": [
       "ARTWORK_TYPE_FLASH",
       "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
       "ARTWORK_TYPE_MIXED"
      ],
      "enumDescriptions": [
       "",
       "",
+      "",
       ""
      ]
     },
@@ -2975,11 +2979,13 @@
      "enum": [
       "ARTWORK_TYPE_FLASH",
       "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
       "ARTWORK_TYPE_MIXED"
      ],
      "enumDescriptions": [
       "",
       "",
+      "",
       ""
      ]
     },
@@ -3264,12 +3270,14 @@
       "CLICK",
       "POST_CLICK",
       "POST_CLICK_AND_IMPRESSION",
-      "POST_IMPRESSION"
+      "POST_IMPRESSION",
+      "VIDEO_COMPLETION"
      ],
      "enumDescriptions": [
       "",
       "",
       "",
+      "",
       ""
      ]
     }
@@ -3804,7 +3812,7 @@
     },
     "currencyId": {
      "type": "string",
-     "description": "Currency ID of this directory site.\nPossible values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB",
+     "description": "Currency ID of this directory site.\nPossible values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB \n- \"41\" for IDR \n- \"42\" for CZK \n- \"43\" for RON \n- \"44\" for HUF \n- \"45\" for RUB \n- \"46\" for AED \n- \"47\" for BGN \n- \"48\" for HRK",
      "format": "int64"
     },
     "description": {
@@ -7214,17 +7222,29 @@
      "type": "string",
      "description": "Product from which this remarketing list was originated.",
      "enum": [
+      "REMARKETING_LIST_SOURCE_ADX",
       "REMARKETING_LIST_SOURCE_DBM",
       "REMARKETING_LIST_SOURCE_DFA",
+      "REMARKETING_LIST_SOURCE_DFP",
       "REMARKETING_LIST_SOURCE_DMP",
       "REMARKETING_LIST_SOURCE_GA",
-      "REMARKETING_LIST_SOURCE_OTHER"
+      "REMARKETING_LIST_SOURCE_GPLUS",
+      "REMARKETING_LIST_SOURCE_OTHER",
+      "REMARKETING_LIST_SOURCE_PLAY_STORE",
+      "REMARKETING_LIST_SOURCE_XFP",
+      "REMARKETING_LIST_SOURCE_YOUTUBE"
      ],
      "enumDescriptions": [
       "",
       "",
       "",
       "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
       ""
      ]
     },
@@ -8439,17 +8459,29 @@
      "type": "string",
      "description": "Product from which this targetable remarketing list was originated.",
      "enum": [
+      "REMARKETING_LIST_SOURCE_ADX",
       "REMARKETING_LIST_SOURCE_DBM",
       "REMARKETING_LIST_SOURCE_DFA",
+      "REMARKETING_LIST_SOURCE_DFP",
       "REMARKETING_LIST_SOURCE_DMP",
       "REMARKETING_LIST_SOURCE_GA",
-      "REMARKETING_LIST_SOURCE_OTHER"
+      "REMARKETING_LIST_SOURCE_GPLUS",
+      "REMARKETING_LIST_SOURCE_OTHER",
+      "REMARKETING_LIST_SOURCE_PLAY_STORE",
+      "REMARKETING_LIST_SOURCE_XFP",
+      "REMARKETING_LIST_SOURCE_YOUTUBE"
      ],
      "enumDescriptions": [
       "",
       "",
       "",
       "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
       ""
      ]
     },
@@ -8558,7 +8590,9 @@
       "VIDEO_MIDPOINT",
       "VIDEO_MUTE",
       "VIDEO_PAUSE",
+      "VIDEO_PROGRESS",
       "VIDEO_REWIND",
+      "VIDEO_SKIP",
       "VIDEO_START",
       "VIDEO_STOP",
       "VIDEO_THIRD_QUARTILE"
@@ -8580,6 +8614,8 @@
       "",
       "",
       "",
+      "",
+      "",
       ""
      ]
     },
@@ -10822,6 +10858,7 @@
         "OBJECT_MEDIA_ORDER",
         "OBJECT_PLACEMENT",
         "OBJECT_PLACEMENT_STRATEGY",
+        "OBJECT_PLAYSTORE_LINK",
         "OBJECT_PROVIDED_LIST_CLIENT",
         "OBJECT_RATE_CARD",
         "OBJECT_REMARKETING_LIST",
@@ -10869,6 +10906,7 @@
         "",
         "",
         "",
+        "",
         ""
        ],
        "location": "query"
@@ -11352,7 +11390,7 @@
       "accept": [
        "*/*"
       ],
-      "maxSize": "100MB",
+      "maxSize": "1024MB",
       "protocols": {
        "simple": {
         "multipart": true,
diff --git a/dfareporting/v2.1/dfareporting-gen.go b/dfareporting/v2.1/dfareporting-gen.go
index 9a23e3e..73ada33 100644
--- a/dfareporting/v2.1/dfareporting-gen.go
+++ b/dfareporting/v2.1/dfareporting-gen.go
@@ -845,6 +845,14 @@
 	// - "37" for PLN
 	// - "39" for INR
 	// - "40" for THB
+	// - "41" for IDR
+	// - "42" for CZK
+	// - "43" for RON
+	// - "44" for HUF
+	// - "45" for RUB
+	// - "46" for AED
+	// - "47" for BGN
+	// - "48" for HRK
 	CurrencyId int64 `json:"currencyId,omitempty,string"`
 
 	// DefaultCreativeSizeId: Default placement dimensions for this account.
@@ -2751,6 +2759,7 @@
 	// Possible values:
 	//   "ARTWORK_TYPE_FLASH"
 	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
 	//   "ARTWORK_TYPE_MIXED"
 	ArtworkType string `json:"artworkType,omitempty"`
 
@@ -3196,6 +3205,7 @@
 	// Possible values:
 	//   "ARTWORK_TYPE_FLASH"
 	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
 	//   "ARTWORK_TYPE_MIXED"
 	ArtworkType string `json:"artworkType,omitempty"`
 
@@ -3862,6 +3872,7 @@
 	// Possible values:
 	//   "ARTWORK_TYPE_FLASH"
 	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
 	//   "ARTWORK_TYPE_MIXED"
 	ArtworkType string `json:"artworkType,omitempty"`
 
@@ -4217,6 +4228,7 @@
 	//   "POST_CLICK"
 	//   "POST_CLICK_AND_IMPRESSION"
 	//   "POST_IMPRESSION"
+	//   "VIDEO_COMPLETION"
 	OptimizationModel string `json:"optimizationModel,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Id") to
@@ -4847,6 +4859,14 @@
 	// - "37" for PLN
 	// - "39" for INR
 	// - "40" for THB
+	// - "41" for IDR
+	// - "42" for CZK
+	// - "43" for RON
+	// - "44" for HUF
+	// - "45" for RUB
+	// - "46" for AED
+	// - "47" for BGN
+	// - "48" for HRK
 	CurrencyId int64 `json:"currencyId,omitempty,string"`
 
 	// Description: Description of this directory site.
@@ -8618,11 +8638,17 @@
 	// ListSource: Product from which this remarketing list was originated.
 	//
 	// Possible values:
+	//   "REMARKETING_LIST_SOURCE_ADX"
 	//   "REMARKETING_LIST_SOURCE_DBM"
 	//   "REMARKETING_LIST_SOURCE_DFA"
+	//   "REMARKETING_LIST_SOURCE_DFP"
 	//   "REMARKETING_LIST_SOURCE_DMP"
 	//   "REMARKETING_LIST_SOURCE_GA"
+	//   "REMARKETING_LIST_SOURCE_GPLUS"
 	//   "REMARKETING_LIST_SOURCE_OTHER"
+	//   "REMARKETING_LIST_SOURCE_PLAY_STORE"
+	//   "REMARKETING_LIST_SOURCE_XFP"
+	//   "REMARKETING_LIST_SOURCE_YOUTUBE"
 	ListSource string `json:"listSource,omitempty"`
 
 	// Name: Name of the remarketing list. This is a required field. Must be
@@ -9961,11 +9987,17 @@
 	// originated.
 	//
 	// Possible values:
+	//   "REMARKETING_LIST_SOURCE_ADX"
 	//   "REMARKETING_LIST_SOURCE_DBM"
 	//   "REMARKETING_LIST_SOURCE_DFA"
+	//   "REMARKETING_LIST_SOURCE_DFP"
 	//   "REMARKETING_LIST_SOURCE_DMP"
 	//   "REMARKETING_LIST_SOURCE_GA"
+	//   "REMARKETING_LIST_SOURCE_GPLUS"
 	//   "REMARKETING_LIST_SOURCE_OTHER"
+	//   "REMARKETING_LIST_SOURCE_PLAY_STORE"
+	//   "REMARKETING_LIST_SOURCE_XFP"
+	//   "REMARKETING_LIST_SOURCE_YOUTUBE"
 	ListSource string `json:"listSource,omitempty"`
 
 	// Name: Name of the targetable remarketing list. Is no greater than 128
@@ -10104,7 +10136,9 @@
 	//   "VIDEO_MIDPOINT"
 	//   "VIDEO_MUTE"
 	//   "VIDEO_PAUSE"
+	//   "VIDEO_PROGRESS"
 	//   "VIDEO_REWIND"
+	//   "VIDEO_SKIP"
 	//   "VIDEO_START"
 	//   "VIDEO_STOP"
 	//   "VIDEO_THIRD_QUARTILE"
@@ -17120,6 +17154,7 @@
 //   "OBJECT_MEDIA_ORDER"
 //   "OBJECT_PLACEMENT"
 //   "OBJECT_PLACEMENT_STRATEGY"
+//   "OBJECT_PLAYSTORE_LINK"
 //   "OBJECT_PROVIDED_LIST_CLIENT"
 //   "OBJECT_RATE_CARD"
 //   "OBJECT_REMARKETING_LIST"
@@ -17352,6 +17387,7 @@
 	//         "OBJECT_MEDIA_ORDER",
 	//         "OBJECT_PLACEMENT",
 	//         "OBJECT_PLACEMENT_STRATEGY",
+	//         "OBJECT_PLAYSTORE_LINK",
 	//         "OBJECT_PROVIDED_LIST_CLIENT",
 	//         "OBJECT_RATE_CARD",
 	//         "OBJECT_REMARKETING_LIST",
@@ -17399,6 +17435,7 @@
 	//         "",
 	//         "",
 	//         "",
+	//         "",
 	//         ""
 	//       ],
 	//       "location": "query",
@@ -19223,7 +19260,7 @@
 	//     "accept": [
 	//       "*/*"
 	//     ],
-	//     "maxSize": "100MB",
+	//     "maxSize": "1024MB",
 	//     "protocols": {
 	//       "resumable": {
 	//         "multipart": true,
diff --git a/dfareporting/v2.2/dfareporting-api.json b/dfareporting/v2.2/dfareporting-api.json
index 9a61ab1..1255898 100644
--- a/dfareporting/v2.2/dfareporting-api.json
+++ b/dfareporting/v2.2/dfareporting-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/eEyV0E6KWTvUp4CjzFDf7-Qnt7c\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/rUAib6EX_PmXo5n124Aawsu3B9k\"",
  "discoveryVersion": "v1",
  "id": "dfareporting:v2.2",
  "name": "dfareporting",
  "version": "v2.2",
- "revision": "20151109",
+ "revision": "20160128",
  "title": "DCM/DFA Reporting And Trafficking API",
  "description": "Manage your DoubleClick Campaign Manager ad campaigns and reports.",
  "ownerDomain": "google.com",
@@ -149,7 +149,7 @@
     },
     "currencyId": {
      "type": "string",
-     "description": "ID of currency associated with this account. This is a required field.\nAcceptable values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB",
+     "description": "ID of currency associated with this account. This is a required field.\nAcceptable values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB \n- \"41\" for IDR \n- \"42\" for CZK \n- \"43\" for RON \n- \"44\" for HUF \n- \"45\" for RUB \n- \"46\" for AED \n- \"47\" for BGN \n- \"48\" for HRK",
      "format": "int64"
     },
     "defaultCreativeSizeId": {
@@ -1716,11 +1716,13 @@
      "enum": [
       "ARTWORK_TYPE_FLASH",
       "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
       "ARTWORK_TYPE_MIXED"
      ],
      "enumDescriptions": [
       "",
       "",
+      "",
       ""
      ]
     },
@@ -2213,11 +2215,13 @@
      "enum": [
       "ARTWORK_TYPE_FLASH",
       "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
       "ARTWORK_TYPE_MIXED"
      ],
      "enumDescriptions": [
       "",
       "",
+      "",
       ""
      ]
     },
@@ -2983,11 +2987,13 @@
      "enum": [
       "ARTWORK_TYPE_FLASH",
       "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
       "ARTWORK_TYPE_MIXED"
      ],
      "enumDescriptions": [
       "",
       "",
+      "",
       ""
      ]
     },
@@ -3272,12 +3278,14 @@
       "CLICK",
       "POST_CLICK",
       "POST_CLICK_AND_IMPRESSION",
-      "POST_IMPRESSION"
+      "POST_IMPRESSION",
+      "VIDEO_COMPLETION"
      ],
      "enumDescriptions": [
       "",
       "",
       "",
+      "",
       ""
      ]
     }
@@ -3812,7 +3820,7 @@
     },
     "currencyId": {
      "type": "string",
-     "description": "Currency ID of this directory site.\nPossible values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB",
+     "description": "Currency ID of this directory site.\nPossible values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB \n- \"41\" for IDR \n- \"42\" for CZK \n- \"43\" for RON \n- \"44\" for HUF \n- \"45\" for RUB \n- \"46\" for AED \n- \"47\" for BGN \n- \"48\" for HRK",
      "format": "int64"
     },
     "description": {
@@ -7206,17 +7214,29 @@
      "type": "string",
      "description": "Product from which this remarketing list was originated.",
      "enum": [
+      "REMARKETING_LIST_SOURCE_ADX",
       "REMARKETING_LIST_SOURCE_DBM",
       "REMARKETING_LIST_SOURCE_DFA",
+      "REMARKETING_LIST_SOURCE_DFP",
       "REMARKETING_LIST_SOURCE_DMP",
       "REMARKETING_LIST_SOURCE_GA",
-      "REMARKETING_LIST_SOURCE_OTHER"
+      "REMARKETING_LIST_SOURCE_GPLUS",
+      "REMARKETING_LIST_SOURCE_OTHER",
+      "REMARKETING_LIST_SOURCE_PLAY_STORE",
+      "REMARKETING_LIST_SOURCE_XFP",
+      "REMARKETING_LIST_SOURCE_YOUTUBE"
      ],
      "enumDescriptions": [
       "",
       "",
       "",
       "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
       ""
      ]
     },
@@ -8431,17 +8451,29 @@
      "type": "string",
      "description": "Product from which this targetable remarketing list was originated.",
      "enum": [
+      "REMARKETING_LIST_SOURCE_ADX",
       "REMARKETING_LIST_SOURCE_DBM",
       "REMARKETING_LIST_SOURCE_DFA",
+      "REMARKETING_LIST_SOURCE_DFP",
       "REMARKETING_LIST_SOURCE_DMP",
       "REMARKETING_LIST_SOURCE_GA",
-      "REMARKETING_LIST_SOURCE_OTHER"
+      "REMARKETING_LIST_SOURCE_GPLUS",
+      "REMARKETING_LIST_SOURCE_OTHER",
+      "REMARKETING_LIST_SOURCE_PLAY_STORE",
+      "REMARKETING_LIST_SOURCE_XFP",
+      "REMARKETING_LIST_SOURCE_YOUTUBE"
      ],
      "enumDescriptions": [
       "",
       "",
       "",
       "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
       ""
      ]
     },
@@ -8565,7 +8597,9 @@
       "VIDEO_MIDPOINT",
       "VIDEO_MUTE",
       "VIDEO_PAUSE",
+      "VIDEO_PROGRESS",
       "VIDEO_REWIND",
+      "VIDEO_SKIP",
       "VIDEO_START",
       "VIDEO_STOP",
       "VIDEO_THIRD_QUARTILE"
@@ -8587,6 +8621,8 @@
       "",
       "",
       "",
+      "",
+      "",
       ""
      ]
     },
@@ -10829,6 +10865,7 @@
         "OBJECT_MEDIA_ORDER",
         "OBJECT_PLACEMENT",
         "OBJECT_PLACEMENT_STRATEGY",
+        "OBJECT_PLAYSTORE_LINK",
         "OBJECT_PROVIDED_LIST_CLIENT",
         "OBJECT_RATE_CARD",
         "OBJECT_REMARKETING_LIST",
@@ -10876,6 +10913,7 @@
         "",
         "",
         "",
+        "",
         ""
        ],
        "location": "query"
@@ -11359,7 +11397,7 @@
       "accept": [
        "*/*"
       ],
-      "maxSize": "100MB",
+      "maxSize": "1024MB",
       "protocols": {
        "simple": {
         "multipart": true,
diff --git a/dfareporting/v2.2/dfareporting-gen.go b/dfareporting/v2.2/dfareporting-gen.go
index 7b042de..2d6af53 100644
--- a/dfareporting/v2.2/dfareporting-gen.go
+++ b/dfareporting/v2.2/dfareporting-gen.go
@@ -845,6 +845,14 @@
 	// - "37" for PLN
 	// - "39" for INR
 	// - "40" for THB
+	// - "41" for IDR
+	// - "42" for CZK
+	// - "43" for RON
+	// - "44" for HUF
+	// - "45" for RUB
+	// - "46" for AED
+	// - "47" for BGN
+	// - "48" for HRK
 	CurrencyId int64 `json:"currencyId,omitempty,string"`
 
 	// DefaultCreativeSizeId: Default placement dimensions for this account.
@@ -2765,6 +2773,7 @@
 	// Possible values:
 	//   "ARTWORK_TYPE_FLASH"
 	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
 	//   "ARTWORK_TYPE_MIXED"
 	ArtworkType string `json:"artworkType,omitempty"`
 
@@ -3214,6 +3223,7 @@
 	// Possible values:
 	//   "ARTWORK_TYPE_FLASH"
 	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
 	//   "ARTWORK_TYPE_MIXED"
 	ArtworkType string `json:"artworkType,omitempty"`
 
@@ -3877,6 +3887,7 @@
 	// Possible values:
 	//   "ARTWORK_TYPE_FLASH"
 	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
 	//   "ARTWORK_TYPE_MIXED"
 	ArtworkType string `json:"artworkType,omitempty"`
 
@@ -4233,6 +4244,7 @@
 	//   "POST_CLICK"
 	//   "POST_CLICK_AND_IMPRESSION"
 	//   "POST_IMPRESSION"
+	//   "VIDEO_COMPLETION"
 	OptimizationModel string `json:"optimizationModel,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Id") to
@@ -4863,6 +4875,14 @@
 	// - "37" for PLN
 	// - "39" for INR
 	// - "40" for THB
+	// - "41" for IDR
+	// - "42" for CZK
+	// - "43" for RON
+	// - "44" for HUF
+	// - "45" for RUB
+	// - "46" for AED
+	// - "47" for BGN
+	// - "48" for HRK
 	CurrencyId int64 `json:"currencyId,omitempty,string"`
 
 	// Description: Description of this directory site.
@@ -8618,11 +8638,17 @@
 	// ListSource: Product from which this remarketing list was originated.
 	//
 	// Possible values:
+	//   "REMARKETING_LIST_SOURCE_ADX"
 	//   "REMARKETING_LIST_SOURCE_DBM"
 	//   "REMARKETING_LIST_SOURCE_DFA"
+	//   "REMARKETING_LIST_SOURCE_DFP"
 	//   "REMARKETING_LIST_SOURCE_DMP"
 	//   "REMARKETING_LIST_SOURCE_GA"
+	//   "REMARKETING_LIST_SOURCE_GPLUS"
 	//   "REMARKETING_LIST_SOURCE_OTHER"
+	//   "REMARKETING_LIST_SOURCE_PLAY_STORE"
+	//   "REMARKETING_LIST_SOURCE_XFP"
+	//   "REMARKETING_LIST_SOURCE_YOUTUBE"
 	ListSource string `json:"listSource,omitempty"`
 
 	// Name: Name of the remarketing list. This is a required field. Must be
@@ -9961,11 +9987,17 @@
 	// originated.
 	//
 	// Possible values:
+	//   "REMARKETING_LIST_SOURCE_ADX"
 	//   "REMARKETING_LIST_SOURCE_DBM"
 	//   "REMARKETING_LIST_SOURCE_DFA"
+	//   "REMARKETING_LIST_SOURCE_DFP"
 	//   "REMARKETING_LIST_SOURCE_DMP"
 	//   "REMARKETING_LIST_SOURCE_GA"
+	//   "REMARKETING_LIST_SOURCE_GPLUS"
 	//   "REMARKETING_LIST_SOURCE_OTHER"
+	//   "REMARKETING_LIST_SOURCE_PLAY_STORE"
+	//   "REMARKETING_LIST_SOURCE_XFP"
+	//   "REMARKETING_LIST_SOURCE_YOUTUBE"
 	ListSource string `json:"listSource,omitempty"`
 
 	// Name: Name of the targetable remarketing list. Is no greater than 128
@@ -10128,7 +10160,9 @@
 	//   "VIDEO_MIDPOINT"
 	//   "VIDEO_MUTE"
 	//   "VIDEO_PAUSE"
+	//   "VIDEO_PROGRESS"
 	//   "VIDEO_REWIND"
+	//   "VIDEO_SKIP"
 	//   "VIDEO_START"
 	//   "VIDEO_STOP"
 	//   "VIDEO_THIRD_QUARTILE"
@@ -17144,6 +17178,7 @@
 //   "OBJECT_MEDIA_ORDER"
 //   "OBJECT_PLACEMENT"
 //   "OBJECT_PLACEMENT_STRATEGY"
+//   "OBJECT_PLAYSTORE_LINK"
 //   "OBJECT_PROVIDED_LIST_CLIENT"
 //   "OBJECT_RATE_CARD"
 //   "OBJECT_REMARKETING_LIST"
@@ -17376,6 +17411,7 @@
 	//         "OBJECT_MEDIA_ORDER",
 	//         "OBJECT_PLACEMENT",
 	//         "OBJECT_PLACEMENT_STRATEGY",
+	//         "OBJECT_PLAYSTORE_LINK",
 	//         "OBJECT_PROVIDED_LIST_CLIENT",
 	//         "OBJECT_RATE_CARD",
 	//         "OBJECT_REMARKETING_LIST",
@@ -17423,6 +17459,7 @@
 	//         "",
 	//         "",
 	//         "",
+	//         "",
 	//         ""
 	//       ],
 	//       "location": "query",
@@ -19247,7 +19284,7 @@
 	//     "accept": [
 	//       "*/*"
 	//     ],
-	//     "maxSize": "100MB",
+	//     "maxSize": "1024MB",
 	//     "protocols": {
 	//       "resumable": {
 	//         "multipart": true,
diff --git a/dfareporting/v2.3/dfareporting-api.json b/dfareporting/v2.3/dfareporting-api.json
index 2a1e998..fa7fa71 100644
--- a/dfareporting/v2.3/dfareporting-api.json
+++ b/dfareporting/v2.3/dfareporting-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/1QDMFRDjjeeJMqtl1PLKWnqiCEg\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/SdROr4Wmn4iB3jylVXXetS61q4c\"",
  "discoveryVersion": "v1",
  "id": "dfareporting:v2.3",
  "name": "dfareporting",
  "version": "v2.3",
- "revision": "20151109",
+ "revision": "20160128",
  "title": "DCM/DFA Reporting And Trafficking API",
  "description": "Manage your DoubleClick Campaign Manager ad campaigns and reports.",
  "ownerDomain": "google.com",
@@ -149,7 +149,7 @@
     },
     "currencyId": {
      "type": "string",
-     "description": "ID of currency associated with this account. This is a required field.\nAcceptable values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB",
+     "description": "ID of currency associated with this account. This is a required field.\nAcceptable values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB \n- \"41\" for IDR \n- \"42\" for CZK \n- \"43\" for RON \n- \"44\" for HUF \n- \"45\" for RUB \n- \"46\" for AED \n- \"47\" for BGN \n- \"48\" for HRK",
      "format": "int64"
     },
     "defaultCreativeSizeId": {
@@ -1716,11 +1716,13 @@
      "enum": [
       "ARTWORK_TYPE_FLASH",
       "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
       "ARTWORK_TYPE_MIXED"
      ],
      "enumDescriptions": [
       "",
       "",
+      "",
       ""
      ]
     },
@@ -2227,11 +2229,13 @@
      "enum": [
       "ARTWORK_TYPE_FLASH",
       "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
       "ARTWORK_TYPE_MIXED"
      ],
      "enumDescriptions": [
       "",
       "",
+      "",
       ""
      ]
     },
@@ -3002,11 +3006,13 @@
      "enum": [
       "ARTWORK_TYPE_FLASH",
       "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
       "ARTWORK_TYPE_MIXED"
      ],
      "enumDescriptions": [
       "",
       "",
+      "",
       ""
      ]
     },
@@ -3291,12 +3297,14 @@
       "CLICK",
       "POST_CLICK",
       "POST_CLICK_AND_IMPRESSION",
-      "POST_IMPRESSION"
+      "POST_IMPRESSION",
+      "VIDEO_COMPLETION"
      ],
      "enumDescriptions": [
       "",
       "",
       "",
+      "",
       ""
      ]
     }
@@ -3831,7 +3839,7 @@
     },
     "currencyId": {
      "type": "string",
-     "description": "Currency ID of this directory site.\nPossible values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB",
+     "description": "Currency ID of this directory site.\nPossible values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB \n- \"41\" for IDR \n- \"42\" for CZK \n- \"43\" for RON \n- \"44\" for HUF \n- \"45\" for RUB \n- \"46\" for AED \n- \"47\" for BGN \n- \"48\" for HRK",
      "format": "int64"
     },
     "description": {
@@ -7221,17 +7229,29 @@
      "type": "string",
      "description": "Product from which this remarketing list was originated.",
      "enum": [
+      "REMARKETING_LIST_SOURCE_ADX",
       "REMARKETING_LIST_SOURCE_DBM",
       "REMARKETING_LIST_SOURCE_DFA",
+      "REMARKETING_LIST_SOURCE_DFP",
       "REMARKETING_LIST_SOURCE_DMP",
       "REMARKETING_LIST_SOURCE_GA",
-      "REMARKETING_LIST_SOURCE_OTHER"
+      "REMARKETING_LIST_SOURCE_GPLUS",
+      "REMARKETING_LIST_SOURCE_OTHER",
+      "REMARKETING_LIST_SOURCE_PLAY_STORE",
+      "REMARKETING_LIST_SOURCE_XFP",
+      "REMARKETING_LIST_SOURCE_YOUTUBE"
      ],
      "enumDescriptions": [
       "",
       "",
       "",
       "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
       ""
      ]
     },
@@ -8450,17 +8470,29 @@
      "type": "string",
      "description": "Product from which this targetable remarketing list was originated.",
      "enum": [
+      "REMARKETING_LIST_SOURCE_ADX",
       "REMARKETING_LIST_SOURCE_DBM",
       "REMARKETING_LIST_SOURCE_DFA",
+      "REMARKETING_LIST_SOURCE_DFP",
       "REMARKETING_LIST_SOURCE_DMP",
       "REMARKETING_LIST_SOURCE_GA",
-      "REMARKETING_LIST_SOURCE_OTHER"
+      "REMARKETING_LIST_SOURCE_GPLUS",
+      "REMARKETING_LIST_SOURCE_OTHER",
+      "REMARKETING_LIST_SOURCE_PLAY_STORE",
+      "REMARKETING_LIST_SOURCE_XFP",
+      "REMARKETING_LIST_SOURCE_YOUTUBE"
      ],
      "enumDescriptions": [
       "",
       "",
       "",
       "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
       ""
      ]
     },
@@ -8584,7 +8616,9 @@
       "VIDEO_MIDPOINT",
       "VIDEO_MUTE",
       "VIDEO_PAUSE",
+      "VIDEO_PROGRESS",
       "VIDEO_REWIND",
+      "VIDEO_SKIP",
       "VIDEO_START",
       "VIDEO_STOP",
       "VIDEO_THIRD_QUARTILE"
@@ -8606,6 +8640,8 @@
       "",
       "",
       "",
+      "",
+      "",
       ""
      ]
     },
@@ -10848,6 +10884,7 @@
         "OBJECT_MEDIA_ORDER",
         "OBJECT_PLACEMENT",
         "OBJECT_PLACEMENT_STRATEGY",
+        "OBJECT_PLAYSTORE_LINK",
         "OBJECT_PROVIDED_LIST_CLIENT",
         "OBJECT_RATE_CARD",
         "OBJECT_REMARKETING_LIST",
@@ -10895,6 +10932,7 @@
         "",
         "",
         "",
+        "",
         ""
        ],
        "location": "query"
@@ -11378,7 +11416,7 @@
       "accept": [
        "*/*"
       ],
-      "maxSize": "100MB",
+      "maxSize": "1024MB",
       "protocols": {
        "simple": {
         "multipart": true,
diff --git a/dfareporting/v2.3/dfareporting-gen.go b/dfareporting/v2.3/dfareporting-gen.go
index bd50d62..d5d4a25 100644
--- a/dfareporting/v2.3/dfareporting-gen.go
+++ b/dfareporting/v2.3/dfareporting-gen.go
@@ -845,6 +845,14 @@
 	// - "37" for PLN
 	// - "39" for INR
 	// - "40" for THB
+	// - "41" for IDR
+	// - "42" for CZK
+	// - "43" for RON
+	// - "44" for HUF
+	// - "45" for RUB
+	// - "46" for AED
+	// - "47" for BGN
+	// - "48" for HRK
 	CurrencyId int64 `json:"currencyId,omitempty,string"`
 
 	// DefaultCreativeSizeId: Default placement dimensions for this account.
@@ -2765,6 +2773,7 @@
 	// Possible values:
 	//   "ARTWORK_TYPE_FLASH"
 	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
 	//   "ARTWORK_TYPE_MIXED"
 	ArtworkType string `json:"artworkType,omitempty"`
 
@@ -3224,6 +3233,7 @@
 	// Possible values:
 	//   "ARTWORK_TYPE_FLASH"
 	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
 	//   "ARTWORK_TYPE_MIXED"
 	ArtworkType string `json:"artworkType,omitempty"`
 
@@ -3891,6 +3901,7 @@
 	// Possible values:
 	//   "ARTWORK_TYPE_FLASH"
 	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
 	//   "ARTWORK_TYPE_MIXED"
 	ArtworkType string `json:"artworkType,omitempty"`
 
@@ -4247,6 +4258,7 @@
 	//   "POST_CLICK"
 	//   "POST_CLICK_AND_IMPRESSION"
 	//   "POST_IMPRESSION"
+	//   "VIDEO_COMPLETION"
 	OptimizationModel string `json:"optimizationModel,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Id") to
@@ -4877,6 +4889,14 @@
 	// - "37" for PLN
 	// - "39" for INR
 	// - "40" for THB
+	// - "41" for IDR
+	// - "42" for CZK
+	// - "43" for RON
+	// - "44" for HUF
+	// - "45" for RUB
+	// - "46" for AED
+	// - "47" for BGN
+	// - "48" for HRK
 	CurrencyId int64 `json:"currencyId,omitempty,string"`
 
 	// Description: Description of this directory site.
@@ -8628,11 +8648,17 @@
 	// ListSource: Product from which this remarketing list was originated.
 	//
 	// Possible values:
+	//   "REMARKETING_LIST_SOURCE_ADX"
 	//   "REMARKETING_LIST_SOURCE_DBM"
 	//   "REMARKETING_LIST_SOURCE_DFA"
+	//   "REMARKETING_LIST_SOURCE_DFP"
 	//   "REMARKETING_LIST_SOURCE_DMP"
 	//   "REMARKETING_LIST_SOURCE_GA"
+	//   "REMARKETING_LIST_SOURCE_GPLUS"
 	//   "REMARKETING_LIST_SOURCE_OTHER"
+	//   "REMARKETING_LIST_SOURCE_PLAY_STORE"
+	//   "REMARKETING_LIST_SOURCE_XFP"
+	//   "REMARKETING_LIST_SOURCE_YOUTUBE"
 	ListSource string `json:"listSource,omitempty"`
 
 	// Name: Name of the remarketing list. This is a required field. Must be
@@ -9981,11 +10007,17 @@
 	// originated.
 	//
 	// Possible values:
+	//   "REMARKETING_LIST_SOURCE_ADX"
 	//   "REMARKETING_LIST_SOURCE_DBM"
 	//   "REMARKETING_LIST_SOURCE_DFA"
+	//   "REMARKETING_LIST_SOURCE_DFP"
 	//   "REMARKETING_LIST_SOURCE_DMP"
 	//   "REMARKETING_LIST_SOURCE_GA"
+	//   "REMARKETING_LIST_SOURCE_GPLUS"
 	//   "REMARKETING_LIST_SOURCE_OTHER"
+	//   "REMARKETING_LIST_SOURCE_PLAY_STORE"
+	//   "REMARKETING_LIST_SOURCE_XFP"
+	//   "REMARKETING_LIST_SOURCE_YOUTUBE"
 	ListSource string `json:"listSource,omitempty"`
 
 	// Name: Name of the targetable remarketing list. Is no greater than 128
@@ -10148,7 +10180,9 @@
 	//   "VIDEO_MIDPOINT"
 	//   "VIDEO_MUTE"
 	//   "VIDEO_PAUSE"
+	//   "VIDEO_PROGRESS"
 	//   "VIDEO_REWIND"
+	//   "VIDEO_SKIP"
 	//   "VIDEO_START"
 	//   "VIDEO_STOP"
 	//   "VIDEO_THIRD_QUARTILE"
@@ -17164,6 +17198,7 @@
 //   "OBJECT_MEDIA_ORDER"
 //   "OBJECT_PLACEMENT"
 //   "OBJECT_PLACEMENT_STRATEGY"
+//   "OBJECT_PLAYSTORE_LINK"
 //   "OBJECT_PROVIDED_LIST_CLIENT"
 //   "OBJECT_RATE_CARD"
 //   "OBJECT_REMARKETING_LIST"
@@ -17396,6 +17431,7 @@
 	//         "OBJECT_MEDIA_ORDER",
 	//         "OBJECT_PLACEMENT",
 	//         "OBJECT_PLACEMENT_STRATEGY",
+	//         "OBJECT_PLAYSTORE_LINK",
 	//         "OBJECT_PROVIDED_LIST_CLIENT",
 	//         "OBJECT_RATE_CARD",
 	//         "OBJECT_REMARKETING_LIST",
@@ -17443,6 +17479,7 @@
 	//         "",
 	//         "",
 	//         "",
+	//         "",
 	//         ""
 	//       ],
 	//       "location": "query",
@@ -19267,7 +19304,7 @@
 	//     "accept": [
 	//       "*/*"
 	//     ],
-	//     "maxSize": "100MB",
+	//     "maxSize": "1024MB",
 	//     "protocols": {
 	//       "resumable": {
 	//         "multipart": true,
diff --git a/dfareporting/v2.4/dfareporting-api.json b/dfareporting/v2.4/dfareporting-api.json
new file mode 100644
index 0000000..c289f32
--- /dev/null
+++ b/dfareporting/v2.4/dfareporting-api.json
@@ -0,0 +1,17729 @@
+{
+ "kind": "discovery#restDescription",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/oaLxJE0bXlBF6zCSsJL-wDz8zmM\"",
+ "discoveryVersion": "v1",
+ "id": "dfareporting:v2.4",
+ "name": "dfareporting",
+ "version": "v2.4",
+ "revision": "20160128",
+ "title": "DCM/DFA Reporting And Trafficking API",
+ "description": "Manage your DoubleClick Campaign Manager ad campaigns and reports.",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "icons": {
+  "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
+  "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
+ },
+ "documentationLink": "https://developers.google.com/doubleclick-advertisers/reporting/",
+ "protocol": "rest",
+ "baseUrl": "https://www.googleapis.com/dfareporting/v2.4/",
+ "basePath": "/dfareporting/v2.4/",
+ "rootUrl": "https://www.googleapis.com/",
+ "servicePath": "dfareporting/v2.4/",
+ "batchPath": "batch",
+ "parameters": {
+  "alt": {
+   "type": "string",
+   "description": "Data format for the response.",
+   "default": "json",
+   "enum": [
+    "json"
+   ],
+   "enumDescriptions": [
+    "Responses with Content-Type of application/json"
+   ],
+   "location": "query"
+  },
+  "fields": {
+   "type": "string",
+   "description": "Selector specifying which fields to include in a partial response.",
+   "location": "query"
+  },
+  "key": {
+   "type": "string",
+   "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+   "location": "query"
+  },
+  "oauth_token": {
+   "type": "string",
+   "description": "OAuth 2.0 token for the current user.",
+   "location": "query"
+  },
+  "prettyPrint": {
+   "type": "boolean",
+   "description": "Returns response with indentations and line breaks.",
+   "default": "true",
+   "location": "query"
+  },
+  "quotaUser": {
+   "type": "string",
+   "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.",
+   "location": "query"
+  },
+  "userIp": {
+   "type": "string",
+   "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.",
+   "location": "query"
+  }
+ },
+ "auth": {
+  "oauth2": {
+   "scopes": {
+    "https://www.googleapis.com/auth/dfareporting": {
+     "description": "View and manage DoubleClick for Advertisers reports"
+    },
+    "https://www.googleapis.com/auth/dfatrafficking": {
+     "description": "View and manage your DoubleClick Campaign Manager's (DCM) display ad campaigns"
+    }
+   }
+  }
+ },
+ "schemas": {
+  "Account": {
+   "id": "Account",
+   "type": "object",
+   "description": "Contains properties of a DCM account.",
+   "properties": {
+    "accountPermissionIds": {
+     "type": "array",
+     "description": "Account permissions assigned to this account.",
+     "items": {
+      "type": "string",
+      "format": "int64"
+     }
+    },
+    "accountProfile": {
+     "type": "string",
+     "description": "Profile for this account. This is a read-only field that can be left blank.",
+     "enum": [
+      "ACCOUNT_PROFILE_BASIC",
+      "ACCOUNT_PROFILE_STANDARD"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "active": {
+     "type": "boolean",
+     "description": "Whether this account is active."
+    },
+    "activeAdsLimitTier": {
+     "type": "string",
+     "description": "Maximum number of active ads allowed for this account.",
+     "enum": [
+      "ACTIVE_ADS_TIER_100K",
+      "ACTIVE_ADS_TIER_200K",
+      "ACTIVE_ADS_TIER_300K",
+      "ACTIVE_ADS_TIER_40K",
+      "ACTIVE_ADS_TIER_75K"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "activeViewOptOut": {
+     "type": "boolean",
+     "description": "Whether to serve creatives with Active View tags. If disabled, viewability data will not be available for any impressions."
+    },
+    "availablePermissionIds": {
+     "type": "array",
+     "description": "User role permissions available to the user roles of this account.",
+     "items": {
+      "type": "string",
+      "format": "int64"
+     }
+    },
+    "comscoreVceEnabled": {
+     "type": "boolean",
+     "description": "Whether campaigns created in this account will be enabled for comScore vCE by default."
+    },
+    "countryId": {
+     "type": "string",
+     "description": "ID of the country associated with this account.",
+     "format": "int64"
+    },
+    "currencyId": {
+     "type": "string",
+     "description": "ID of currency associated with this account. This is a required field.\nAcceptable values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB \n- \"41\" for IDR \n- \"42\" for CZK \n- \"43\" for RON \n- \"44\" for HUF \n- \"45\" for RUB \n- \"46\" for AED \n- \"47\" for BGN \n- \"48\" for HRK",
+     "format": "int64"
+    },
+    "defaultCreativeSizeId": {
+     "type": "string",
+     "description": "Default placement dimensions for this account.",
+     "format": "int64"
+    },
+    "description": {
+     "type": "string",
+     "description": "Description of this account."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this account. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#account\".",
+     "default": "dfareporting#account"
+    },
+    "locale": {
+     "type": "string",
+     "description": "Locale of this account.\nAcceptable values are: \n- \"cs\" (Czech) \n- \"de\" (German) \n- \"en\" (English) \n- \"en-GB\" (English United Kingdom) \n- \"es\" (Spanish) \n- \"fr\" (French) \n- \"it\" (Italian) \n- \"ja\" (Japanese) \n- \"ko\" (Korean) \n- \"pl\" (Polish) \n- \"pt-BR\" (Portuguese Brazil) \n- \"ru\" (Russian) \n- \"sv\" (Swedish) \n- \"tr\" (Turkish) \n- \"zh-CN\" (Chinese Simplified) \n- \"zh-TW\" (Chinese Traditional)"
+    },
+    "maximumImageSize": {
+     "type": "string",
+     "description": "Maximum image size allowed for this account.",
+     "format": "int64"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this account. This is a required field, and must be less than 128 characters long and be globally unique."
+    },
+    "nielsenOcrEnabled": {
+     "type": "boolean",
+     "description": "Whether campaigns created in this account will be enabled for Nielsen OCR reach ratings by default."
+    },
+    "reportsConfiguration": {
+     "$ref": "ReportsConfiguration",
+     "description": "Reporting configuration of this account."
+    },
+    "teaserSizeLimit": {
+     "type": "string",
+     "description": "File size limit in kilobytes of Rich Media teaser creatives. Must be between 1 and 10240.",
+     "format": "int64"
+    }
+   }
+  },
+  "AccountActiveAdSummary": {
+   "id": "AccountActiveAdSummary",
+   "type": "object",
+   "description": "Gets a summary of active ads in an account.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "ID of the account.",
+     "format": "int64"
+    },
+    "activeAds": {
+     "type": "string",
+     "description": "Ads that have been activated for the account",
+     "format": "int64"
+    },
+    "activeAdsLimitTier": {
+     "type": "string",
+     "description": "Maximum number of active ads allowed for the account.",
+     "enum": [
+      "ACTIVE_ADS_TIER_100K",
+      "ACTIVE_ADS_TIER_200K",
+      "ACTIVE_ADS_TIER_300K",
+      "ACTIVE_ADS_TIER_40K",
+      "ACTIVE_ADS_TIER_75K"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "availableAds": {
+     "type": "string",
+     "description": "Ads that can be activated for the account.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountActiveAdSummary\".",
+     "default": "dfareporting#accountActiveAdSummary"
+    }
+   }
+  },
+  "AccountPermission": {
+   "id": "AccountPermission",
+   "type": "object",
+   "description": "AccountPermissions contains information about a particular account permission. Some features of DCM require an account permission to be present in the account.",
+   "properties": {
+    "accountProfiles": {
+     "type": "array",
+     "description": "Account profiles associated with this account permission.\n\nPossible values are:\n- \"ACCOUNT_PROFILE_BASIC\"\n- \"ACCOUNT_PROFILE_STANDARD\"",
+     "items": {
+      "type": "string",
+      "enum": [
+       "ACCOUNT_PROFILE_BASIC",
+       "ACCOUNT_PROFILE_STANDARD"
+      ],
+      "enumDescriptions": [
+       "",
+       ""
+      ]
+     }
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this account permission.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountPermission\".",
+     "default": "dfareporting#accountPermission"
+    },
+    "level": {
+     "type": "string",
+     "description": "Administrative level required to enable this account permission.",
+     "enum": [
+      "ADMINISTRATOR",
+      "USER"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this account permission."
+    },
+    "permissionGroupId": {
+     "type": "string",
+     "description": "Permission group of this account permission.",
+     "format": "int64"
+    }
+   }
+  },
+  "AccountPermissionGroup": {
+   "id": "AccountPermissionGroup",
+   "type": "object",
+   "description": "AccountPermissionGroups contains a mapping of permission group IDs to names. A permission group is a grouping of account permissions.",
+   "properties": {
+    "id": {
+     "type": "string",
+     "description": "ID of this account permission group.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountPermissionGroup\".",
+     "default": "dfareporting#accountPermissionGroup"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this account permission group."
+    }
+   }
+  },
+  "AccountPermissionGroupsListResponse": {
+   "id": "AccountPermissionGroupsListResponse",
+   "type": "object",
+   "description": "Account Permission Group List Response",
+   "properties": {
+    "accountPermissionGroups": {
+     "type": "array",
+     "description": "Account permission group collection.",
+     "items": {
+      "$ref": "AccountPermissionGroup"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountPermissionGroupsListResponse\".",
+     "default": "dfareporting#accountPermissionGroupsListResponse"
+    }
+   }
+  },
+  "AccountPermissionsListResponse": {
+   "id": "AccountPermissionsListResponse",
+   "type": "object",
+   "description": "Account Permission List Response",
+   "properties": {
+    "accountPermissions": {
+     "type": "array",
+     "description": "Account permission collection.",
+     "items": {
+      "$ref": "AccountPermission"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountPermissionsListResponse\".",
+     "default": "dfareporting#accountPermissionsListResponse"
+    }
+   }
+  },
+  "AccountUserProfile": {
+   "id": "AccountUserProfile",
+   "type": "object",
+   "description": "AccountUserProfiles contains properties of a DCM user profile. This resource is specifically for managing user profiles, whereas UserProfiles is for accessing the API.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of the user profile. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "active": {
+     "type": "boolean",
+     "description": "Whether this user profile is active. This defaults to false, and must be set true on insert for the user profile to be usable."
+    },
+    "advertiserFilter": {
+     "$ref": "ObjectFilter",
+     "description": "Filter that describes which advertisers are visible to the user profile."
+    },
+    "campaignFilter": {
+     "$ref": "ObjectFilter",
+     "description": "Filter that describes which campaigns are visible to the user profile."
+    },
+    "comments": {
+     "type": "string",
+     "description": "Comments for this user profile."
+    },
+    "email": {
+     "type": "string",
+     "description": "Email of the user profile. The email addresss must be linked to a Google Account. This field is required on insertion and is read-only after insertion."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of the user profile. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountUserProfile\".",
+     "default": "dfareporting#accountUserProfile"
+    },
+    "locale": {
+     "type": "string",
+     "description": "Locale of the user profile. This is a required field.\nAcceptable values are:  \n- \"cs\" (Czech) \n- \"de\" (German) \n- \"en\" (English) \n- \"en-GB\" (English United Kingdom) \n- \"es\" (Spanish) \n- \"fr\" (French) \n- \"it\" (Italian) \n- \"ja\" (Japanese) \n- \"ko\" (Korean) \n- \"pl\" (Polish) \n- \"pt-BR\" (Portuguese Brazil)\n- \"ru\" (Russian) \n- \"sv\" (Swedish) \n- \"tr\" (Turkish) \n- \"zh-CN\" (Chinese Simplified) \n- \"zh-TW\" (Chinese Traditional)"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of the user profile. This is a required field. Must be less than 64 characters long, must be globally unique, and cannot contain whitespace or any of the following characters: \"&;\"#%,\"."
+    },
+    "siteFilter": {
+     "$ref": "ObjectFilter",
+     "description": "Filter that describes which sites are visible to the user profile."
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of the user profile. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "traffickerType": {
+     "type": "string",
+     "description": "Trafficker type of this user profile.",
+     "enum": [
+      "EXTERNAL_TRAFFICKER",
+      "INTERNAL_NON_TRAFFICKER",
+      "INTERNAL_TRAFFICKER"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "userAccessType": {
+     "type": "string",
+     "description": "User type of the user profile. This is a read-only field that can be left blank.",
+     "enum": [
+      "INTERNAL_ADMINISTRATOR",
+      "NORMAL_USER",
+      "SUPER_USER"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "userRoleFilter": {
+     "$ref": "ObjectFilter",
+     "description": "Filter that describes which user roles are visible to the user profile."
+    },
+    "userRoleId": {
+     "type": "string",
+     "description": "User role ID of the user profile. This is a required field.",
+     "format": "int64"
+    }
+   }
+  },
+  "AccountUserProfilesListResponse": {
+   "id": "AccountUserProfilesListResponse",
+   "type": "object",
+   "description": "Account User Profile List Response",
+   "properties": {
+    "accountUserProfiles": {
+     "type": "array",
+     "description": "Account user profile collection.",
+     "items": {
+      "$ref": "AccountUserProfile"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountUserProfilesListResponse\".",
+     "default": "dfareporting#accountUserProfilesListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "AccountsListResponse": {
+   "id": "AccountsListResponse",
+   "type": "object",
+   "description": "Account List Response",
+   "properties": {
+    "accounts": {
+     "type": "array",
+     "description": "Account collection.",
+     "items": {
+      "$ref": "Account"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountsListResponse\".",
+     "default": "dfareporting#accountsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "Activities": {
+   "id": "Activities",
+   "type": "object",
+   "description": "Represents an activity group.",
+   "properties": {
+    "filters": {
+     "type": "array",
+     "description": "List of activity filters. The dimension values need to be all either of type \"dfa:activity\" or \"dfa:activityGroup\".",
+     "items": {
+      "$ref": "DimensionValue"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#activities.",
+     "default": "dfareporting#activities"
+    },
+    "metricNames": {
+     "type": "array",
+     "description": "List of names of floodlight activity metrics.",
+     "items": {
+      "type": "string"
+     }
+    }
+   }
+  },
+  "Ad": {
+   "id": "Ad",
+   "type": "object",
+   "description": "Contains properties of a DCM ad.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this ad. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "active": {
+     "type": "boolean",
+     "description": "Whether this ad is active."
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of this ad. This is a required field on insertion.",
+     "format": "int64"
+    },
+    "advertiserIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+    },
+    "archived": {
+     "type": "boolean",
+     "description": "Whether this ad is archived."
+    },
+    "audienceSegmentId": {
+     "type": "string",
+     "description": "Audience segment ID that is being targeted for this ad. Applicable when type is AD_SERVING_STANDARD_AD.",
+     "format": "int64"
+    },
+    "campaignId": {
+     "type": "string",
+     "description": "Campaign ID of this ad. This is a required field on insertion.",
+     "format": "int64"
+    },
+    "campaignIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the campaign. This is a read-only, auto-generated field."
+    },
+    "clickThroughUrl": {
+     "$ref": "ClickThroughUrl",
+     "description": "Click-through URL for this ad. This is a required field on insertion. Applicable when type is AD_SERVING_CLICK_TRACKER."
+    },
+    "clickThroughUrlSuffixProperties": {
+     "$ref": "ClickThroughUrlSuffixProperties",
+     "description": "Click-through URL suffix properties for this ad. Applies to the URL in the ad or (if overriding ad properties) the URL in the creative."
+    },
+    "comments": {
+     "type": "string",
+     "description": "Comments for this ad."
+    },
+    "compatibility": {
+     "type": "string",
+     "description": "Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or  DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.",
+     "enum": [
+      "APP",
+      "APP_INTERSTITIAL",
+      "DISPLAY",
+      "DISPLAY_INTERSTITIAL",
+      "IN_STREAM_VIDEO"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "createInfo": {
+     "$ref": "LastModifiedInfo",
+     "description": "Information about the creation of this ad.This is a read-only field."
+    },
+    "creativeGroupAssignments": {
+     "type": "array",
+     "description": "Creative group assignments for this ad. Applicable when type is AD_SERVING_CLICK_TRACKER. Only one assignment per creative group number is allowed for a maximum of two assignments.",
+     "items": {
+      "$ref": "CreativeGroupAssignment"
+     }
+    },
+    "creativeRotation": {
+     "$ref": "CreativeRotation",
+     "description": "Creative rotation for this ad. Applicable when type is AD_SERVING_DEFAULT_AD, AD_SERVING_STANDARD_AD, or AD_SERVING_TRACKING. When type is AD_SERVING_DEFAULT_AD, this field should have exactly one creativeAssignment."
+    },
+    "dayPartTargeting": {
+     "$ref": "DayPartTargeting",
+     "description": "Time and day targeting information for this ad. Applicable when type is AD_SERVING_STANDARD_AD."
+    },
+    "defaultClickThroughEventTagProperties": {
+     "$ref": "DefaultClickThroughEventTagProperties",
+     "description": "Default click-through event tag properties for this ad."
+    },
+    "deliverySchedule": {
+     "$ref": "DeliverySchedule",
+     "description": "Delivery schedule information for this ad. Applicable when type is AD_SERVING_STANDARD_AD or AD_SERVING_TRACKING. This field along with subfields priority and impressionRatio are required on insertion when type is AD_SERVING_STANDARD_AD."
+    },
+    "dynamicClickTracker": {
+     "type": "boolean",
+     "description": "Whether this ad is a dynamic click tracker. Applicable when type is AD_SERVING_CLICK_TRACKER. This is a required field on insert, and is read-only after insert."
+    },
+    "endTime": {
+     "type": "string",
+     "description": "Date and time that this ad should stop serving. Must be later than the start time. This is a required field on insertion.",
+     "format": "date-time"
+    },
+    "eventTagOverrides": {
+     "type": "array",
+     "description": "Event tag overrides for this ad.",
+     "items": {
+      "$ref": "EventTagOverride"
+     }
+    },
+    "geoTargeting": {
+     "$ref": "GeoTargeting",
+     "description": "Geographical targeting information for this ad.Applicable when type is AD_SERVING_STANDARD_AD."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this ad. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "idDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of this ad. This is a read-only, auto-generated field."
+    },
+    "keyValueTargetingExpression": {
+     "$ref": "KeyValueTargetingExpression",
+     "description": "Key-value targeting information for this ad. Applicable when type is AD_SERVING_STANDARD_AD."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#ad\".",
+     "default": "dfareporting#ad"
+    },
+    "lastModifiedInfo": {
+     "$ref": "LastModifiedInfo",
+     "description": "Information about the most recent modification of this ad. This is a read-only field."
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this ad. This is a required field and must be less than 256 characters long."
+    },
+    "placementAssignments": {
+     "type": "array",
+     "description": "Placement assignments for this ad.",
+     "items": {
+      "$ref": "PlacementAssignment"
+     }
+    },
+    "remarketingListExpression": {
+     "$ref": "ListTargetingExpression",
+     "description": "Applicable when type is AD_SERVING_STANDARD_AD. Remarketing list targeting expression for this ad."
+    },
+    "size": {
+     "$ref": "Size",
+     "description": "Size of this ad. Applicable when type is AD_SERVING_DEFAULT_AD."
+    },
+    "sslCompliant": {
+     "type": "boolean",
+     "description": "Whether this ad is ssl compliant. This is a read-only field that is auto-generated when the ad is inserted or updated."
+    },
+    "sslRequired": {
+     "type": "boolean",
+     "description": "Whether this ad requires ssl. This is a read-only field that is auto-generated when the ad is inserted or updated."
+    },
+    "startTime": {
+     "type": "string",
+     "description": "Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.",
+     "format": "date-time"
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this ad. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "technologyTargeting": {
+     "$ref": "TechnologyTargeting",
+     "description": "Technology platform targeting information for this ad. Applicable when type is AD_SERVING_STANDARD_AD."
+    },
+    "type": {
+     "type": "string",
+     "description": "Type of ad. This is a required field on insertion. Note that default ads (AD_SERVING_DEFAULT_AD) cannot be created directly (see Creative resource).",
+     "enum": [
+      "AD_SERVING_CLICK_TRACKER",
+      "AD_SERVING_DEFAULT_AD",
+      "AD_SERVING_STANDARD_AD",
+      "AD_SERVING_TRACKING"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "AdSlot": {
+   "id": "AdSlot",
+   "type": "object",
+   "description": "Ad Slot",
+   "properties": {
+    "comment": {
+     "type": "string",
+     "description": "Comment for this ad slot."
+    },
+    "compatibility": {
+     "type": "string",
+     "description": "Ad slot compatibility. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop, mobile devices or in mobile apps for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard.",
+     "enum": [
+      "APP",
+      "APP_INTERSTITIAL",
+      "DISPLAY",
+      "DISPLAY_INTERSTITIAL",
+      "IN_STREAM_VIDEO"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "height": {
+     "type": "string",
+     "description": "Height of this ad slot.",
+     "format": "int64"
+    },
+    "linkedPlacementId": {
+     "type": "string",
+     "description": "ID of the placement from an external platform that is linked to this ad slot.",
+     "format": "int64"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this ad slot."
+    },
+    "paymentSourceType": {
+     "type": "string",
+     "description": "Payment source type of this ad slot.",
+     "enum": [
+      "PLANNING_PAYMENT_SOURCE_TYPE_AGENCY_PAID",
+      "PLANNING_PAYMENT_SOURCE_TYPE_PUBLISHER_PAID"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "primary": {
+     "type": "boolean",
+     "description": "Primary ad slot of a roadblock inventory item."
+    },
+    "width": {
+     "type": "string",
+     "description": "Width of this ad slot.",
+     "format": "int64"
+    }
+   }
+  },
+  "AdsListResponse": {
+   "id": "AdsListResponse",
+   "type": "object",
+   "description": "Ad List Response",
+   "properties": {
+    "ads": {
+     "type": "array",
+     "description": "Ad collection.",
+     "items": {
+      "$ref": "Ad"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#adsListResponse\".",
+     "default": "dfareporting#adsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "Advertiser": {
+   "id": "Advertiser",
+   "type": "object",
+   "description": "Contains properties of a DCM advertiser.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this advertiser.This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "advertiserGroupId": {
+     "type": "string",
+     "description": "ID of the advertiser group this advertiser belongs to. You can group advertisers for reporting purposes, allowing you to see aggregated information for all advertisers in each group.",
+     "format": "int64"
+    },
+    "clickThroughUrlSuffix": {
+     "type": "string",
+     "description": "Suffix added to click-through URL of ad creative associations under this advertiser. Must be less than 129 characters long."
+    },
+    "defaultClickThroughEventTagId": {
+     "type": "string",
+     "description": "ID of the click-through event tag to apply by default to the landing pages of this advertiser's campaigns.",
+     "format": "int64"
+    },
+    "defaultEmail": {
+     "type": "string",
+     "description": "Default email address used in sender field for tag emails."
+    },
+    "floodlightConfigurationId": {
+     "type": "string",
+     "description": "Floodlight configuration ID of this advertiser. The floodlight configuration ID will be created automatically, so on insert this field should be left blank. This field can be set to another advertiser's floodlight configuration ID in order to share that advertiser's floodlight configuration with this advertiser, so long as: \n- This advertiser's original floodlight configuration is not already associated with floodlight activities or floodlight activity groups. \n- This advertiser's original floodlight configuration is not already shared with another advertiser.",
+     "format": "int64"
+    },
+    "floodlightConfigurationIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this advertiser. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "idDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of this advertiser. This is a read-only, auto-generated field."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#advertiser\".",
+     "default": "dfareporting#advertiser"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this advertiser. This is a required field and must be less than 256 characters long and unique among advertisers of the same account."
+    },
+    "originalFloodlightConfigurationId": {
+     "type": "string",
+     "description": "Original floodlight configuration before any sharing occurred. Set the floodlightConfigurationId of this advertiser to originalFloodlightConfigurationId to unshare the advertiser's current floodlight configuration. You cannot unshare an advertiser's floodlight configuration if the shared configuration has activities associated with any campaign or placement.",
+     "format": "int64"
+    },
+    "status": {
+     "type": "string",
+     "description": "Status of this advertiser.",
+     "enum": [
+      "APPROVED",
+      "ON_HOLD"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this advertiser.This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "suspended": {
+     "type": "boolean",
+     "description": "Suspension status of this advertiser."
+    }
+   }
+  },
+  "AdvertiserGroup": {
+   "id": "AdvertiserGroup",
+   "type": "object",
+   "description": "Groups advertisers together so that reports can be generated for the entire group at once.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this advertiser group. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this advertiser group. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#advertiserGroup\".",
+     "default": "dfareporting#advertiserGroup"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this advertiser group. This is a required field and must be less than 256 characters long and unique among advertiser groups of the same account."
+    }
+   }
+  },
+  "AdvertiserGroupsListResponse": {
+   "id": "AdvertiserGroupsListResponse",
+   "type": "object",
+   "description": "Advertiser Group List Response",
+   "properties": {
+    "advertiserGroups": {
+     "type": "array",
+     "description": "Advertiser group collection.",
+     "items": {
+      "$ref": "AdvertiserGroup"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#advertiserGroupsListResponse\".",
+     "default": "dfareporting#advertiserGroupsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "AdvertisersListResponse": {
+   "id": "AdvertisersListResponse",
+   "type": "object",
+   "description": "Advertiser List Response",
+   "properties": {
+    "advertisers": {
+     "type": "array",
+     "description": "Advertiser collection.",
+     "items": {
+      "$ref": "Advertiser"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#advertisersListResponse\".",
+     "default": "dfareporting#advertisersListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "AudienceSegment": {
+   "id": "AudienceSegment",
+   "type": "object",
+   "description": "Audience Segment.",
+   "properties": {
+    "allocation": {
+     "type": "integer",
+     "description": "Weight allocated to this segment. Must be between 1 and 1000. The weight assigned will be understood in proportion to the weights assigned to other segments in the same segment group.",
+     "format": "int32"
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this audience segment. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this audience segment. This is a required field and must be less than 65 characters long."
+    }
+   }
+  },
+  "AudienceSegmentGroup": {
+   "id": "AudienceSegmentGroup",
+   "type": "object",
+   "description": "Audience Segment Group.",
+   "properties": {
+    "audienceSegments": {
+     "type": "array",
+     "description": "Audience segments assigned to this group. The number of segments must be between 2 and 100.",
+     "items": {
+      "$ref": "AudienceSegment"
+     }
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this audience segment group. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this audience segment group. This is a required field and must be less than 65 characters long."
+    }
+   }
+  },
+  "Browser": {
+   "id": "Browser",
+   "type": "object",
+   "description": "Contains information about a browser that can be targeted by ads.",
+   "properties": {
+    "browserVersionId": {
+     "type": "string",
+     "description": "ID referring to this grouping of browser and version numbers. This is the ID used for targeting.",
+     "format": "int64"
+    },
+    "dartId": {
+     "type": "string",
+     "description": "DART ID of this browser. This is the ID used when generating reports.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#browser\".",
+     "default": "dfareporting#browser"
+    },
+    "majorVersion": {
+     "type": "string",
+     "description": "Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is."
+    },
+    "minorVersion": {
+     "type": "string",
+     "description": "Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is."
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this browser."
+    }
+   }
+  },
+  "BrowsersListResponse": {
+   "id": "BrowsersListResponse",
+   "type": "object",
+   "description": "Browser List Response",
+   "properties": {
+    "browsers": {
+     "type": "array",
+     "description": "Browser collection.",
+     "items": {
+      "$ref": "Browser"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#browsersListResponse\".",
+     "default": "dfareporting#browsersListResponse"
+    }
+   }
+  },
+  "Campaign": {
+   "id": "Campaign",
+   "type": "object",
+   "description": "Contains properties of a DCM campaign.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this campaign. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "additionalCreativeOptimizationConfigurations": {
+     "type": "array",
+     "description": "Additional creative optimization configurations for the campaign.",
+     "items": {
+      "$ref": "CreativeOptimizationConfiguration"
+     }
+    },
+    "advertiserGroupId": {
+     "type": "string",
+     "description": "Advertiser group ID of the associated advertiser.",
+     "format": "int64"
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of this campaign. This is a required field.",
+     "format": "int64"
+    },
+    "advertiserIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the advertiser ID of this campaign. This is a read-only, auto-generated field."
+    },
+    "archived": {
+     "type": "boolean",
+     "description": "Whether this campaign has been archived."
+    },
+    "audienceSegmentGroups": {
+     "type": "array",
+     "description": "Audience segment groups assigned to this campaign. Cannot have more than 300 segment groups.",
+     "items": {
+      "$ref": "AudienceSegmentGroup"
+     }
+    },
+    "billingInvoiceCode": {
+     "type": "string",
+     "description": "Billing invoice code included in the DCM client billing invoices associated with the campaign."
+    },
+    "clickThroughUrlSuffixProperties": {
+     "$ref": "ClickThroughUrlSuffixProperties",
+     "description": "Click-through URL suffix override properties for this campaign."
+    },
+    "comment": {
+     "type": "string",
+     "description": "Arbitrary comments about this campaign. Must be less than 256 characters long."
+    },
+    "comscoreVceEnabled": {
+     "type": "boolean",
+     "description": "Whether comScore vCE reports are enabled for this campaign."
+    },
+    "createInfo": {
+     "$ref": "LastModifiedInfo",
+     "description": "Information about the creation of this campaign. This is a read-only field."
+    },
+    "creativeGroupIds": {
+     "type": "array",
+     "description": "List of creative group IDs that are assigned to the campaign.",
+     "items": {
+      "type": "string",
+      "format": "int64"
+     }
+    },
+    "creativeOptimizationConfiguration": {
+     "$ref": "CreativeOptimizationConfiguration",
+     "description": "Creative optimization configuration for the campaign."
+    },
+    "defaultClickThroughEventTagProperties": {
+     "$ref": "DefaultClickThroughEventTagProperties",
+     "description": "Click-through event tag ID override properties for this campaign."
+    },
+    "endDate": {
+     "type": "string",
+     "description": "Date on which the campaign will stop running. On insert, the end date must be today or a future date. The end date must be later than or be the same as the start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective campaign run date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This is a required field.",
+     "format": "date"
+    },
+    "eventTagOverrides": {
+     "type": "array",
+     "description": "Overrides that can be used to activate or deactivate advertiser event tags.",
+     "items": {
+      "$ref": "EventTagOverride"
+     }
+    },
+    "externalId": {
+     "type": "string",
+     "description": "External ID for this campaign."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this campaign. This is a read-only auto-generated field.",
+     "format": "int64"
+    },
+    "idDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of this campaign. This is a read-only, auto-generated field."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#campaign\".",
+     "default": "dfareporting#campaign"
+    },
+    "lastModifiedInfo": {
+     "$ref": "LastModifiedInfo",
+     "description": "Information about the most recent modification of this campaign. This is a read-only field."
+    },
+    "lookbackConfiguration": {
+     "$ref": "LookbackConfiguration",
+     "description": "Lookback window settings for the campaign."
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this campaign. This is a required field and must be less than 256 characters long and unique among campaigns of the same advertiser."
+    },
+    "nielsenOcrEnabled": {
+     "type": "boolean",
+     "description": "Whether Nielsen reports are enabled for this campaign."
+    },
+    "startDate": {
+     "type": "string",
+     "description": "Date on which the campaign starts running. The start date can be any date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This is a required field.",
+     "format": "date"
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this campaign. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "traffickerEmails": {
+     "type": "array",
+     "description": "Campaign trafficker contact emails.",
+     "items": {
+      "type": "string"
+     }
+    }
+   }
+  },
+  "CampaignCreativeAssociation": {
+   "id": "CampaignCreativeAssociation",
+   "type": "object",
+   "description": "Identifies a creative which has been associated with a given campaign.",
+   "properties": {
+    "creativeId": {
+     "type": "string",
+     "description": "ID of the creative associated with the campaign. This is a required field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#campaignCreativeAssociation\".",
+     "default": "dfareporting#campaignCreativeAssociation"
+    }
+   }
+  },
+  "CampaignCreativeAssociationsListResponse": {
+   "id": "CampaignCreativeAssociationsListResponse",
+   "type": "object",
+   "description": "Campaign Creative Association List Response",
+   "properties": {
+    "campaignCreativeAssociations": {
+     "type": "array",
+     "description": "Campaign creative association collection",
+     "items": {
+      "$ref": "CampaignCreativeAssociation"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#campaignCreativeAssociationsListResponse\".",
+     "default": "dfareporting#campaignCreativeAssociationsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "CampaignsListResponse": {
+   "id": "CampaignsListResponse",
+   "type": "object",
+   "description": "Campaign List Response",
+   "properties": {
+    "campaigns": {
+     "type": "array",
+     "description": "Campaign collection.",
+     "items": {
+      "$ref": "Campaign"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#campaignsListResponse\".",
+     "default": "dfareporting#campaignsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "ChangeLog": {
+   "id": "ChangeLog",
+   "type": "object",
+   "description": "Describes a change that a user has made to a resource.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of the modified object.",
+     "format": "int64"
+    },
+    "action": {
+     "type": "string",
+     "description": "Action which caused the change."
+    },
+    "changeTime": {
+     "type": "string",
+     "description": "Time when the object was modified.",
+     "format": "date-time"
+    },
+    "fieldName": {
+     "type": "string",
+     "description": "Field name of the object which changed."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this change log.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#changeLog\".",
+     "default": "dfareporting#changeLog"
+    },
+    "newValue": {
+     "type": "string",
+     "description": "New value of the object field."
+    },
+    "objectId": {
+     "type": "string",
+     "description": "ID of the object of this change log. The object could be a campaign, placement, ad, or other type.",
+     "format": "int64"
+    },
+    "objectType": {
+     "type": "string",
+     "description": "Object type of the change log."
+    },
+    "oldValue": {
+     "type": "string",
+     "description": "Old value of the object field."
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of the modified object.",
+     "format": "int64"
+    },
+    "transactionId": {
+     "type": "string",
+     "description": "Transaction ID of this change log. When a single API call results in many changes, each change will have a separate ID in the change log but will share the same transactionId.",
+     "format": "int64"
+    },
+    "userProfileId": {
+     "type": "string",
+     "description": "ID of the user who modified the object.",
+     "format": "int64"
+    },
+    "userProfileName": {
+     "type": "string",
+     "description": "User profile name of the user who modified the object."
+    }
+   }
+  },
+  "ChangeLogsListResponse": {
+   "id": "ChangeLogsListResponse",
+   "type": "object",
+   "description": "Change Log List Response",
+   "properties": {
+    "changeLogs": {
+     "type": "array",
+     "description": "Change log collection.",
+     "items": {
+      "$ref": "ChangeLog"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#changeLogsListResponse\".",
+     "default": "dfareporting#changeLogsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "CitiesListResponse": {
+   "id": "CitiesListResponse",
+   "type": "object",
+   "description": "City List Response",
+   "properties": {
+    "cities": {
+     "type": "array",
+     "description": "City collection.",
+     "items": {
+      "$ref": "City"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#citiesListResponse\".",
+     "default": "dfareporting#citiesListResponse"
+    }
+   }
+  },
+  "City": {
+   "id": "City",
+   "type": "object",
+   "description": "Contains information about a city that can be targeted by ads.",
+   "properties": {
+    "countryCode": {
+     "type": "string",
+     "description": "Country code of the country to which this city belongs."
+    },
+    "countryDartId": {
+     "type": "string",
+     "description": "DART ID of the country to which this city belongs.",
+     "format": "int64"
+    },
+    "dartId": {
+     "type": "string",
+     "description": "DART ID of this city. This is the ID used for targeting and generating reports.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#city\".",
+     "default": "dfareporting#city"
+    },
+    "metroCode": {
+     "type": "string",
+     "description": "Metro region code of the metro region (DMA) to which this city belongs."
+    },
+    "metroDmaId": {
+     "type": "string",
+     "description": "ID of the metro region (DMA) to which this city belongs.",
+     "format": "int64"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this city."
+    },
+    "regionCode": {
+     "type": "string",
+     "description": "Region code of the region to which this city belongs."
+    },
+    "regionDartId": {
+     "type": "string",
+     "description": "DART ID of the region to which this city belongs.",
+     "format": "int64"
+    }
+   }
+  },
+  "ClickTag": {
+   "id": "ClickTag",
+   "type": "object",
+   "description": "Creative Click Tag.",
+   "properties": {
+    "eventName": {
+     "type": "string",
+     "description": "Advertiser event name associated with the click tag. This field is used by ENHANCED_BANNER, ENHANCED_IMAGE, and HTML5_BANNER creatives."
+    },
+    "name": {
+     "type": "string",
+     "description": "Parameter name for the specified click tag. For ENHANCED_IMAGE creative assets, this field must match the value of the creative asset's creativeAssetId.name field."
+    },
+    "value": {
+     "type": "string",
+     "description": "Parameter value for the specified click tag. This field contains a click-through url."
+    }
+   }
+  },
+  "ClickThroughUrl": {
+   "id": "ClickThroughUrl",
+   "type": "object",
+   "description": "Click-through URL",
+   "properties": {
+    "computedClickThroughUrl": {
+     "type": "string",
+     "description": "Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows: \n- If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.\n- If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.\n- If neither of the above cases apply, then the customClickThroughUrl is assigned to this field."
+    },
+    "customClickThroughUrl": {
+     "type": "string",
+     "description": "Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset."
+    },
+    "defaultLandingPage": {
+     "type": "boolean",
+     "description": "Whether the campaign default landing page is used."
+    },
+    "landingPageId": {
+     "type": "string",
+     "description": "ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.",
+     "format": "int64"
+    }
+   }
+  },
+  "ClickThroughUrlSuffixProperties": {
+   "id": "ClickThroughUrlSuffixProperties",
+   "type": "object",
+   "description": "Click Through URL Suffix settings.",
+   "properties": {
+    "clickThroughUrlSuffix": {
+     "type": "string",
+     "description": "Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long."
+    },
+    "overrideInheritedSuffix": {
+     "type": "boolean",
+     "description": "Whether this entity should override the inherited click-through URL suffix with its own defined value."
+    }
+   }
+  },
+  "CompanionClickThroughOverride": {
+   "id": "CompanionClickThroughOverride",
+   "type": "object",
+   "description": "Companion Click-through override.",
+   "properties": {
+    "clickThroughUrl": {
+     "$ref": "ClickThroughUrl",
+     "description": "Click-through URL of this companion click-through override."
+    },
+    "creativeId": {
+     "type": "string",
+     "description": "ID of the creative for this companion click-through override.",
+     "format": "int64"
+    }
+   }
+  },
+  "CompatibleFields": {
+   "id": "CompatibleFields",
+   "type": "object",
+   "description": "Represents a response to the queryCompatibleFields method.",
+   "properties": {
+    "crossDimensionReachReportCompatibleFields": {
+     "$ref": "CrossDimensionReachReportCompatibleFields",
+     "description": "Contains items that are compatible to be selected for a report of type \"CROSS_DIMENSION_REACH\"."
+    },
+    "floodlightReportCompatibleFields": {
+     "$ref": "FloodlightReportCompatibleFields",
+     "description": "Contains items that are compatible to be selected for a report of type \"FLOODLIGHT\"."
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#compatibleFields.",
+     "default": "dfareporting#compatibleFields"
+    },
+    "pathToConversionReportCompatibleFields": {
+     "$ref": "PathToConversionReportCompatibleFields",
+     "description": "Contains items that are compatible to be selected for a report of type \"PATH_TO_CONVERSION\"."
+    },
+    "reachReportCompatibleFields": {
+     "$ref": "ReachReportCompatibleFields",
+     "description": "Contains items that are compatible to be selected for a report of type \"REACH\"."
+    },
+    "reportCompatibleFields": {
+     "$ref": "ReportCompatibleFields",
+     "description": "Contains items that are compatible to be selected for a report of type \"STANDARD\"."
+    }
+   }
+  },
+  "ConnectionType": {
+   "id": "ConnectionType",
+   "type": "object",
+   "description": "Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.",
+   "properties": {
+    "id": {
+     "type": "string",
+     "description": "ID of this connection type.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#connectionType\".",
+     "default": "dfareporting#connectionType"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this connection type."
+    }
+   }
+  },
+  "ConnectionTypesListResponse": {
+   "id": "ConnectionTypesListResponse",
+   "type": "object",
+   "description": "Connection Type List Response",
+   "properties": {
+    "connectionTypes": {
+     "type": "array",
+     "description": "Collection of connection types such as broadband and mobile.",
+     "items": {
+      "$ref": "ConnectionType"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#connectionTypesListResponse\".",
+     "default": "dfareporting#connectionTypesListResponse"
+    }
+   }
+  },
+  "ContentCategoriesListResponse": {
+   "id": "ContentCategoriesListResponse",
+   "type": "object",
+   "description": "Content Category List Response",
+   "properties": {
+    "contentCategories": {
+     "type": "array",
+     "description": "Content category collection.",
+     "items": {
+      "$ref": "ContentCategory"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#contentCategoriesListResponse\".",
+     "default": "dfareporting#contentCategoriesListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "ContentCategory": {
+   "id": "ContentCategory",
+   "type": "object",
+   "description": "Organizes placements according to the contents of their associated webpages.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this content category. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this content category. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#contentCategory\".",
+     "default": "dfareporting#contentCategory"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this content category. This is a required field and must be less than 256 characters long and unique among content categories of the same account."
+    }
+   }
+  },
+  "CountriesListResponse": {
+   "id": "CountriesListResponse",
+   "type": "object",
+   "description": "Country List Response",
+   "properties": {
+    "countries": {
+     "type": "array",
+     "description": "Country collection.",
+     "items": {
+      "$ref": "Country"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#countriesListResponse\".",
+     "default": "dfareporting#countriesListResponse"
+    }
+   }
+  },
+  "Country": {
+   "id": "Country",
+   "type": "object",
+   "description": "Contains information about a country that can be targeted by ads.",
+   "properties": {
+    "countryCode": {
+     "type": "string",
+     "description": "Country code."
+    },
+    "dartId": {
+     "type": "string",
+     "description": "DART ID of this country. This is the ID used for targeting and generating reports.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#country\".",
+     "default": "dfareporting#country"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this country."
+    },
+    "sslEnabled": {
+     "type": "boolean",
+     "description": "Whether ad serving supports secure servers in this country."
+    }
+   }
+  },
+  "Creative": {
+   "id": "Creative",
+   "type": "object",
+   "description": "Contains properties of a Creative.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.",
+     "format": "int64"
+    },
+    "active": {
+     "type": "boolean",
+     "description": "Whether the creative is active. Applicable to all creative types."
+    },
+    "adParameters": {
+     "type": "string",
+     "description": "Ad parameters user for VPAID creative. This is a read-only field. Applicable to the following creative types: all VPAID."
+    },
+    "adTagKeys": {
+     "type": "array",
+     "description": "Keywords for a Rich Media creative. Keywords let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use keywords to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+     "items": {
+      "type": "string"
+     }
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of this creative. This is a required field. Applicable to all creative types.",
+     "format": "int64"
+    },
+    "allowScriptAccess": {
+     "type": "boolean",
+     "description": "Whether script access is allowed for this creative. This is a read-only and deprecated field which will automatically be set to true on update. Applicable to the following creative types: FLASH_INPAGE."
+    },
+    "archived": {
+     "type": "boolean",
+     "description": "Whether the creative is archived. Applicable to all creative types."
+    },
+    "artworkType": {
+     "type": "string",
+     "description": "Type of artwork used for the creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+     "enum": [
+      "ARTWORK_TYPE_FLASH",
+      "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
+      "ARTWORK_TYPE_MIXED"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "authoringSource": {
+     "type": "string",
+     "description": "Source application where creative was authored. Presently, only DBM authored creatives will have this field set. Applicable to all creative types.",
+     "enum": [
+      "CREATIVE_AUTHORING_SOURCE_DBM",
+      "CREATIVE_AUTHORING_SOURCE_DCM",
+      "CREATIVE_AUTHORING_SOURCE_STUDIO"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "authoringTool": {
+     "type": "string",
+     "description": "Authoring tool for HTML5 banner creatives. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.",
+     "enum": [
+      "NINJA",
+      "SWIFFY"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "auto_advance_images": {
+     "type": "boolean",
+     "description": "Whether images are automatically advanced for enhanced image creatives. Applicable to the following creative types: ENHANCED_IMAGE."
+    },
+    "backgroundColor": {
+     "type": "string",
+     "description": "The 6-character HTML color code, beginning with #, for the background of the window area where the Flash file is displayed. Default is white. Applicable to the following creative types: FLASH_INPAGE."
+    },
+    "backupImageClickThroughUrl": {
+     "type": "string",
+     "description": "Click-through URL for backup image. Applicable to the following creative types: ENHANCED_BANNER, FLASH_INPAGE, and HTML5_BANNER."
+    },
+    "backupImageFeatures": {
+     "type": "array",
+     "description": "List of feature dependencies that will cause a backup image to be served if the browser that serves the ad does not support them. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative asset correctly. This field is initially auto-generated to contain all features detected by DCM for all the assets of this creative and can then be modified by the client. To reset this field, copy over all the creativeAssets' detected features. Applicable to the following creative types: ENHANCED_BANNER and HTML5_BANNER.",
+     "items": {
+      "type": "string",
+      "enum": [
+       "APPLICATION_CACHE",
+       "AUDIO",
+       "CANVAS",
+       "CANVAS_TEXT",
+       "CSS_ANIMATIONS",
+       "CSS_BACKGROUND_SIZE",
+       "CSS_BORDER_IMAGE",
+       "CSS_BORDER_RADIUS",
+       "CSS_BOX_SHADOW",
+       "CSS_COLUMNS",
+       "CSS_FLEX_BOX",
+       "CSS_FONT_FACE",
+       "CSS_GENERATED_CONTENT",
+       "CSS_GRADIENTS",
+       "CSS_HSLA",
+       "CSS_MULTIPLE_BGS",
+       "CSS_OPACITY",
+       "CSS_REFLECTIONS",
+       "CSS_RGBA",
+       "CSS_TEXT_SHADOW",
+       "CSS_TRANSFORMS",
+       "CSS_TRANSFORMS3D",
+       "CSS_TRANSITIONS",
+       "DRAG_AND_DROP",
+       "GEO_LOCATION",
+       "HASH_CHANGE",
+       "HISTORY",
+       "INDEXED_DB",
+       "INLINE_SVG",
+       "INPUT_ATTR_AUTOCOMPLETE",
+       "INPUT_ATTR_AUTOFOCUS",
+       "INPUT_ATTR_LIST",
+       "INPUT_ATTR_MAX",
+       "INPUT_ATTR_MIN",
+       "INPUT_ATTR_MULTIPLE",
+       "INPUT_ATTR_PATTERN",
+       "INPUT_ATTR_PLACEHOLDER",
+       "INPUT_ATTR_REQUIRED",
+       "INPUT_ATTR_STEP",
+       "INPUT_TYPE_COLOR",
+       "INPUT_TYPE_DATE",
+       "INPUT_TYPE_DATETIME",
+       "INPUT_TYPE_DATETIME_LOCAL",
+       "INPUT_TYPE_EMAIL",
+       "INPUT_TYPE_MONTH",
+       "INPUT_TYPE_NUMBER",
+       "INPUT_TYPE_RANGE",
+       "INPUT_TYPE_SEARCH",
+       "INPUT_TYPE_TEL",
+       "INPUT_TYPE_TIME",
+       "INPUT_TYPE_URL",
+       "INPUT_TYPE_WEEK",
+       "LOCAL_STORAGE",
+       "POST_MESSAGE",
+       "SESSION_STORAGE",
+       "SMIL",
+       "SVG_CLIP_PATHS",
+       "SVG_FE_IMAGE",
+       "SVG_FILTERS",
+       "SVG_HREF",
+       "TOUCH",
+       "VIDEO",
+       "WEBGL",
+       "WEB_SOCKETS",
+       "WEB_SQL_DATABASE",
+       "WEB_WORKERS"
+      ],
+      "enumDescriptions": [
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       ""
+      ]
+     }
+    },
+    "backupImageReportingLabel": {
+     "type": "string",
+     "description": "Reporting label used for HTML5 banner backup image. Applicable to the following creative types: ENHANCED_BANNER."
+    },
+    "backupImageTargetWindow": {
+     "$ref": "TargetWindow",
+     "description": "Target window for backup image. Applicable to the following creative types: ENHANCED_BANNER, FLASH_INPAGE, and HTML5_BANNER."
+    },
+    "clickTags": {
+     "type": "array",
+     "description": "Click tags of the creative. For ENHANCED_BANNER, FLASH_INPAGE, and HTML5_BANNER creatives, this is a subset of detected click tags for the assets associated with this creative. After creating a flash asset, detected click tags will be returned in the creativeAssetMetadata. When inserting the creative, populate the creative clickTags field using the creativeAssetMetadata.clickTags field. For ENHANCED_IMAGE creatives, there should be exactly one entry in this list for each image creative asset. A click tag is matched with a corresponding creative asset by matching the clickTag.name field with the creativeAsset.assetIdentifier.name field. Applicable to the following creative types: ENHANCED_BANNER, ENHANCED_IMAGE, FLASH_INPAGE, HTML5_BANNER.",
+     "items": {
+      "$ref": "ClickTag"
+     }
+    },
+    "commercialId": {
+     "type": "string",
+     "description": "Industry standard ID assigned to creative for reach and frequency. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID."
+    },
+    "companionCreatives": {
+     "type": "array",
+     "description": "List of companion creatives assigned to an in-Stream videocreative. Acceptable values include IDs of existing flash and image creatives. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.",
+     "items": {
+      "type": "string",
+      "format": "int64"
+     }
+    },
+    "compatibility": {
+     "type": "array",
+     "description": "Compatibilities associated with this creative. This is a read-only field. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL  are for rendering in mobile apps. Only pre-existing creatives may have these compatibilities since new creatives will either be assigned DISPLAY or DISPLAY_INTERSTITIAL instead. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. Applicable to all creative types.\n\nAcceptable values are:\n- \"APP\"\n- \"APP_INTERSTITIAL\"\n- \"IN_STREAM_VIDEO\"\n- \"DISPLAY\"\n- \"DISPLAY_INTERSTITIAL\"",
+     "items": {
+      "type": "string",
+      "enum": [
+       "APP",
+       "APP_INTERSTITIAL",
+       "DISPLAY",
+       "DISPLAY_INTERSTITIAL",
+       "IN_STREAM_VIDEO"
+      ],
+      "enumDescriptions": [
+       "",
+       "",
+       "",
+       "",
+       ""
+      ]
+     }
+    },
+    "convertFlashToHtml5": {
+     "type": "boolean",
+     "description": "Whether Flash assets associated with the creative need to be automatically converted to HTML5. This flag is enabled by default and users can choose to disable it if they don't want the system to generate and use HTML5 asset for this creative. Applicable to the following creative types: ENHANCED_BANNER and FLASH_INPAGE."
+    },
+    "counterCustomEvents": {
+     "type": "array",
+     "description": "List of counter events configured for the creative. For ENHANCED_IMAGE creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: ENHANCED_IMAGE, all RICH_MEDIA, and all VPAID.",
+     "items": {
+      "$ref": "CreativeCustomEvent"
+     }
+    },
+    "creativeAssets": {
+     "type": "array",
+     "description": "Assets associated with a creative. Applicable to all but the following creative types: INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and REDIRECT",
+     "items": {
+      "$ref": "CreativeAsset"
+     }
+    },
+    "creativeFieldAssignments": {
+     "type": "array",
+     "description": "Creative field assignments for this creative. Applicable to all creative types.",
+     "items": {
+      "$ref": "CreativeFieldAssignment"
+     }
+    },
+    "customKeyValues": {
+     "type": "array",
+     "description": "Custom key-values for a Rich Media creative. Key-values let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use key-values to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+     "items": {
+      "type": "string"
+     }
+    },
+    "exitCustomEvents": {
+     "type": "array",
+     "description": "List of exit events configured for the creative. For ENHANCED_BANNER and ENHANCED_IMAGE creatives, these are read-only and auto-generated from clickTags, For ENHANCED_BANNER, an event is also created from the backupImageReportingLabel. Applicable to the following creative types: ENHANCED_BANNER, ENHANCED_IMAGE, all RICH_MEDIA, and all VPAID.",
+     "items": {
+      "$ref": "CreativeCustomEvent"
+     }
+    },
+    "fsCommand": {
+     "$ref": "FsCommand",
+     "description": "OpenWindow FSCommand of this creative. This lets the SWF file communicate with either Flash Player or the program hosting Flash Player, such as a web browser. This is only triggered if allowScriptAccess field is true. Applicable to the following creative types: FLASH_INPAGE."
+    },
+    "htmlCode": {
+     "type": "string",
+     "description": "HTML code for the creative. This is a required field when applicable. This field is ignored if htmlCodeLocked is false. Applicable to the following creative types: all CUSTOM, FLASH_INPAGE, and HTML5_BANNER, and all RICH_MEDIA."
+    },
+    "htmlCodeLocked": {
+     "type": "boolean",
+     "description": "Whether HTML code is DCM-generated or manually entered. Set to true to ignore changes to htmlCode. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this creative. This is a read-only, auto-generated field. Applicable to all creative types.",
+     "format": "int64"
+    },
+    "idDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of this creative. This is a read-only field. Applicable to all creative types."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creative\".",
+     "default": "dfareporting#creative"
+    },
+    "lastModifiedInfo": {
+     "$ref": "LastModifiedInfo",
+     "description": "Creative last modification information. This is a read-only field. Applicable to all creative types."
+    },
+    "latestTraffickedCreativeId": {
+     "type": "string",
+     "description": "Latest Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+     "format": "int64"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of the creative. This is a required field and must be less than 256 characters long. Applicable to all creative types."
+    },
+    "overrideCss": {
+     "type": "string",
+     "description": "Override CSS value for rich media creatives. Applicable to the following creative types: all RICH_MEDIA."
+    },
+    "redirectUrl": {
+     "type": "string",
+     "description": "URL of hosted image or hosted video or another ad tag. For INSTREAM_VIDEO_REDIRECT creatives this is the in-stream video redirect URL. The standard for a VAST (Video Ad Serving Template) ad response allows for a redirect link to another VAST 2.0 or 3.0 call. This is a required field when applicable. Applicable to the following creative types: INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, REDIRECT, and INSTREAM_VIDEO_REDIRECT"
+    },
+    "renderingId": {
+     "type": "string",
+     "description": "ID of current rendering version. This is a read-only field. Applicable to all creative types.",
+     "format": "int64"
+    },
+    "renderingIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the rendering ID of this creative. This is a read-only field. Applicable to all creative types."
+    },
+    "requiredFlashPluginVersion": {
+     "type": "string",
+     "description": "The minimum required Flash plugin version for this creative. For example, 11.2.202.235. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID."
+    },
+    "requiredFlashVersion": {
+     "type": "integer",
+     "description": "The internal Flash version for this creative as calculated by DoubleClick Studio. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE, ENHANCED_BANNER, all RICH_MEDIA, and all VPAID.",
+     "format": "int32"
+    },
+    "size": {
+     "$ref": "Size",
+     "description": "Size associated with this creative. When inserting or updating a creative either the size ID field or size width and height fields can be used. This is a required field when applicable; however for IMAGE and FLASH_INPAGE creatives, if left blank, this field will be automatically set using the actual size of the associated image assets. Applicable to the following creative types: ENHANCED_BANNER, ENHANCED_IMAGE, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA."
+    },
+    "skippable": {
+     "type": "boolean",
+     "description": "Whether the user can choose to skip the creative. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID."
+    },
+    "sslCompliant": {
+     "type": "boolean",
+     "description": "Whether the creative is SSL-compliant. This is a read-only field. Applicable to all creative types."
+    },
+    "sslOverride": {
+     "type": "boolean",
+     "description": "Whether creative should be treated as SSL compliant even if the system scan shows it's not. Applicable to all creative types."
+    },
+    "studioAdvertiserId": {
+     "type": "string",
+     "description": "Studio advertiser ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+     "format": "int64"
+    },
+    "studioCreativeId": {
+     "type": "string",
+     "description": "Studio creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+     "format": "int64"
+    },
+    "studioTraffickedCreativeId": {
+     "type": "string",
+     "description": "Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+     "format": "int64"
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.",
+     "format": "int64"
+    },
+    "thirdPartyBackupImageImpressionsUrl": {
+     "type": "string",
+     "description": "Third-party URL used to record backup image impressions. Applicable to the following creative types: all RICH_MEDIA"
+    },
+    "thirdPartyRichMediaImpressionsUrl": {
+     "type": "string",
+     "description": "Third-party URL used to record rich media impressions. Applicable to the following creative types: all RICH_MEDIA"
+    },
+    "thirdPartyUrls": {
+     "type": "array",
+     "description": "Third-party URLs for tracking in-stream video creative events. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.",
+     "items": {
+      "$ref": "ThirdPartyTrackingUrl"
+     }
+    },
+    "timerCustomEvents": {
+     "type": "array",
+     "description": "List of timer events configured for the creative. For ENHANCED_IMAGE creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: ENHANCED_IMAGE, all RICH_MEDIA, and all VPAID.",
+     "items": {
+      "$ref": "CreativeCustomEvent"
+     }
+    },
+    "totalFileSize": {
+     "type": "string",
+     "description": "Combined size of all creative assets. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+     "format": "int64"
+    },
+    "type": {
+     "type": "string",
+     "description": "Type of this creative.This is a required field. Applicable to all creative types.",
+     "enum": [
+      "BRAND_SAFE_DEFAULT_INSTREAM_VIDEO",
+      "CUSTOM_INPAGE",
+      "CUSTOM_INTERSTITIAL",
+      "ENHANCED_BANNER",
+      "ENHANCED_IMAGE",
+      "FLASH_INPAGE",
+      "HTML5_BANNER",
+      "IMAGE",
+      "INSTREAM_VIDEO",
+      "INSTREAM_VIDEO_REDIRECT",
+      "INTERNAL_REDIRECT",
+      "INTERSTITIAL_INTERNAL_REDIRECT",
+      "REDIRECT",
+      "RICH_MEDIA_EXPANDING",
+      "RICH_MEDIA_IM_EXPAND",
+      "RICH_MEDIA_INPAGE",
+      "RICH_MEDIA_INPAGE_FLOATING",
+      "RICH_MEDIA_INTERSTITIAL_FLOAT",
+      "RICH_MEDIA_MOBILE_IN_APP",
+      "RICH_MEDIA_MULTI_FLOATING",
+      "RICH_MEDIA_PEEL_DOWN",
+      "TRACKING_TEXT",
+      "VPAID_LINEAR",
+      "VPAID_NON_LINEAR"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "version": {
+     "type": "integer",
+     "description": "The version number helps you keep track of multiple versions of your creative in your reports. The version number will always be auto-generated during insert operations to start at 1. For tracking creatives the version cannot be incremented and will always remain at 1. For all other creative types the version can be incremented only by 1 during update operations. In addition, the version will be automatically incremented by 1 when undergoing Rich Media creative merging. Applicable to all creative types.",
+     "format": "int32"
+    },
+    "videoDescription": {
+     "type": "string",
+     "description": "Description of the video ad. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID."
+    },
+    "videoDuration": {
+     "type": "number",
+     "description": "Creative video duration in seconds. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO, all RICH_MEDIA, and all VPAID.",
+     "format": "float"
+    }
+   }
+  },
+  "CreativeAsset": {
+   "id": "CreativeAsset",
+   "type": "object",
+   "description": "Creative Asset.",
+   "properties": {
+    "actionScript3": {
+     "type": "boolean",
+     "description": "Whether ActionScript3 is enabled for the flash asset. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE and ENHANCED_BANNER."
+    },
+    "active": {
+     "type": "boolean",
+     "description": "Whether the video asset is active. This is a read-only field for VPAID_NON_LINEAR assets. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID."
+    },
+    "alignment": {
+     "type": "string",
+     "description": "Possible alignments for an asset. This is a read-only field. Applicable to the following creative types: RICH_MEDIA_MULTI_FLOATING.",
+     "enum": [
+      "ALIGNMENT_BOTTOM",
+      "ALIGNMENT_LEFT",
+      "ALIGNMENT_RIGHT",
+      "ALIGNMENT_TOP"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "artworkType": {
+     "type": "string",
+     "description": "Artwork type of rich media creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.",
+     "enum": [
+      "ARTWORK_TYPE_FLASH",
+      "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
+      "ARTWORK_TYPE_MIXED"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "assetIdentifier": {
+     "$ref": "CreativeAssetId",
+     "description": "Identifier of this asset. This is the same identifier returned during creative asset insert operation. This is a required field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT."
+    },
+    "backupImageExit": {
+     "$ref": "CreativeCustomEvent",
+     "description": "Exit event configured for the backup image. Applicable to the following creative types: all RICH_MEDIA."
+    },
+    "bitRate": {
+     "type": "integer",
+     "description": "Detected bit-rate for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.",
+     "format": "int32"
+    },
+    "childAssetType": {
+     "type": "string",
+     "description": "Rich media child asset type. This is a read-only field. Applicable to the following creative types: all VPAID.",
+     "enum": [
+      "CHILD_ASSET_TYPE_DATA",
+      "CHILD_ASSET_TYPE_FLASH",
+      "CHILD_ASSET_TYPE_IMAGE",
+      "CHILD_ASSET_TYPE_VIDEO"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "collapsedSize": {
+     "$ref": "Size",
+     "description": "Size of an asset when collapsed. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN."
+    },
+    "customStartTimeValue": {
+     "type": "integer",
+     "description": "Custom start time in seconds for making the asset visible. Applicable to the following creative types: all RICH_MEDIA.",
+     "format": "int32"
+    },
+    "detectedFeatures": {
+     "type": "array",
+     "description": "List of feature dependencies for the creative asset that are detected by DCM. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field. Applicable to the following creative types: ENHANCED_BANNER and HTML5_BANNER.",
+     "items": {
+      "type": "string",
+      "enum": [
+       "APPLICATION_CACHE",
+       "AUDIO",
+       "CANVAS",
+       "CANVAS_TEXT",
+       "CSS_ANIMATIONS",
+       "CSS_BACKGROUND_SIZE",
+       "CSS_BORDER_IMAGE",
+       "CSS_BORDER_RADIUS",
+       "CSS_BOX_SHADOW",
+       "CSS_COLUMNS",
+       "CSS_FLEX_BOX",
+       "CSS_FONT_FACE",
+       "CSS_GENERATED_CONTENT",
+       "CSS_GRADIENTS",
+       "CSS_HSLA",
+       "CSS_MULTIPLE_BGS",
+       "CSS_OPACITY",
+       "CSS_REFLECTIONS",
+       "CSS_RGBA",
+       "CSS_TEXT_SHADOW",
+       "CSS_TRANSFORMS",
+       "CSS_TRANSFORMS3D",
+       "CSS_TRANSITIONS",
+       "DRAG_AND_DROP",
+       "GEO_LOCATION",
+       "HASH_CHANGE",
+       "HISTORY",
+       "INDEXED_DB",
+       "INLINE_SVG",
+       "INPUT_ATTR_AUTOCOMPLETE",
+       "INPUT_ATTR_AUTOFOCUS",
+       "INPUT_ATTR_LIST",
+       "INPUT_ATTR_MAX",
+       "INPUT_ATTR_MIN",
+       "INPUT_ATTR_MULTIPLE",
+       "INPUT_ATTR_PATTERN",
+       "INPUT_ATTR_PLACEHOLDER",
+       "INPUT_ATTR_REQUIRED",
+       "INPUT_ATTR_STEP",
+       "INPUT_TYPE_COLOR",
+       "INPUT_TYPE_DATE",
+       "INPUT_TYPE_DATETIME",
+       "INPUT_TYPE_DATETIME_LOCAL",
+       "INPUT_TYPE_EMAIL",
+       "INPUT_TYPE_MONTH",
+       "INPUT_TYPE_NUMBER",
+       "INPUT_TYPE_RANGE",
+       "INPUT_TYPE_SEARCH",
+       "INPUT_TYPE_TEL",
+       "INPUT_TYPE_TIME",
+       "INPUT_TYPE_URL",
+       "INPUT_TYPE_WEEK",
+       "LOCAL_STORAGE",
+       "POST_MESSAGE",
+       "SESSION_STORAGE",
+       "SMIL",
+       "SVG_CLIP_PATHS",
+       "SVG_FE_IMAGE",
+       "SVG_FILTERS",
+       "SVG_HREF",
+       "TOUCH",
+       "VIDEO",
+       "WEBGL",
+       "WEB_SOCKETS",
+       "WEB_SQL_DATABASE",
+       "WEB_WORKERS"
+      ],
+      "enumDescriptions": [
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       ""
+      ]
+     }
+    },
+    "displayType": {
+     "type": "string",
+     "description": "Type of rich media asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.",
+     "enum": [
+      "ASSET_DISPLAY_TYPE_EXPANDING",
+      "ASSET_DISPLAY_TYPE_FLASH_IN_FLASH",
+      "ASSET_DISPLAY_TYPE_FLASH_IN_FLASH_EXPANDING",
+      "ASSET_DISPLAY_TYPE_FLOATING",
+      "ASSET_DISPLAY_TYPE_INPAGE",
+      "ASSET_DISPLAY_TYPE_OVERLAY",
+      "ASSET_DISPLAY_TYPE_PEEL_DOWN",
+      "ASSET_DISPLAY_TYPE_VPAID_LINEAR",
+      "ASSET_DISPLAY_TYPE_VPAID_NON_LINEAR"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "duration": {
+     "type": "integer",
+     "description": "Duration in seconds for which an asset will be displayed. Applicable to the following creative types: INSTREAM_VIDEO and VPAID_LINEAR.",
+     "format": "int32"
+    },
+    "durationType": {
+     "type": "string",
+     "description": "Duration type for which an asset will be displayed. Applicable to the following creative types: all RICH_MEDIA.",
+     "enum": [
+      "ASSET_DURATION_TYPE_AUTO",
+      "ASSET_DURATION_TYPE_CUSTOM",
+      "ASSET_DURATION_TYPE_NONE"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "expandedDimension": {
+     "$ref": "Size",
+     "description": "Detected expanded dimension for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID."
+    },
+    "fileSize": {
+     "type": "string",
+     "description": "File size associated with this creative asset. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.",
+     "format": "int64"
+    },
+    "flashVersion": {
+     "type": "integer",
+     "description": "Flash version of the asset. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE, ENHANCED_BANNER, all RICH_MEDIA, and all VPAID.",
+     "format": "int32"
+    },
+    "hideFlashObjects": {
+     "type": "boolean",
+     "description": "Whether to hide Flash objects flag for an asset. Applicable to the following creative types: all RICH_MEDIA."
+    },
+    "hideSelectionBoxes": {
+     "type": "boolean",
+     "description": "Whether to hide selection boxes flag for an asset. Applicable to the following creative types: all RICH_MEDIA."
+    },
+    "horizontallyLocked": {
+     "type": "boolean",
+     "description": "Whether the asset is horizontally locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA."
+    },
+    "id": {
+     "type": "string",
+     "description": "Numeric ID of this creative asset. This is a required field and should not be modified. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.",
+     "format": "int64"
+    },
+    "mimeType": {
+     "type": "string",
+     "description": "Detected MIME type for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID."
+    },
+    "offset": {
+     "$ref": "OffsetPosition",
+     "description": "Offset position for an asset in collapsed mode. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, only applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN."
+    },
+    "originalBackup": {
+     "type": "boolean",
+     "description": "Whether the backup asset is original or changed by the user in DCM. Applicable to the following creative types: all RICH_MEDIA."
+    },
+    "position": {
+     "$ref": "OffsetPosition",
+     "description": "Offset position for an asset. Applicable to the following creative types: all RICH_MEDIA."
+    },
+    "positionLeftUnit": {
+     "type": "string",
+     "description": "Offset left unit for an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.",
+     "enum": [
+      "OFFSET_UNIT_PERCENT",
+      "OFFSET_UNIT_PIXEL",
+      "OFFSET_UNIT_PIXEL_FROM_CENTER"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "positionTopUnit": {
+     "type": "string",
+     "description": "Offset top unit for an asset. This is a read-only field if the asset displayType is ASSET_DISPLAY_TYPE_OVERLAY. Applicable to the following creative types: all RICH_MEDIA.",
+     "enum": [
+      "OFFSET_UNIT_PERCENT",
+      "OFFSET_UNIT_PIXEL",
+      "OFFSET_UNIT_PIXEL_FROM_CENTER"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "progressiveServingUrl": {
+     "type": "string",
+     "description": "Progressive URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID."
+    },
+    "pushdown": {
+     "type": "boolean",
+     "description": "Whether the asset pushes down other content. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable when the asset offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height."
+    },
+    "pushdownDuration": {
+     "type": "number",
+     "description": "Pushdown duration in seconds for an asset. Must be between 0 and 9.99. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable when the asset pushdown field is true, the offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.",
+     "format": "float"
+    },
+    "role": {
+     "type": "string",
+     "description": "Role of the asset in relation to creative. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT. This is a required field.\nPRIMARY applies to ENHANCED_BANNER, FLASH_INPAGE, HTML5_BANNER, IMAGE, IMAGE_GALLERY, all RICH_MEDIA (which may contain multiple primary assets), and all VPAID creatives.\nBACKUP_IMAGE applies to ENHANCED_BANNER, FLASH_INPAGE, HTML5_BANNER, all RICH_MEDIA, and all VPAID creatives.\nADDITIONAL_IMAGE and ADDITIONAL_FLASH apply to FLASH_INPAGE creatives.\nOTHER refers to assets from sources other than DCM, such as Studio uploaded assets, applicable to all RICH_MEDIA and all VPAID creatives.\nPARENT_VIDEO refers to videos uploaded by the user in DCM and is applicable to INSTREAM_VIDEO and VPAID_LINEAR creatives.\nTRANSCODED_VIDEO refers to videos transcoded by DCM from PARENT_VIDEO assets and is applicable to INSTREAM_VIDEO and VPAID_LINEAR creatives.\nALTERNATE_VIDEO refers to the DCM representation of child asset videos from Studio, and is applicable to VPAID_LINEAR creatives. These cannot be added or removed within DCM.\nFor VPAID_LINEAR creatives, PARENT_VIDEO, TRANSCODED_VIDEO and ALTERNATE_VIDEO assets that are marked active serve as backup in case the VPAID creative cannot be served. Only PARENT_VIDEO assets can be added or removed for an INSTREAM_VIDEO or VPAID_LINEAR creative.",
+     "enum": [
+      "ADDITIONAL_FLASH",
+      "ADDITIONAL_IMAGE",
+      "ALTERNATE_VIDEO",
+      "BACKUP_IMAGE",
+      "OTHER",
+      "PARENT_VIDEO",
+      "PRIMARY",
+      "TRANSCODED_VIDEO"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "size": {
+     "$ref": "Size",
+     "description": "Size associated with this creative asset. This is a required field when applicable; however for IMAGE and FLASH_INPAGE creatives, if left blank, this field will be automatically set using the actual size of the associated image asset. Applicable to the following creative types: ENHANCED_BANNER, ENHANCED_IMAGE, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA."
+    },
+    "sslCompliant": {
+     "type": "boolean",
+     "description": "Whether the asset is SSL-compliant. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT."
+    },
+    "startTimeType": {
+     "type": "string",
+     "description": "Initial wait time type before making the asset visible. Applicable to the following creative types: all RICH_MEDIA.",
+     "enum": [
+      "ASSET_START_TIME_TYPE_CUSTOM",
+      "ASSET_START_TIME_TYPE_NONE"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "streamingServingUrl": {
+     "type": "string",
+     "description": "Streaming URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID."
+    },
+    "transparency": {
+     "type": "boolean",
+     "description": "Whether the asset is transparent. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable to HTML5 assets."
+    },
+    "verticallyLocked": {
+     "type": "boolean",
+     "description": "Whether the asset is vertically locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA."
+    },
+    "videoDuration": {
+     "type": "number",
+     "description": "Detected video duration for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.",
+     "format": "float"
+    },
+    "windowMode": {
+     "type": "string",
+     "description": "Window mode options for flash assets. Applicable to the following creative types: FLASH_INPAGE, RICH_MEDIA_EXPANDING, RICH_MEDIA_IM_EXPAND, RICH_MEDIA_INPAGE, and RICH_MEDIA_INPAGE_FLOATING.",
+     "enum": [
+      "OPAQUE",
+      "TRANSPARENT",
+      "WINDOW"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "zIndex": {
+     "type": "integer",
+     "description": "zIndex value of an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable to assets whose displayType is NOT one of the following types: ASSET_DISPLAY_TYPE_INPAGE or ASSET_DISPLAY_TYPE_OVERLAY.",
+     "format": "int32"
+    },
+    "zipFilename": {
+     "type": "string",
+     "description": "File name of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER."
+    },
+    "zipFilesize": {
+     "type": "string",
+     "description": "Size of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER."
+    }
+   }
+  },
+  "CreativeAssetId": {
+   "id": "CreativeAssetId",
+   "type": "object",
+   "description": "Creative Asset ID.",
+   "properties": {
+    "name": {
+     "type": "string",
+     "description": "Name of the creative asset. This is a required field while inserting an asset. After insertion, this assetIdentifier is used to identify the uploaded asset. Characters in the name must be alphanumeric or one of the following: \".-_ \". Spaces are allowed."
+    },
+    "type": {
+     "type": "string",
+     "description": "Type of asset to upload. This is a required field. IMAGE is solely used for IMAGE creatives. Other image assets should use HTML_IMAGE.",
+     "enum": [
+      "FLASH",
+      "HTML",
+      "HTML_IMAGE",
+      "IMAGE",
+      "VIDEO"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "CreativeAssetMetadata": {
+   "id": "CreativeAssetMetadata",
+   "type": "object",
+   "description": "CreativeAssets contains properties of a creative asset file which will be uploaded or has already been uploaded. Refer to the creative sample code for how to upload assets and insert a creative.",
+   "properties": {
+    "assetIdentifier": {
+     "$ref": "CreativeAssetId",
+     "description": "ID of the creative asset. This is a required field."
+    },
+    "clickTags": {
+     "type": "array",
+     "description": "List of detected click tags for assets. This is a read-only auto-generated field.",
+     "items": {
+      "$ref": "ClickTag"
+     }
+    },
+    "detectedFeatures": {
+     "type": "array",
+     "description": "List of feature dependencies for the creative asset that are detected by DCM. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field.",
+     "items": {
+      "type": "string",
+      "enum": [
+       "APPLICATION_CACHE",
+       "AUDIO",
+       "CANVAS",
+       "CANVAS_TEXT",
+       "CSS_ANIMATIONS",
+       "CSS_BACKGROUND_SIZE",
+       "CSS_BORDER_IMAGE",
+       "CSS_BORDER_RADIUS",
+       "CSS_BOX_SHADOW",
+       "CSS_COLUMNS",
+       "CSS_FLEX_BOX",
+       "CSS_FONT_FACE",
+       "CSS_GENERATED_CONTENT",
+       "CSS_GRADIENTS",
+       "CSS_HSLA",
+       "CSS_MULTIPLE_BGS",
+       "CSS_OPACITY",
+       "CSS_REFLECTIONS",
+       "CSS_RGBA",
+       "CSS_TEXT_SHADOW",
+       "CSS_TRANSFORMS",
+       "CSS_TRANSFORMS3D",
+       "CSS_TRANSITIONS",
+       "DRAG_AND_DROP",
+       "GEO_LOCATION",
+       "HASH_CHANGE",
+       "HISTORY",
+       "INDEXED_DB",
+       "INLINE_SVG",
+       "INPUT_ATTR_AUTOCOMPLETE",
+       "INPUT_ATTR_AUTOFOCUS",
+       "INPUT_ATTR_LIST",
+       "INPUT_ATTR_MAX",
+       "INPUT_ATTR_MIN",
+       "INPUT_ATTR_MULTIPLE",
+       "INPUT_ATTR_PATTERN",
+       "INPUT_ATTR_PLACEHOLDER",
+       "INPUT_ATTR_REQUIRED",
+       "INPUT_ATTR_STEP",
+       "INPUT_TYPE_COLOR",
+       "INPUT_TYPE_DATE",
+       "INPUT_TYPE_DATETIME",
+       "INPUT_TYPE_DATETIME_LOCAL",
+       "INPUT_TYPE_EMAIL",
+       "INPUT_TYPE_MONTH",
+       "INPUT_TYPE_NUMBER",
+       "INPUT_TYPE_RANGE",
+       "INPUT_TYPE_SEARCH",
+       "INPUT_TYPE_TEL",
+       "INPUT_TYPE_TIME",
+       "INPUT_TYPE_URL",
+       "INPUT_TYPE_WEEK",
+       "LOCAL_STORAGE",
+       "POST_MESSAGE",
+       "SESSION_STORAGE",
+       "SMIL",
+       "SVG_CLIP_PATHS",
+       "SVG_FE_IMAGE",
+       "SVG_FILTERS",
+       "SVG_HREF",
+       "TOUCH",
+       "VIDEO",
+       "WEBGL",
+       "WEB_SOCKETS",
+       "WEB_SQL_DATABASE",
+       "WEB_WORKERS"
+      ],
+      "enumDescriptions": [
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       ""
+      ]
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeAssetMetadata\".",
+     "default": "dfareporting#creativeAssetMetadata"
+    },
+    "warnedValidationRules": {
+     "type": "array",
+     "description": "Rules validated during code generation that generated a warning. This is a read-only, auto-generated field.\n\nPossible values are:\n- \"CLICK_TAG_NON_TOP_LEVEL\"\n- \"CLICK_TAG_MISSING\"\n- \"CLICK_TAG_MORE_THAN_ONE\"\n- \"CLICK_TAG_INVALID\"\n- \"ORPHANED_ASSET\"\n- \"PRIMARY_HTML_MISSING\"\n- \"EXTERNAL_FILE_REFERENCED\"\n- \"MRAID_REFERENCED\"\n- \"ADMOB_REFERENCED\"\n- \"FILE_TYPE_INVALID\"\n- \"ZIP_INVALID\"\n- \"LINKED_FILE_NOT_FOUND\"\n- \"MAX_FLASH_VERSION_11\"\n- \"NOT_SSL_COMPLIANT\"\n- \"FILE_DETAIL_EMPTY\"\n- \"ASSET_INVALID\"\n- \"GWD_PROPERTIES_INVALID\"\n- \"ENABLER_UNSUPPORTED_METHOD_DCM\"\n- \"ASSET_FORMAT_UNSUPPORTED_DCM\"\n- \"COMPONENT_UNSUPPORTED_DCM\"\n- \"HTML5_FEATURE_UNSUPPORTED' \"",
+     "items": {
+      "type": "string",
+      "enum": [
+       "ADMOB_REFERENCED",
+       "ASSET_FORMAT_UNSUPPORTED_DCM",
+       "ASSET_INVALID",
+       "CLICK_TAG_HARD_CODED",
+       "CLICK_TAG_INVALID",
+       "CLICK_TAG_IN_GWD",
+       "CLICK_TAG_MISSING",
+       "CLICK_TAG_MORE_THAN_ONE",
+       "CLICK_TAG_NON_TOP_LEVEL",
+       "COMPONENT_UNSUPPORTED_DCM",
+       "ENABLER_UNSUPPORTED_METHOD_DCM",
+       "EXTERNAL_FILE_REFERENCED",
+       "FILE_DETAIL_EMPTY",
+       "FILE_TYPE_INVALID",
+       "GWD_PROPERTIES_INVALID",
+       "HTML5_FEATURE_UNSUPPORTED",
+       "LINKED_FILE_NOT_FOUND",
+       "MAX_FLASH_VERSION_11",
+       "MRAID_REFERENCED",
+       "NOT_SSL_COMPLIANT",
+       "ORPHANED_ASSET",
+       "PRIMARY_HTML_MISSING",
+       "ZIP_INVALID"
+      ],
+      "enumDescriptions": [
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       ""
+      ]
+     }
+    }
+   }
+  },
+  "CreativeAssignment": {
+   "id": "CreativeAssignment",
+   "type": "object",
+   "description": "Creative Assignment.",
+   "properties": {
+    "active": {
+     "type": "boolean",
+     "description": "Whether this creative assignment is active. When true, the creative will be included in the ad's rotation."
+    },
+    "applyEventTags": {
+     "type": "boolean",
+     "description": "Whether applicable event tags should fire when this creative assignment is rendered. If this value is unset when the ad is inserted or updated, it will default to true for all creative types EXCEPT for INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO."
+    },
+    "clickThroughUrl": {
+     "$ref": "ClickThroughUrl",
+     "description": "Click-through URL of the creative assignment."
+    },
+    "companionCreativeOverrides": {
+     "type": "array",
+     "description": "Companion creative overrides for this creative assignment. Applicable to video ads.",
+     "items": {
+      "$ref": "CompanionClickThroughOverride"
+     }
+    },
+    "creativeGroupAssignments": {
+     "type": "array",
+     "description": "Creative group assignments for this creative assignment. Only one assignment per creative group number is allowed for a maximum of two assignments.",
+     "items": {
+      "$ref": "CreativeGroupAssignment"
+     }
+    },
+    "creativeId": {
+     "type": "string",
+     "description": "ID of the creative to be assigned. This is a required field.",
+     "format": "int64"
+    },
+    "creativeIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the creative. This is a read-only, auto-generated field."
+    },
+    "endTime": {
+     "type": "string",
+     "description": "Date and time that the assigned creative should stop serving. Must be later than the start time.",
+     "format": "date-time"
+    },
+    "richMediaExitOverrides": {
+     "type": "array",
+     "description": "Rich media exit overrides for this creative assignment.\nApplicable when the creative type is any of the following: \n- RICH_MEDIA_INPAGE\n- RICH_MEDIA_INPAGE_FLOATING\n- RICH_MEDIA_IM_EXPAND\n- RICH_MEDIA_EXPANDING\n- RICH_MEDIA_INTERSTITIAL_FLOAT\n- RICH_MEDIA_MOBILE_IN_APP\n- RICH_MEDIA_MULTI_FLOATING\n- RICH_MEDIA_PEEL_DOWN\n- ADVANCED_BANNER\n- VPAID_LINEAR\n- VPAID_NON_LINEAR",
+     "items": {
+      "$ref": "RichMediaExitOverride"
+     }
+    },
+    "sequence": {
+     "type": "integer",
+     "description": "Sequence number of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_SEQUENTIAL.",
+     "format": "int32"
+    },
+    "sslCompliant": {
+     "type": "boolean",
+     "description": "Whether the creative to be assigned is SSL-compliant. This is a read-only field that is auto-generated when the ad is inserted or updated."
+    },
+    "startTime": {
+     "type": "string",
+     "description": "Date and time that the assigned creative should start serving.",
+     "format": "date-time"
+    },
+    "weight": {
+     "type": "integer",
+     "description": "Weight of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_RANDOM.",
+     "format": "int32"
+    }
+   }
+  },
+  "CreativeCustomEvent": {
+   "id": "CreativeCustomEvent",
+   "type": "object",
+   "description": "Creative Custom Event.",
+   "properties": {
+    "advertiserCustomEventId": {
+     "type": "string",
+     "description": "Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.",
+     "format": "int64"
+    },
+    "advertiserCustomEventName": {
+     "type": "string",
+     "description": "User-entered name for the event."
+    },
+    "advertiserCustomEventType": {
+     "type": "string",
+     "description": "Type of the event. This is a read-only field.",
+     "enum": [
+      "ADVERTISER_EVENT_COUNTER",
+      "ADVERTISER_EVENT_EXIT",
+      "ADVERTISER_EVENT_TIMER"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "artworkLabel": {
+     "type": "string",
+     "description": "Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion."
+    },
+    "artworkType": {
+     "type": "string",
+     "description": "Artwork type used by the creative.This is a read-only field.",
+     "enum": [
+      "ARTWORK_TYPE_FLASH",
+      "ARTWORK_TYPE_HTML5",
+      "ARTWORK_TYPE_IMAGE",
+      "ARTWORK_TYPE_MIXED"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "exitUrl": {
+     "type": "string",
+     "description": "Exit URL of the event. This field is used only for exit events."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this event. This is a required field and should not be modified after insertion.",
+     "format": "int64"
+    },
+    "popupWindowProperties": {
+     "$ref": "PopupWindowProperties",
+     "description": "Properties for rich media popup windows. This field is used only for exit events."
+    },
+    "targetType": {
+     "type": "string",
+     "description": "Target type used by the event.",
+     "enum": [
+      "TARGET_BLANK",
+      "TARGET_PARENT",
+      "TARGET_POPUP",
+      "TARGET_SELF",
+      "TARGET_TOP"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "videoReportingId": {
+     "type": "string",
+     "description": "Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field."
+    }
+   }
+  },
+  "CreativeField": {
+   "id": "CreativeField",
+   "type": "object",
+   "description": "Contains properties of a creative field.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this creative field. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of this creative field. This is a required field on insertion.",
+     "format": "int64"
+    },
+    "advertiserIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this creative field. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeField\".",
+     "default": "dfareporting#creativeField"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this creative field. This is a required field and must be less than 256 characters long and unique among creative fields of the same advertiser."
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this creative field. This is a read-only field that can be left blank.",
+     "format": "int64"
+    }
+   }
+  },
+  "CreativeFieldAssignment": {
+   "id": "CreativeFieldAssignment",
+   "type": "object",
+   "description": "Creative Field Assignment.",
+   "properties": {
+    "creativeFieldId": {
+     "type": "string",
+     "description": "ID of the creative field.",
+     "format": "int64"
+    },
+    "creativeFieldValueId": {
+     "type": "string",
+     "description": "ID of the creative field value.",
+     "format": "int64"
+    }
+   }
+  },
+  "CreativeFieldValue": {
+   "id": "CreativeFieldValue",
+   "type": "object",
+   "description": "Contains properties of a creative field value.",
+   "properties": {
+    "id": {
+     "type": "string",
+     "description": "ID of this creative field value. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeFieldValue\".",
+     "default": "dfareporting#creativeFieldValue"
+    },
+    "value": {
+     "type": "string",
+     "description": "Value of this creative field value. It needs to be less than 256 characters in length and unique per creative field."
+    }
+   }
+  },
+  "CreativeFieldValuesListResponse": {
+   "id": "CreativeFieldValuesListResponse",
+   "type": "object",
+   "description": "Creative Field Value List Response",
+   "properties": {
+    "creativeFieldValues": {
+     "type": "array",
+     "description": "Creative field value collection.",
+     "items": {
+      "$ref": "CreativeFieldValue"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeFieldValuesListResponse\".",
+     "default": "dfareporting#creativeFieldValuesListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "CreativeFieldsListResponse": {
+   "id": "CreativeFieldsListResponse",
+   "type": "object",
+   "description": "Creative Field List Response",
+   "properties": {
+    "creativeFields": {
+     "type": "array",
+     "description": "Creative field collection.",
+     "items": {
+      "$ref": "CreativeField"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeFieldsListResponse\".",
+     "default": "dfareporting#creativeFieldsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "CreativeGroup": {
+   "id": "CreativeGroup",
+   "type": "object",
+   "description": "Contains properties of a creative group.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this creative group. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of this creative group. This is a required field on insertion.",
+     "format": "int64"
+    },
+    "advertiserIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+    },
+    "groupNumber": {
+     "type": "integer",
+     "description": "Subgroup of the creative group. Assign your creative groups to one of the following subgroups in order to filter or manage them more easily. This field is required on insertion and is read-only after insertion.\nAcceptable values are: \n- 1\n- 2",
+     "format": "int32"
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this creative group. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeGroup\".",
+     "default": "dfareporting#creativeGroup"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this creative group. This is a required field and must be less than 256 characters long and unique among creative groups of the same advertiser."
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this creative group. This is a read-only field that can be left blank.",
+     "format": "int64"
+    }
+   }
+  },
+  "CreativeGroupAssignment": {
+   "id": "CreativeGroupAssignment",
+   "type": "object",
+   "description": "Creative Group Assignment.",
+   "properties": {
+    "creativeGroupId": {
+     "type": "string",
+     "description": "ID of the creative group to be assigned.",
+     "format": "int64"
+    },
+    "creativeGroupNumber": {
+     "type": "string",
+     "description": "Creative group number of the creative group assignment.",
+     "enum": [
+      "CREATIVE_GROUP_ONE",
+      "CREATIVE_GROUP_TWO"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "CreativeGroupsListResponse": {
+   "id": "CreativeGroupsListResponse",
+   "type": "object",
+   "description": "Creative Group List Response",
+   "properties": {
+    "creativeGroups": {
+     "type": "array",
+     "description": "Creative group collection.",
+     "items": {
+      "$ref": "CreativeGroup"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeGroupsListResponse\".",
+     "default": "dfareporting#creativeGroupsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "CreativeOptimizationConfiguration": {
+   "id": "CreativeOptimizationConfiguration",
+   "type": "object",
+   "description": "Creative optimization settings.",
+   "properties": {
+    "id": {
+     "type": "string",
+     "description": "ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.",
+     "format": "int64"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this creative optimization config. This is a required field and must be less than 129 characters long."
+    },
+    "optimizationActivitys": {
+     "type": "array",
+     "description": "List of optimization activities associated with this configuration.",
+     "items": {
+      "$ref": "OptimizationActivity"
+     }
+    },
+    "optimizationModel": {
+     "type": "string",
+     "description": "Optimization model for this configuration.",
+     "enum": [
+      "CLICK",
+      "POST_CLICK",
+      "POST_CLICK_AND_IMPRESSION",
+      "POST_IMPRESSION",
+      "VIDEO_COMPLETION"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "CreativeRotation": {
+   "id": "CreativeRotation",
+   "type": "object",
+   "description": "Creative Rotation.",
+   "properties": {
+    "creativeAssignments": {
+     "type": "array",
+     "description": "Creative assignments in this creative rotation.",
+     "items": {
+      "$ref": "CreativeAssignment"
+     }
+    },
+    "creativeOptimizationConfigurationId": {
+     "type": "string",
+     "description": "Creative optimization configuration that is used by this ad. It should refer to one of the existing optimization configurations in the ad's campaign. If it is unset or set to 0, then the campaign's default optimization configuration will be used for this ad.",
+     "format": "int64"
+    },
+    "type": {
+     "type": "string",
+     "description": "Type of creative rotation. Can be used to specify whether to use sequential or random rotation.",
+     "enum": [
+      "CREATIVE_ROTATION_TYPE_RANDOM",
+      "CREATIVE_ROTATION_TYPE_SEQUENTIAL"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "weightCalculationStrategy": {
+     "type": "string",
+     "description": "Strategy for calculating weights. Used with CREATIVE_ROTATION_TYPE_RANDOM.",
+     "enum": [
+      "WEIGHT_STRATEGY_CUSTOM",
+      "WEIGHT_STRATEGY_EQUAL",
+      "WEIGHT_STRATEGY_HIGHEST_CTR",
+      "WEIGHT_STRATEGY_OPTIMIZED"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "CreativeSettings": {
+   "id": "CreativeSettings",
+   "type": "object",
+   "description": "Creative Settings",
+   "properties": {
+    "iFrameFooter": {
+     "type": "string",
+     "description": "Header text for iFrames for this site. Must be less than or equal to 2000 characters long."
+    },
+    "iFrameHeader": {
+     "type": "string",
+     "description": "Header text for iFrames for this site. Must be less than or equal to 2000 characters long."
+    }
+   }
+  },
+  "CreativesListResponse": {
+   "id": "CreativesListResponse",
+   "type": "object",
+   "description": "Creative List Response",
+   "properties": {
+    "creatives": {
+     "type": "array",
+     "description": "Creative collection.",
+     "items": {
+      "$ref": "Creative"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativesListResponse\".",
+     "default": "dfareporting#creativesListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "CrossDimensionReachReportCompatibleFields": {
+   "id": "CrossDimensionReachReportCompatibleFields",
+   "type": "object",
+   "description": "Represents fields that are compatible to be selected for a report of type \"CROSS_DIMENSION_REACH\".",
+   "properties": {
+    "breakdown": {
+     "type": "array",
+     "description": "Dimensions which are compatible to be selected in the \"breakdown\" section of the report.",
+     "items": {
+      "$ref": "Dimension"
+     }
+    },
+    "dimensionFilters": {
+     "type": "array",
+     "description": "Dimensions which are compatible to be selected in the \"dimensionFilters\" section of the report.",
+     "items": {
+      "$ref": "Dimension"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#crossDimensionReachReportCompatibleFields.",
+     "default": "dfareporting#crossDimensionReachReportCompatibleFields"
+    },
+    "metrics": {
+     "type": "array",
+     "description": "Metrics which are compatible to be selected in the \"metricNames\" section of the report.",
+     "items": {
+      "$ref": "Metric"
+     }
+    },
+    "overlapMetrics": {
+     "type": "array",
+     "description": "Metrics which are compatible to be selected in the \"overlapMetricNames\" section of the report.",
+     "items": {
+      "$ref": "Metric"
+     }
+    }
+   }
+  },
+  "CustomRichMediaEvents": {
+   "id": "CustomRichMediaEvents",
+   "type": "object",
+   "description": "Represents a Custom Rich Media Events group.",
+   "properties": {
+    "filteredEventIds": {
+     "type": "array",
+     "description": "List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.",
+     "items": {
+      "$ref": "DimensionValue"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#customRichMediaEvents.",
+     "default": "dfareporting#customRichMediaEvents"
+    }
+   }
+  },
+  "DateRange": {
+   "id": "DateRange",
+   "type": "object",
+   "description": "Represents a date range.",
+   "properties": {
+    "endDate": {
+     "type": "string",
+     "description": "The end date of the date range, inclusive. A string of the format: \"yyyy-MM-dd\".",
+     "format": "date"
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#dateRange.",
+     "default": "dfareporting#dateRange"
+    },
+    "relativeDateRange": {
+     "type": "string",
+     "description": "The date range relative to the date of when the report is run.",
+     "enum": [
+      "LAST_24_MONTHS",
+      "LAST_30_DAYS",
+      "LAST_365_DAYS",
+      "LAST_7_DAYS",
+      "LAST_90_DAYS",
+      "MONTH_TO_DATE",
+      "PREVIOUS_MONTH",
+      "PREVIOUS_QUARTER",
+      "PREVIOUS_WEEK",
+      "PREVIOUS_YEAR",
+      "QUARTER_TO_DATE",
+      "TODAY",
+      "WEEK_TO_DATE",
+      "YEAR_TO_DATE",
+      "YESTERDAY"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "startDate": {
+     "type": "string",
+     "description": "The start date of the date range, inclusive. A string of the format: \"yyyy-MM-dd\".",
+     "format": "date"
+    }
+   }
+  },
+  "DayPartTargeting": {
+   "id": "DayPartTargeting",
+   "type": "object",
+   "description": "Day Part Targeting.",
+   "properties": {
+    "daysOfWeek": {
+     "type": "array",
+     "description": "Days of the week when the ad will serve.\n\nAcceptable values are:\n- \"SUNDAY\"\n- \"MONDAY\"\n- \"TUESDAY\"\n- \"WEDNESDAY\"\n- \"THURSDAY\"\n- \"FRIDAY\"\n- \"SATURDAY\"",
+     "items": {
+      "type": "string",
+      "enum": [
+       "FRIDAY",
+       "MONDAY",
+       "SATURDAY",
+       "SUNDAY",
+       "THURSDAY",
+       "TUESDAY",
+       "WEDNESDAY"
+      ],
+      "enumDescriptions": [
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       ""
+      ]
+     }
+    },
+    "hoursOfDay": {
+     "type": "array",
+     "description": "Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.",
+     "items": {
+      "type": "integer",
+      "format": "int32"
+     }
+    },
+    "userLocalTime": {
+     "type": "boolean",
+     "description": "Whether or not to use the user's local time. If false, the America/New York time zone applies."
+    }
+   }
+  },
+  "DefaultClickThroughEventTagProperties": {
+   "id": "DefaultClickThroughEventTagProperties",
+   "type": "object",
+   "description": "Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further.",
+   "properties": {
+    "defaultClickThroughEventTagId": {
+     "type": "string",
+     "description": "ID of the click-through event tag to apply to all ads in this entity's scope.",
+     "format": "int64"
+    },
+    "overrideInheritedEventTag": {
+     "type": "boolean",
+     "description": "Whether this entity should override the inherited default click-through event tag with its own defined value."
+    }
+   }
+  },
+  "DeliverySchedule": {
+   "id": "DeliverySchedule",
+   "type": "object",
+   "description": "Delivery Schedule.",
+   "properties": {
+    "frequencyCap": {
+     "$ref": "FrequencyCap",
+     "description": "Limit on the number of times an individual user can be served the ad within a specified period of time."
+    },
+    "hardCutoff": {
+     "type": "boolean",
+     "description": "Whether or not hard cutoff is enabled. If true, the ad will not serve after the end date and time. Otherwise the ad will continue to be served until it has reached its delivery goals."
+    },
+    "impressionRatio": {
+     "type": "string",
+     "description": "Impression ratio for this ad. This ratio determines how often each ad is served relative to the others. For example, if ad A has an impression ratio of 1 and ad B has an impression ratio of 3, then DCM will serve ad B three times as often as ad A. Must be between 1 and 10.",
+     "format": "int64"
+    },
+    "priority": {
+     "type": "string",
+     "description": "Serving priority of an ad, with respect to other ads. The lower the priority number, the greater the priority with which it is served.",
+     "enum": [
+      "AD_PRIORITY_01",
+      "AD_PRIORITY_02",
+      "AD_PRIORITY_03",
+      "AD_PRIORITY_04",
+      "AD_PRIORITY_05",
+      "AD_PRIORITY_06",
+      "AD_PRIORITY_07",
+      "AD_PRIORITY_08",
+      "AD_PRIORITY_09",
+      "AD_PRIORITY_10",
+      "AD_PRIORITY_11",
+      "AD_PRIORITY_12",
+      "AD_PRIORITY_13",
+      "AD_PRIORITY_14",
+      "AD_PRIORITY_15",
+      "AD_PRIORITY_16"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "DfpSettings": {
+   "id": "DfpSettings",
+   "type": "object",
+   "description": "DFP Settings",
+   "properties": {
+    "dfp_network_code": {
+     "type": "string",
+     "description": "DFP network code for this directory site."
+    },
+    "dfp_network_name": {
+     "type": "string",
+     "description": "DFP network name for this directory site."
+    },
+    "programmaticPlacementAccepted": {
+     "type": "boolean",
+     "description": "Whether this directory site accepts programmatic placements."
+    },
+    "pubPaidPlacementAccepted": {
+     "type": "boolean",
+     "description": "Whether this directory site accepts publisher-paid tags."
+    },
+    "publisherPortalOnly": {
+     "type": "boolean",
+     "description": "Whether this directory site is available only via DoubleClick Publisher Portal."
+    }
+   }
+  },
+  "Dimension": {
+   "id": "Dimension",
+   "type": "object",
+   "description": "Represents a dimension.",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#dimension.",
+     "default": "dfareporting#dimension"
+    },
+    "name": {
+     "type": "string",
+     "description": "The dimension name, e.g. dfa:advertiser"
+    }
+   }
+  },
+  "DimensionFilter": {
+   "id": "DimensionFilter",
+   "type": "object",
+   "description": "Represents a dimension filter.",
+   "properties": {
+    "dimensionName": {
+     "type": "string",
+     "description": "The name of the dimension to filter."
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#dimensionFilter.",
+     "default": "dfareporting#dimensionFilter"
+    },
+    "value": {
+     "type": "string",
+     "description": "The value of the dimension to filter."
+    }
+   }
+  },
+  "DimensionValue": {
+   "id": "DimensionValue",
+   "type": "object",
+   "description": "Represents a DimensionValue resource.",
+   "properties": {
+    "dimensionName": {
+     "type": "string",
+     "description": "The name of the dimension."
+    },
+    "etag": {
+     "type": "string",
+     "description": "The eTag of this response for caching purposes."
+    },
+    "id": {
+     "type": "string",
+     "description": "The ID associated with the value if available."
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#dimensionValue.",
+     "default": "dfareporting#dimensionValue"
+    },
+    "matchType": {
+     "type": "string",
+     "description": "Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.",
+     "enum": [
+      "BEGINS_WITH",
+      "CONTAINS",
+      "EXACT",
+      "WILDCARD_EXPRESSION"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "value": {
+     "type": "string",
+     "description": "The value of the dimension."
+    }
+   }
+  },
+  "DimensionValueList": {
+   "id": "DimensionValueList",
+   "type": "object",
+   "description": "Represents the list of DimensionValue resources.",
+   "properties": {
+    "etag": {
+     "type": "string",
+     "description": "The eTag of this response for caching purposes."
+    },
+    "items": {
+     "type": "array",
+     "description": "The dimension values returned in this response.",
+     "items": {
+      "$ref": "DimensionValue"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of list this is, in this case dfareporting#dimensionValueList.",
+     "default": "dfareporting#dimensionValueList"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Continuation token used to page through dimension values. To retrieve the next page of results, set the next request's \"pageToken\" to the value of this field. The page token is only valid for a limited amount of time and should not be persisted."
+    }
+   }
+  },
+  "DimensionValueRequest": {
+   "id": "DimensionValueRequest",
+   "type": "object",
+   "description": "Represents a DimensionValuesRequest.",
+   "properties": {
+    "dimensionName": {
+     "type": "string",
+     "description": "The name of the dimension for which values should be requested.",
+     "annotations": {
+      "required": [
+       "dfareporting.dimensionValues.query"
+      ]
+     }
+    },
+    "endDate": {
+     "type": "string",
+     "description": "The end date of the date range for which to retrieve dimension values. A string of the format \"yyyy-MM-dd\".",
+     "format": "date",
+     "annotations": {
+      "required": [
+       "dfareporting.dimensionValues.query"
+      ]
+     }
+    },
+    "filters": {
+     "type": "array",
+     "description": "The list of filters by which to filter values. The filters are ANDed.",
+     "items": {
+      "$ref": "DimensionFilter"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of request this is, in this case dfareporting#dimensionValueRequest.",
+     "default": "dfareporting#dimensionValueRequest"
+    },
+    "startDate": {
+     "type": "string",
+     "description": "The start date of the date range for which to retrieve dimension values. A string of the format \"yyyy-MM-dd\".",
+     "format": "date",
+     "annotations": {
+      "required": [
+       "dfareporting.dimensionValues.query"
+      ]
+     }
+    }
+   }
+  },
+  "DirectorySite": {
+   "id": "DirectorySite",
+   "type": "object",
+   "description": "DirectorySites contains properties of a website from the Site Directory. Sites need to be added to an account via the Sites resource before they can be assigned to a placement.",
+   "properties": {
+    "active": {
+     "type": "boolean",
+     "description": "Whether this directory site is active."
+    },
+    "contactAssignments": {
+     "type": "array",
+     "description": "Directory site contacts.",
+     "items": {
+      "$ref": "DirectorySiteContactAssignment"
+     }
+    },
+    "countryId": {
+     "type": "string",
+     "description": "Country ID of this directory site.",
+     "format": "int64"
+    },
+    "currencyId": {
+     "type": "string",
+     "description": "Currency ID of this directory site.\nPossible values are: \n- \"1\" for USD \n- \"2\" for GBP \n- \"3\" for ESP \n- \"4\" for SEK \n- \"5\" for CAD \n- \"6\" for JPY \n- \"7\" for DEM \n- \"8\" for AUD \n- \"9\" for FRF \n- \"10\" for ITL \n- \"11\" for DKK \n- \"12\" for NOK \n- \"13\" for FIM \n- \"14\" for ZAR \n- \"15\" for IEP \n- \"16\" for NLG \n- \"17\" for EUR \n- \"18\" for KRW \n- \"19\" for TWD \n- \"20\" for SGD \n- \"21\" for CNY \n- \"22\" for HKD \n- \"23\" for NZD \n- \"24\" for MYR \n- \"25\" for BRL \n- \"26\" for PTE \n- \"27\" for MXP \n- \"28\" for CLP \n- \"29\" for TRY \n- \"30\" for ARS \n- \"31\" for PEN \n- \"32\" for ILS \n- \"33\" for CHF \n- \"34\" for VEF \n- \"35\" for COP \n- \"36\" for GTQ \n- \"37\" for PLN \n- \"39\" for INR \n- \"40\" for THB \n- \"41\" for IDR \n- \"42\" for CZK \n- \"43\" for RON \n- \"44\" for HUF \n- \"45\" for RUB \n- \"46\" for AED \n- \"47\" for BGN \n- \"48\" for HRK",
+     "format": "int64"
+    },
+    "description": {
+     "type": "string",
+     "description": "Description of this directory site."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this directory site. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "idDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of this directory site. This is a read-only, auto-generated field."
+    },
+    "inpageTagFormats": {
+     "type": "array",
+     "description": "Tag types for regular placements.\n\nAcceptable values are:\n- \"STANDARD\"\n- \"IFRAME_JAVASCRIPT_INPAGE\"\n- \"INTERNAL_REDIRECT_INPAGE\"\n- \"JAVASCRIPT_INPAGE\"",
+     "items": {
+      "type": "string",
+      "enum": [
+       "IFRAME_JAVASCRIPT_INPAGE",
+       "INTERNAL_REDIRECT_INPAGE",
+       "JAVASCRIPT_INPAGE",
+       "STANDARD"
+      ],
+      "enumDescriptions": [
+       "",
+       "",
+       "",
+       ""
+      ]
+     }
+    },
+    "interstitialTagFormats": {
+     "type": "array",
+     "description": "Tag types for interstitial placements.\n\nAcceptable values are:\n- \"IFRAME_JAVASCRIPT_INTERSTITIAL\"\n- \"INTERNAL_REDIRECT_INTERSTITIAL\"\n- \"JAVASCRIPT_INTERSTITIAL\"",
+     "items": {
+      "type": "string",
+      "enum": [
+       "IFRAME_JAVASCRIPT_INTERSTITIAL",
+       "INTERNAL_REDIRECT_INTERSTITIAL",
+       "JAVASCRIPT_INTERSTITIAL"
+      ],
+      "enumDescriptions": [
+       "",
+       "",
+       ""
+      ]
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#directorySite\".",
+     "default": "dfareporting#directorySite"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this directory site."
+    },
+    "parentId": {
+     "type": "string",
+     "description": "Parent directory site ID.",
+     "format": "int64"
+    },
+    "settings": {
+     "$ref": "DirectorySiteSettings",
+     "description": "Directory site settings."
+    },
+    "url": {
+     "type": "string",
+     "description": "URL of this directory site."
+    }
+   }
+  },
+  "DirectorySiteContact": {
+   "id": "DirectorySiteContact",
+   "type": "object",
+   "description": "Contains properties of a Site Directory contact.",
+   "properties": {
+    "address": {
+     "type": "string",
+     "description": "Address of this directory site contact."
+    },
+    "email": {
+     "type": "string",
+     "description": "Email address of this directory site contact."
+    },
+    "firstName": {
+     "type": "string",
+     "description": "First name of this directory site contact."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this directory site contact. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#directorySiteContact\".",
+     "default": "dfareporting#directorySiteContact"
+    },
+    "lastName": {
+     "type": "string",
+     "description": "Last name of this directory site contact."
+    },
+    "phone": {
+     "type": "string",
+     "description": "Phone number of this directory site contact."
+    },
+    "role": {
+     "type": "string",
+     "description": "Directory site contact role.",
+     "enum": [
+      "ADMIN",
+      "EDIT",
+      "VIEW"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "title": {
+     "type": "string",
+     "description": "Title or designation of this directory site contact."
+    },
+    "type": {
+     "type": "string",
+     "description": "Directory site contact type.",
+     "enum": [
+      "BILLING",
+      "OTHER",
+      "SALES",
+      "TECHNICAL"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "DirectorySiteContactAssignment": {
+   "id": "DirectorySiteContactAssignment",
+   "type": "object",
+   "description": "Directory Site Contact Assignment",
+   "properties": {
+    "contactId": {
+     "type": "string",
+     "description": "ID of this directory site contact. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "visibility": {
+     "type": "string",
+     "description": "Visibility of this directory site contact assignment. When set to PUBLIC this contact assignment is visible to all account and agency users; when set to PRIVATE it is visible only to the site.",
+     "enum": [
+      "PRIVATE",
+      "PUBLIC"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "DirectorySiteContactsListResponse": {
+   "id": "DirectorySiteContactsListResponse",
+   "type": "object",
+   "description": "Directory Site Contact List Response",
+   "properties": {
+    "directorySiteContacts": {
+     "type": "array",
+     "description": "Directory site contact collection",
+     "items": {
+      "$ref": "DirectorySiteContact"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#directorySiteContactsListResponse\".",
+     "default": "dfareporting#directorySiteContactsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "DirectorySiteSettings": {
+   "id": "DirectorySiteSettings",
+   "type": "object",
+   "description": "Directory Site Settings",
+   "properties": {
+    "activeViewOptOut": {
+     "type": "boolean",
+     "description": "Whether this directory site has disabled active view creatives."
+    },
+    "dfp_settings": {
+     "$ref": "DfpSettings",
+     "description": "Directory site DFP settings."
+    },
+    "instream_video_placement_accepted": {
+     "type": "boolean",
+     "description": "Whether this site accepts in-stream video ads."
+    },
+    "interstitialPlacementAccepted": {
+     "type": "boolean",
+     "description": "Whether this site accepts interstitial ads."
+    },
+    "nielsenOcrOptOut": {
+     "type": "boolean",
+     "description": "Whether this directory site has disabled Nielsen OCR reach ratings."
+    },
+    "verificationTagOptOut": {
+     "type": "boolean",
+     "description": "Whether this directory site has disabled generation of Verification ins tags."
+    },
+    "videoActiveViewOptOut": {
+     "type": "boolean",
+     "description": "Whether this directory site has disabled active view for in-stream video creatives."
+    }
+   }
+  },
+  "DirectorySitesListResponse": {
+   "id": "DirectorySitesListResponse",
+   "type": "object",
+   "description": "Directory Site List Response",
+   "properties": {
+    "directorySites": {
+     "type": "array",
+     "description": "Directory site collection.",
+     "items": {
+      "$ref": "DirectorySite"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#directorySitesListResponse\".",
+     "default": "dfareporting#directorySitesListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "EventTag": {
+   "id": "EventTag",
+   "type": "object",
+   "description": "Contains properties of an event tag.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this event tag. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of this event tag. This field or the campaignId field is required on insertion.",
+     "format": "int64"
+    },
+    "advertiserIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+    },
+    "campaignId": {
+     "type": "string",
+     "description": "Campaign ID of this event tag. This field or the advertiserId field is required on insertion.",
+     "format": "int64"
+    },
+    "campaignIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the campaign. This is a read-only, auto-generated field."
+    },
+    "enabledByDefault": {
+     "type": "boolean",
+     "description": "Whether this event tag should be automatically enabled for all of the advertiser's campaigns and ads."
+    },
+    "excludeFromAdxRequests": {
+     "type": "boolean",
+     "description": "Whether to remove this event tag from ads that are trafficked through DoubleClick Bid Manager to Ad Exchange. This may be useful if the event tag uses a pixel that is unapproved for Ad Exchange bids on one or more networks, such as the Google Display Network."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this event tag. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#eventTag\".",
+     "default": "dfareporting#eventTag"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this event tag. This is a required field and must be less than 256 characters long."
+    },
+    "siteFilterType": {
+     "type": "string",
+     "description": "Site filter type for this event tag. If no type is specified then the event tag will be applied to all sites.",
+     "enum": [
+      "BLACKLIST",
+      "WHITELIST"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "siteIds": {
+     "type": "array",
+     "description": "Filter list of site IDs associated with this event tag. The siteFilterType determines whether this is a whitelist or blacklist filter.",
+     "items": {
+      "type": "string",
+      "format": "int64"
+     }
+    },
+    "sslCompliant": {
+     "type": "boolean",
+     "description": "Whether this tag is SSL-compliant or not. This is a read-only field."
+    },
+    "status": {
+     "type": "string",
+     "description": "Status of this event tag. Must be ENABLED for this event tag to fire. This is a required field.",
+     "enum": [
+      "DISABLED",
+      "ENABLED"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this event tag. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "type": {
+     "type": "string",
+     "description": "Event tag type. Can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking. This is a required field.",
+     "enum": [
+      "CLICK_THROUGH_EVENT_TAG",
+      "IMPRESSION_IMAGE_EVENT_TAG",
+      "IMPRESSION_JAVASCRIPT_EVENT_TAG"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "url": {
+     "type": "string",
+     "description": "Payload URL for this event tag. The URL on a click-through event tag should have a landing page URL appended to the end of it. This field is required on insertion."
+    },
+    "urlEscapeLevels": {
+     "type": "integer",
+     "description": "Number of times the landing page URL should be URL-escaped before being appended to the click-through event tag URL. Only applies to click-through event tags as specified by the event tag type.",
+     "format": "int32"
+    }
+   }
+  },
+  "EventTagOverride": {
+   "id": "EventTagOverride",
+   "type": "object",
+   "description": "Event tag override information.",
+   "properties": {
+    "enabled": {
+     "type": "boolean",
+     "description": "Whether this override is enabled."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this event tag override. This is a read-only, auto-generated field.",
+     "format": "int64"
+    }
+   }
+  },
+  "EventTagsListResponse": {
+   "id": "EventTagsListResponse",
+   "type": "object",
+   "description": "Event Tag List Response",
+   "properties": {
+    "eventTags": {
+     "type": "array",
+     "description": "Event tag collection.",
+     "items": {
+      "$ref": "EventTag"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#eventTagsListResponse\".",
+     "default": "dfareporting#eventTagsListResponse"
+    }
+   }
+  },
+  "File": {
+   "id": "File",
+   "type": "object",
+   "description": "Represents a File resource. A file contains the metadata for a report run. It shows the status of the run and holds the URLs to the generated report data if the run is finished and the status is \"REPORT_AVAILABLE\".",
+   "properties": {
+    "dateRange": {
+     "$ref": "DateRange",
+     "description": "The date range for which the file has report data. The date range will always be the absolute date range for which the report is run."
+    },
+    "etag": {
+     "type": "string",
+     "description": "The eTag of this response for caching purposes."
+    },
+    "fileName": {
+     "type": "string",
+     "description": "The filename of the file."
+    },
+    "format": {
+     "type": "string",
+     "description": "The output format of the report. Only available once the file is available.",
+     "enum": [
+      "CSV",
+      "EXCEL"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "id": {
+     "type": "string",
+     "description": "The unique ID of this report file.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#file.",
+     "default": "dfareporting#file"
+    },
+    "lastModifiedTime": {
+     "type": "string",
+     "description": "The timestamp in milliseconds since epoch when this file was last modified.",
+     "format": "int64"
+    },
+    "reportId": {
+     "type": "string",
+     "description": "The ID of the report this file was generated from.",
+     "format": "int64"
+    },
+    "status": {
+     "type": "string",
+     "description": "The status of the report file.",
+     "enum": [
+      "CANCELLED",
+      "FAILED",
+      "PROCESSING",
+      "REPORT_AVAILABLE"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "urls": {
+     "type": "object",
+     "description": "The URLs where the completed report file can be downloaded.",
+     "properties": {
+      "apiUrl": {
+       "type": "string",
+       "description": "The URL for downloading the report data through the API."
+      },
+      "browserUrl": {
+       "type": "string",
+       "description": "The URL for downloading the report data through a browser."
+      }
+     }
+    }
+   }
+  },
+  "FileList": {
+   "id": "FileList",
+   "type": "object",
+   "description": "Represents the list of File resources.",
+   "properties": {
+    "etag": {
+     "type": "string",
+     "description": "The eTag of this response for caching purposes."
+    },
+    "items": {
+     "type": "array",
+     "description": "The files returned in this response.",
+     "items": {
+      "$ref": "File"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of list this is, in this case dfareporting#fileList.",
+     "default": "dfareporting#fileList"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Continuation token used to page through files. To retrieve the next page of results, set the next request's \"pageToken\" to the value of this field. The page token is only valid for a limited amount of time and should not be persisted."
+    }
+   }
+  },
+  "Flight": {
+   "id": "Flight",
+   "type": "object",
+   "description": "Flight",
+   "properties": {
+    "endDate": {
+     "type": "string",
+     "description": "Inventory item flight end date.",
+     "format": "date"
+    },
+    "rateOrCost": {
+     "type": "string",
+     "description": "Rate or cost of this flight.",
+     "format": "int64"
+    },
+    "startDate": {
+     "type": "string",
+     "description": "Inventory item flight start date.",
+     "format": "date"
+    },
+    "units": {
+     "type": "string",
+     "description": "Units of this flight.",
+     "format": "int64"
+    }
+   }
+  },
+  "FloodlightActivitiesGenerateTagResponse": {
+   "id": "FloodlightActivitiesGenerateTagResponse",
+   "type": "object",
+   "description": "Floodlight Activity GenerateTag Response",
+   "properties": {
+    "floodlightActivityTag": {
+     "type": "string",
+     "description": "Generated tag for this floodlight activity."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#floodlightActivitiesGenerateTagResponse\".",
+     "default": "dfareporting#floodlightActivitiesGenerateTagResponse"
+    }
+   }
+  },
+  "FloodlightActivitiesListResponse": {
+   "id": "FloodlightActivitiesListResponse",
+   "type": "object",
+   "description": "Floodlight Activity List Response",
+   "properties": {
+    "floodlightActivities": {
+     "type": "array",
+     "description": "Floodlight activity collection.",
+     "items": {
+      "$ref": "FloodlightActivity"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#floodlightActivitiesListResponse\".",
+     "default": "dfareporting#floodlightActivitiesListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "FloodlightActivity": {
+   "id": "FloodlightActivity",
+   "type": "object",
+   "description": "Contains properties of a Floodlight activity.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this floodlight activity. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's advertiser or the existing activity's advertiser.",
+     "format": "int64"
+    },
+    "advertiserIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+    },
+    "cacheBustingType": {
+     "type": "string",
+     "description": "Code type used for cache busting in the generated tag.",
+     "enum": [
+      "ACTIVE_SERVER_PAGE",
+      "COLD_FUSION",
+      "JAVASCRIPT",
+      "JSP",
+      "PHP"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "countingMethod": {
+     "type": "string",
+     "description": "Counting method for conversions for this floodlight activity. This is a required field.",
+     "enum": [
+      "ITEMS_SOLD_COUNTING",
+      "SESSION_COUNTING",
+      "STANDARD_COUNTING",
+      "TRANSACTIONS_COUNTING",
+      "UNIQUE_COUNTING"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "defaultTags": {
+     "type": "array",
+     "description": "Dynamic floodlight tags.",
+     "items": {
+      "$ref": "FloodlightActivityDynamicTag"
+     }
+    },
+    "expectedUrl": {
+     "type": "string",
+     "description": "URL where this tag will be deployed. If specified, must be less than 256 characters long."
+    },
+    "floodlightActivityGroupId": {
+     "type": "string",
+     "description": "Floodlight activity group ID of this floodlight activity. This is a required field.",
+     "format": "int64"
+    },
+    "floodlightActivityGroupName": {
+     "type": "string",
+     "description": "Name of the associated floodlight activity group. This is a read-only field."
+    },
+    "floodlightActivityGroupTagString": {
+     "type": "string",
+     "description": "Tag string of the associated floodlight activity group. This is a read-only field."
+    },
+    "floodlightActivityGroupType": {
+     "type": "string",
+     "description": "Type of the associated floodlight activity group. This is a read-only field.",
+     "enum": [
+      "COUNTER",
+      "SALE"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "floodlightConfigurationId": {
+     "type": "string",
+     "description": "Floodlight configuration ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's floodlight configuration or from the existing activity's floodlight configuration.",
+     "format": "int64"
+    },
+    "floodlightConfigurationIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field."
+    },
+    "hidden": {
+     "type": "boolean",
+     "description": "Whether this activity is archived."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this floodlight activity. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "idDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of this floodlight activity. This is a read-only, auto-generated field."
+    },
+    "imageTagEnabled": {
+     "type": "boolean",
+     "description": "Whether the image tag is enabled for this activity."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#floodlightActivity\".",
+     "default": "dfareporting#floodlightActivity"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this floodlight activity. This is a required field. Must be less than 129 characters long and cannot contain quotes."
+    },
+    "notes": {
+     "type": "string",
+     "description": "General notes or implementation instructions for the tag."
+    },
+    "publisherTags": {
+     "type": "array",
+     "description": "Publisher dynamic floodlight tags.",
+     "items": {
+      "$ref": "FloodlightActivityPublisherDynamicTag"
+     }
+    },
+    "secure": {
+     "type": "boolean",
+     "description": "Whether this tag should use SSL."
+    },
+    "sslCompliant": {
+     "type": "boolean",
+     "description": "Whether the floodlight activity is SSL-compliant. This is a read-only field, its value detected by the system from the floodlight tags."
+    },
+    "sslRequired": {
+     "type": "boolean",
+     "description": "Whether this floodlight activity must be SSL-compliant."
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this floodlight activity. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "tagFormat": {
+     "type": "string",
+     "description": "Tag format type for the floodlight activity. If left blank, the tag format will default to HTML.",
+     "enum": [
+      "HTML",
+      "XHTML"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "tagString": {
+     "type": "string",
+     "description": "Value of the cat= paramter in the floodlight tag, which the ad servers use to identify the activity. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activities of the same activity group. This field is read-only after insertion."
+    },
+    "userDefinedVariableTypes": {
+     "type": "array",
+     "description": "List of the user-defined variables used by this conversion tag. These map to the \"u[1-20]=\" in the tags. Each of these can have a user defined type.\nAcceptable values are:\n- \"U1\"\n- \"U2\"\n- \"U3\"\n- \"U4\"\n- \"U5\"\n- \"U6\"\n- \"U7\"\n- \"U8\"\n- \"U9\"\n- \"U10\"\n- \"U11\"\n- \"U12\"\n- \"U13\"\n- \"U14\"\n- \"U15\"\n- \"U16\"\n- \"U17\"\n- \"U18\"\n- \"U19\"\n- \"U20\"",
+     "items": {
+      "type": "string",
+      "enum": [
+       "U1",
+       "U10",
+       "U11",
+       "U12",
+       "U13",
+       "U14",
+       "U15",
+       "U16",
+       "U17",
+       "U18",
+       "U19",
+       "U2",
+       "U20",
+       "U3",
+       "U4",
+       "U5",
+       "U6",
+       "U7",
+       "U8",
+       "U9"
+      ],
+      "enumDescriptions": [
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       ""
+      ]
+     }
+    }
+   }
+  },
+  "FloodlightActivityDynamicTag": {
+   "id": "FloodlightActivityDynamicTag",
+   "type": "object",
+   "description": "Dynamic Tag",
+   "properties": {
+    "id": {
+     "type": "string",
+     "description": "ID of this dynamic tag. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this tag."
+    },
+    "tag": {
+     "type": "string",
+     "description": "Tag code."
+    }
+   }
+  },
+  "FloodlightActivityGroup": {
+   "id": "FloodlightActivityGroup",
+   "type": "object",
+   "description": "Contains properties of a Floodlight activity group.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this floodlight activity group. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration's advertiser or from the existing activity group's advertiser.",
+     "format": "int64"
+    },
+    "advertiserIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+    },
+    "floodlightConfigurationId": {
+     "type": "string",
+     "description": "Floodlight configuration ID of this floodlight activity group. This is a required field.",
+     "format": "int64"
+    },
+    "floodlightConfigurationIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this floodlight activity group. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "idDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#floodlightActivityGroup\".",
+     "default": "dfareporting#floodlightActivityGroup"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes."
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "tagString": {
+     "type": "string",
+     "description": "Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion."
+    },
+    "type": {
+     "type": "string",
+     "description": "Type of the floodlight activity group. This is a required field that is read-only after insertion.",
+     "enum": [
+      "COUNTER",
+      "SALE"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "FloodlightActivityGroupsListResponse": {
+   "id": "FloodlightActivityGroupsListResponse",
+   "type": "object",
+   "description": "Floodlight Activity Group List Response",
+   "properties": {
+    "floodlightActivityGroups": {
+     "type": "array",
+     "description": "Floodlight activity group collection.",
+     "items": {
+      "$ref": "FloodlightActivityGroup"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#floodlightActivityGroupsListResponse\".",
+     "default": "dfareporting#floodlightActivityGroupsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "FloodlightActivityPublisherDynamicTag": {
+   "id": "FloodlightActivityPublisherDynamicTag",
+   "type": "object",
+   "description": "Publisher Dynamic Tag",
+   "properties": {
+    "clickThrough": {
+     "type": "boolean",
+     "description": "Whether this tag is applicable only for click-throughs."
+    },
+    "directorySiteId": {
+     "type": "string",
+     "description": "Directory site ID of this dynamic tag. This is a write-only field that can be used as an alternative to the siteId field. When this resource is retrieved, only the siteId field will be populated.",
+     "format": "int64"
+    },
+    "dynamicTag": {
+     "$ref": "FloodlightActivityDynamicTag",
+     "description": "Dynamic floodlight tag."
+    },
+    "siteId": {
+     "type": "string",
+     "description": "Site ID of this dynamic tag.",
+     "format": "int64"
+    },
+    "siteIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the site. This is a read-only, auto-generated field."
+    },
+    "viewThrough": {
+     "type": "boolean",
+     "description": "Whether this tag is applicable only for view-throughs."
+    }
+   }
+  },
+  "FloodlightConfiguration": {
+   "id": "FloodlightConfiguration",
+   "type": "object",
+   "description": "Contains properties of a Floodlight configuration.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this floodlight configuration. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of the parent advertiser of this floodlight configuration.",
+     "format": "int64"
+    },
+    "advertiserIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+    },
+    "analyticsDataSharingEnabled": {
+     "type": "boolean",
+     "description": "Whether advertiser data is shared with Google Analytics."
+    },
+    "exposureToConversionEnabled": {
+     "type": "boolean",
+     "description": "Whether the exposure-to-conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting."
+    },
+    "firstDayOfWeek": {
+     "type": "string",
+     "description": "Day that will be counted as the first day of the week in reports. This is a required field.",
+     "enum": [
+      "MONDAY",
+      "SUNDAY"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this floodlight configuration. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "idDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of this floodlight configuration. This is a read-only, auto-generated field."
+    },
+    "inAppAttributionTrackingEnabled": {
+     "type": "boolean",
+     "description": "Whether in-app attribution tracking is enabled."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#floodlightConfiguration\".",
+     "default": "dfareporting#floodlightConfiguration"
+    },
+    "lookbackConfiguration": {
+     "$ref": "LookbackConfiguration",
+     "description": "Lookback window settings for this floodlight configuration."
+    },
+    "naturalSearchConversionAttributionOption": {
+     "type": "string",
+     "description": "Types of attribution options for natural search conversions.",
+     "enum": [
+      "EXCLUDE_NATURAL_SEARCH_CONVERSION_ATTRIBUTION",
+      "INCLUDE_NATURAL_SEARCH_CONVERSION_ATTRIBUTION",
+      "INCLUDE_NATURAL_SEARCH_TIERED_CONVERSION_ATTRIBUTION"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "omnitureSettings": {
+     "$ref": "OmnitureSettings",
+     "description": "Settings for DCM Omniture integration."
+    },
+    "standardVariableTypes": {
+     "type": "array",
+     "description": "List of standard variables enabled for this configuration.\n\nAcceptable values are:\n- \"ORD\"\n- \"NUM\"",
+     "items": {
+      "type": "string",
+      "enum": [
+       "NUM",
+       "ORD",
+       "TRAN",
+       "U"
+      ],
+      "enumDescriptions": [
+       "",
+       "",
+       "",
+       ""
+      ]
+     }
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this floodlight configuration. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "tagSettings": {
+     "$ref": "TagSettings",
+     "description": "Configuration settings for dynamic and image floodlight tags."
+    },
+    "thirdPartyAuthenticationTokens": {
+     "type": "array",
+     "description": "List of third-party authentication tokens enabled for this configuration.",
+     "items": {
+      "$ref": "ThirdPartyAuthenticationToken"
+     }
+    },
+    "userDefinedVariableConfigurations": {
+     "type": "array",
+     "description": "List of user defined variables enabled for this configuration.",
+     "items": {
+      "$ref": "UserDefinedVariableConfiguration"
+     }
+    }
+   }
+  },
+  "FloodlightConfigurationsListResponse": {
+   "id": "FloodlightConfigurationsListResponse",
+   "type": "object",
+   "description": "Floodlight Configuration List Response",
+   "properties": {
+    "floodlightConfigurations": {
+     "type": "array",
+     "description": "Floodlight configuration collection.",
+     "items": {
+      "$ref": "FloodlightConfiguration"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#floodlightConfigurationsListResponse\".",
+     "default": "dfareporting#floodlightConfigurationsListResponse"
+    }
+   }
+  },
+  "FloodlightReportCompatibleFields": {
+   "id": "FloodlightReportCompatibleFields",
+   "type": "object",
+   "description": "Represents fields that are compatible to be selected for a report of type \"FlOODLIGHT\".",
+   "properties": {
+    "dimensionFilters": {
+     "type": "array",
+     "description": "Dimensions which are compatible to be selected in the \"dimensionFilters\" section of the report.",
+     "items": {
+      "$ref": "Dimension"
+     }
+    },
+    "dimensions": {
+     "type": "array",
+     "description": "Dimensions which are compatible to be selected in the \"dimensions\" section of the report.",
+     "items": {
+      "$ref": "Dimension"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#floodlightReportCompatibleFields.",
+     "default": "dfareporting#floodlightReportCompatibleFields"
+    },
+    "metrics": {
+     "type": "array",
+     "description": "Metrics which are compatible to be selected in the \"metricNames\" section of the report.",
+     "items": {
+      "$ref": "Metric"
+     }
+    }
+   }
+  },
+  "FrequencyCap": {
+   "id": "FrequencyCap",
+   "type": "object",
+   "description": "Frequency Cap.",
+   "properties": {
+    "duration": {
+     "type": "string",
+     "description": "Duration of time, in seconds, for this frequency cap. The maximum duration is 90 days in seconds, or 7,776,000.",
+     "format": "int64"
+    },
+    "impressions": {
+     "type": "string",
+     "description": "Number of times an individual user can be served the ad within the specified duration. The maximum allowed is 15.",
+     "format": "int64"
+    }
+   }
+  },
+  "FsCommand": {
+   "id": "FsCommand",
+   "type": "object",
+   "description": "FsCommand.",
+   "properties": {
+    "left": {
+     "type": "integer",
+     "description": "Distance from the left of the browser.Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.",
+     "format": "int32"
+    },
+    "positionOption": {
+     "type": "string",
+     "description": "Position in the browser where the window will open.",
+     "enum": [
+      "CENTERED",
+      "DISTANCE_FROM_TOP_LEFT_CORNER"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "top": {
+     "type": "integer",
+     "description": "Distance from the top of the browser. Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.",
+     "format": "int32"
+    },
+    "windowHeight": {
+     "type": "integer",
+     "description": "Height of the window.",
+     "format": "int32"
+    },
+    "windowWidth": {
+     "type": "integer",
+     "description": "Width of the window.",
+     "format": "int32"
+    }
+   }
+  },
+  "GeoTargeting": {
+   "id": "GeoTargeting",
+   "type": "object",
+   "description": "Geographical Targeting.",
+   "properties": {
+    "cities": {
+     "type": "array",
+     "description": "Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.",
+     "items": {
+      "$ref": "City"
+     }
+    },
+    "countries": {
+     "type": "array",
+     "description": "Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.",
+     "items": {
+      "$ref": "Country"
+     }
+    },
+    "excludeCountries": {
+     "type": "boolean",
+     "description": "Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad."
+    },
+    "metros": {
+     "type": "array",
+     "description": "Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.",
+     "items": {
+      "$ref": "Metro"
+     }
+    },
+    "postalCodes": {
+     "type": "array",
+     "description": "Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.",
+     "items": {
+      "$ref": "PostalCode"
+     }
+    },
+    "regions": {
+     "type": "array",
+     "description": "Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.",
+     "items": {
+      "$ref": "Region"
+     }
+    }
+   }
+  },
+  "InventoryItem": {
+   "id": "InventoryItem",
+   "type": "object",
+   "description": "Represents a buy from the DoubleClick Planning inventory store.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this inventory item.",
+     "format": "int64"
+    },
+    "adSlots": {
+     "type": "array",
+     "description": "Ad slots of this inventory item. If this inventory item represents a standalone placement, there will be exactly one ad slot. If this inventory item represents a placement group, there will be more than one ad slot, each representing one child placement in that placement group.",
+     "items": {
+      "$ref": "AdSlot"
+     }
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of this inventory item.",
+     "format": "int64"
+    },
+    "contentCategoryId": {
+     "type": "string",
+     "description": "Content category ID of this inventory item.",
+     "format": "int64"
+    },
+    "estimatedClickThroughRate": {
+     "type": "string",
+     "description": "Estimated click-through rate of this inventory item.",
+     "format": "int64"
+    },
+    "estimatedConversionRate": {
+     "type": "string",
+     "description": "Estimated conversion rate of this inventory item.",
+     "format": "int64"
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this inventory item.",
+     "format": "int64"
+    },
+    "inPlan": {
+     "type": "boolean",
+     "description": "Whether this inventory item is in plan."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#inventoryItem\".",
+     "default": "dfareporting#inventoryItem"
+    },
+    "lastModifiedInfo": {
+     "$ref": "LastModifiedInfo",
+     "description": "Information about the most recent modification of this inventory item."
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this inventory item. For standalone inventory items, this is the same name as that of its only ad slot. For group inventory items, this can differ from the name of any of its ad slots."
+    },
+    "negotiationChannelId": {
+     "type": "string",
+     "description": "Negotiation channel ID of this inventory item.",
+     "format": "int64"
+    },
+    "orderId": {
+     "type": "string",
+     "description": "Order ID of this inventory item.",
+     "format": "int64"
+    },
+    "placementStrategyId": {
+     "type": "string",
+     "description": "Placement strategy ID of this inventory item.",
+     "format": "int64"
+    },
+    "pricing": {
+     "$ref": "Pricing",
+     "description": "Pricing of this inventory item."
+    },
+    "projectId": {
+     "type": "string",
+     "description": "Project ID of this inventory item.",
+     "format": "int64"
+    },
+    "rfpId": {
+     "type": "string",
+     "description": "RFP ID of this inventory item.",
+     "format": "int64"
+    },
+    "siteId": {
+     "type": "string",
+     "description": "ID of the site this inventory item is associated with.",
+     "format": "int64"
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this inventory item.",
+     "format": "int64"
+    },
+    "type": {
+     "type": "string",
+     "description": "Type of inventory item.",
+     "enum": [
+      "PLANNING_PLACEMENT_TYPE_CREDIT",
+      "PLANNING_PLACEMENT_TYPE_REGULAR"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "InventoryItemsListResponse": {
+   "id": "InventoryItemsListResponse",
+   "type": "object",
+   "description": "Inventory item List Response",
+   "properties": {
+    "inventoryItems": {
+     "type": "array",
+     "description": "Inventory item collection",
+     "items": {
+      "$ref": "InventoryItem"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#inventoryItemsListResponse\".",
+     "default": "dfareporting#inventoryItemsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    }
+   }
+  },
+  "KeyValueTargetingExpression": {
+   "id": "KeyValueTargetingExpression",
+   "type": "object",
+   "description": "Key Value Targeting Expression.",
+   "properties": {
+    "expression": {
+     "type": "string",
+     "description": "Keyword expression being targeted by the ad."
+    }
+   }
+  },
+  "LandingPage": {
+   "id": "LandingPage",
+   "type": "object",
+   "description": "Contains information about where a user's browser is taken after the user clicks an ad.",
+   "properties": {
+    "default": {
+     "type": "boolean",
+     "description": "Whether or not this landing page will be assigned to any ads or creatives that do not have a landing page assigned explicitly. Only one default landing page is allowed per campaign."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this landing page. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#landingPage\".",
+     "default": "dfareporting#landingPage"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this landing page. This is a required field. It must be less than 256 characters long, and must be unique among landing pages of the same campaign."
+    },
+    "url": {
+     "type": "string",
+     "description": "URL of this landing page. This is a required field."
+    }
+   }
+  },
+  "LandingPagesListResponse": {
+   "id": "LandingPagesListResponse",
+   "type": "object",
+   "description": "Landing Page List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#landingPagesListResponse\".",
+     "default": "dfareporting#landingPagesListResponse"
+    },
+    "landingPages": {
+     "type": "array",
+     "description": "Landing page collection",
+     "items": {
+      "$ref": "LandingPage"
+     }
+    }
+   }
+  },
+  "LastModifiedInfo": {
+   "id": "LastModifiedInfo",
+   "type": "object",
+   "description": "Modification timestamp.",
+   "properties": {
+    "time": {
+     "type": "string",
+     "description": "Timestamp of the last change in milliseconds since epoch.",
+     "format": "int64"
+    }
+   }
+  },
+  "ListPopulationClause": {
+   "id": "ListPopulationClause",
+   "type": "object",
+   "description": "A group clause made up of list population terms representing constraints joined by ORs.",
+   "properties": {
+    "terms": {
+     "type": "array",
+     "description": "Terms of this list population clause. Each clause is made up of list population terms representing constraints and are joined by ORs.",
+     "items": {
+      "$ref": "ListPopulationTerm"
+     }
+    }
+   }
+  },
+  "ListPopulationRule": {
+   "id": "ListPopulationRule",
+   "type": "object",
+   "description": "Remarketing List Population Rule.",
+   "properties": {
+    "floodlightActivityId": {
+     "type": "string",
+     "description": "Floodlight activity ID associated with this rule. This field can be left blank.",
+     "format": "int64"
+    },
+    "floodlightActivityName": {
+     "type": "string",
+     "description": "Name of floodlight activity associated with this rule. This is a read-only, auto-generated field."
+    },
+    "listPopulationClauses": {
+     "type": "array",
+     "description": "Clauses that make up this list population rule. Clauses are joined by ANDs, and the clauses themselves are made up of list population terms which are joined by ORs.",
+     "items": {
+      "$ref": "ListPopulationClause"
+     }
+    }
+   }
+  },
+  "ListPopulationTerm": {
+   "id": "ListPopulationTerm",
+   "type": "object",
+   "description": "Remarketing List Population Rule Term.",
+   "properties": {
+    "contains": {
+     "type": "boolean",
+     "description": "Will be true if the term should check if the user is in the list and false if the term should check if the user is not in the list. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM. False by default."
+    },
+    "negation": {
+     "type": "boolean",
+     "description": "Whether to negate the comparison result of this term during rule evaluation. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM."
+    },
+    "operator": {
+     "type": "string",
+     "description": "Comparison operator of this term. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.",
+     "enum": [
+      "NUM_EQUALS",
+      "NUM_GREATER_THAN",
+      "NUM_GREATER_THAN_EQUAL",
+      "NUM_LESS_THAN",
+      "NUM_LESS_THAN_EQUAL",
+      "STRING_CONTAINS",
+      "STRING_EQUALS"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "remarketingListId": {
+     "type": "string",
+     "description": "ID of the list in question. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM.",
+     "format": "int64"
+    },
+    "type": {
+     "type": "string",
+     "description": "List population term type determines the applicable fields in this object. If left unset or set to CUSTOM_VARIABLE_TERM, then variableName, variableFriendlyName, operator, value, and negation are applicable. If set to LIST_MEMBERSHIP_TERM then remarketingListId and contains are applicable. If set to REFERRER_TERM then operator, value, and negation are applicable.",
+     "enum": [
+      "CUSTOM_VARIABLE_TERM",
+      "LIST_MEMBERSHIP_TERM",
+      "REFERRER_TERM"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "value": {
+     "type": "string",
+     "description": "Literal to compare the variable to. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM."
+    },
+    "variableFriendlyName": {
+     "type": "string",
+     "description": "Friendly name of this term's variable. This is a read-only, auto-generated field. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM."
+    },
+    "variableName": {
+     "type": "string",
+     "description": "Name of the variable (U1, U2, etc.) being compared in this term. This field is only relevant when type is set to null, CUSTOM_VARIABLE_TERM or REFERRER_TERM."
+    }
+   }
+  },
+  "ListTargetingExpression": {
+   "id": "ListTargetingExpression",
+   "type": "object",
+   "description": "Remarketing List Targeting Expression.",
+   "properties": {
+    "expression": {
+     "type": "string",
+     "description": "Expression describing which lists are being targeted by the ad."
+    }
+   }
+  },
+  "LookbackConfiguration": {
+   "id": "LookbackConfiguration",
+   "type": "object",
+   "description": "Lookback configuration settings.",
+   "properties": {
+    "clickDuration": {
+     "type": "integer",
+     "description": "Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.",
+     "format": "int32"
+    },
+    "postImpressionActivitiesDuration": {
+     "type": "integer",
+     "description": "Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.",
+     "format": "int32"
+    }
+   }
+  },
+  "Metric": {
+   "id": "Metric",
+   "type": "object",
+   "description": "Represents a metric.",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#metric.",
+     "default": "dfareporting#metric"
+    },
+    "name": {
+     "type": "string",
+     "description": "The metric name, e.g. dfa:impressions"
+    }
+   }
+  },
+  "Metro": {
+   "id": "Metro",
+   "type": "object",
+   "description": "Contains information about a metro region that can be targeted by ads.",
+   "properties": {
+    "countryCode": {
+     "type": "string",
+     "description": "Country code of the country to which this metro region belongs."
+    },
+    "countryDartId": {
+     "type": "string",
+     "description": "DART ID of the country to which this metro region belongs.",
+     "format": "int64"
+    },
+    "dartId": {
+     "type": "string",
+     "description": "DART ID of this metro region.",
+     "format": "int64"
+    },
+    "dmaId": {
+     "type": "string",
+     "description": "DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#metro\".",
+     "default": "dfareporting#metro"
+    },
+    "metroCode": {
+     "type": "string",
+     "description": "Metro code of this metro region. This is equivalent to dma_id."
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this metro region."
+    }
+   }
+  },
+  "MetrosListResponse": {
+   "id": "MetrosListResponse",
+   "type": "object",
+   "description": "Metro List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#metrosListResponse\".",
+     "default": "dfareporting#metrosListResponse"
+    },
+    "metros": {
+     "type": "array",
+     "description": "Metro collection.",
+     "items": {
+      "$ref": "Metro"
+     }
+    }
+   }
+  },
+  "MobileCarrier": {
+   "id": "MobileCarrier",
+   "type": "object",
+   "description": "Contains information about a mobile carrier that can be targeted by ads.",
+   "properties": {
+    "countryCode": {
+     "type": "string",
+     "description": "Country code of the country to which this mobile carrier belongs."
+    },
+    "countryDartId": {
+     "type": "string",
+     "description": "DART ID of the country to which this mobile carrier belongs.",
+     "format": "int64"
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this mobile carrier.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#mobileCarrier\".",
+     "default": "dfareporting#mobileCarrier"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this mobile carrier."
+    }
+   }
+  },
+  "MobileCarriersListResponse": {
+   "id": "MobileCarriersListResponse",
+   "type": "object",
+   "description": "Mobile Carrier List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#mobileCarriersListResponse\".",
+     "default": "dfareporting#mobileCarriersListResponse"
+    },
+    "mobileCarriers": {
+     "type": "array",
+     "description": "Mobile carrier collection.",
+     "items": {
+      "$ref": "MobileCarrier"
+     }
+    }
+   }
+  },
+  "ObjectFilter": {
+   "id": "ObjectFilter",
+   "type": "object",
+   "description": "Object Filter.",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#objectFilter\".",
+     "default": "dfareporting#objectFilter"
+    },
+    "objectIds": {
+     "type": "array",
+     "description": "Applicable when status is ASSIGNED. The user has access to objects with these object IDs.",
+     "items": {
+      "type": "string",
+      "format": "int64"
+     }
+    },
+    "status": {
+     "type": "string",
+     "description": "Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.",
+     "enum": [
+      "ALL",
+      "ASSIGNED",
+      "NONE"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "OffsetPosition": {
+   "id": "OffsetPosition",
+   "type": "object",
+   "description": "Offset Position.",
+   "properties": {
+    "left": {
+     "type": "integer",
+     "description": "Offset distance from left side of an asset or a window.",
+     "format": "int32"
+    },
+    "top": {
+     "type": "integer",
+     "description": "Offset distance from top side of an asset or a window.",
+     "format": "int32"
+    }
+   }
+  },
+  "OmnitureSettings": {
+   "id": "OmnitureSettings",
+   "type": "object",
+   "description": "Omniture Integration Settings.",
+   "properties": {
+    "omnitureCostDataEnabled": {
+     "type": "boolean",
+     "description": "Whether placement cost data will be sent to Omniture. This property can be enabled only if omnitureIntegrationEnabled is true."
+    },
+    "omnitureIntegrationEnabled": {
+     "type": "boolean",
+     "description": "Whether Omniture integration is enabled. This property can be enabled only when the \"Advanced Ad Serving\" account setting is enabled."
+    }
+   }
+  },
+  "OperatingSystem": {
+   "id": "OperatingSystem",
+   "type": "object",
+   "description": "Contains information about an operating system that can be targeted by ads.",
+   "properties": {
+    "dartId": {
+     "type": "string",
+     "description": "DART ID of this operating system. This is the ID used for targeting.",
+     "format": "int64"
+    },
+    "desktop": {
+     "type": "boolean",
+     "description": "Whether this operating system is for desktop."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#operatingSystem\".",
+     "default": "dfareporting#operatingSystem"
+    },
+    "mobile": {
+     "type": "boolean",
+     "description": "Whether this operating system is for mobile."
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this operating system."
+    }
+   }
+  },
+  "OperatingSystemVersion": {
+   "id": "OperatingSystemVersion",
+   "type": "object",
+   "description": "Contains information about a particular version of an operating system that can be targeted by ads.",
+   "properties": {
+    "id": {
+     "type": "string",
+     "description": "ID of this operating system version.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#operatingSystemVersion\".",
+     "default": "dfareporting#operatingSystemVersion"
+    },
+    "majorVersion": {
+     "type": "string",
+     "description": "Major version (leftmost number) of this operating system version."
+    },
+    "minorVersion": {
+     "type": "string",
+     "description": "Minor version (number after the first dot) of this operating system version."
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this operating system version."
+    },
+    "operatingSystem": {
+     "$ref": "OperatingSystem",
+     "description": "Operating system of this operating system version."
+    }
+   }
+  },
+  "OperatingSystemVersionsListResponse": {
+   "id": "OperatingSystemVersionsListResponse",
+   "type": "object",
+   "description": "Operating System Version List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#operatingSystemVersionsListResponse\".",
+     "default": "dfareporting#operatingSystemVersionsListResponse"
+    },
+    "operatingSystemVersions": {
+     "type": "array",
+     "description": "Operating system version collection.",
+     "items": {
+      "$ref": "OperatingSystemVersion"
+     }
+    }
+   }
+  },
+  "OperatingSystemsListResponse": {
+   "id": "OperatingSystemsListResponse",
+   "type": "object",
+   "description": "Operating System List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#operatingSystemsListResponse\".",
+     "default": "dfareporting#operatingSystemsListResponse"
+    },
+    "operatingSystems": {
+     "type": "array",
+     "description": "Operating system collection.",
+     "items": {
+      "$ref": "OperatingSystem"
+     }
+    }
+   }
+  },
+  "OptimizationActivity": {
+   "id": "OptimizationActivity",
+   "type": "object",
+   "description": "Creative optimization activity.",
+   "properties": {
+    "floodlightActivityId": {
+     "type": "string",
+     "description": "Floodlight activity ID of this optimization activity. This is a required field.",
+     "format": "int64"
+    },
+    "floodlightActivityIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field."
+    },
+    "weight": {
+     "type": "integer",
+     "description": "Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.",
+     "format": "int32"
+    }
+   }
+  },
+  "Order": {
+   "id": "Order",
+   "type": "object",
+   "description": "Describes properties of a DoubleClick Planning order.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this order.",
+     "format": "int64"
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of this order.",
+     "format": "int64"
+    },
+    "approverUserProfileIds": {
+     "type": "array",
+     "description": "IDs for users that have to approve documents created for this order.",
+     "items": {
+      "type": "string",
+      "format": "int64"
+     }
+    },
+    "buyerInvoiceId": {
+     "type": "string",
+     "description": "Buyer invoice ID associated with this order."
+    },
+    "buyerOrganizationName": {
+     "type": "string",
+     "description": "Name of the buyer organization."
+    },
+    "comments": {
+     "type": "string",
+     "description": "Comments in this order."
+    },
+    "contacts": {
+     "type": "array",
+     "description": "Contacts for this order.",
+     "items": {
+      "$ref": "OrderContact"
+     }
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this order. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#order\".",
+     "default": "dfareporting#order"
+    },
+    "lastModifiedInfo": {
+     "$ref": "LastModifiedInfo",
+     "description": "Information about the most recent modification of this order."
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this order."
+    },
+    "notes": {
+     "type": "string",
+     "description": "Notes of this order."
+    },
+    "planningTermId": {
+     "type": "string",
+     "description": "ID of the terms and conditions template used in this order.",
+     "format": "int64"
+    },
+    "projectId": {
+     "type": "string",
+     "description": "Project ID of this order.",
+     "format": "int64"
+    },
+    "sellerOrderId": {
+     "type": "string",
+     "description": "Seller order ID associated with this order."
+    },
+    "sellerOrganizationName": {
+     "type": "string",
+     "description": "Name of the seller organization."
+    },
+    "siteId": {
+     "type": "array",
+     "description": "Site IDs this order is associated with.",
+     "items": {
+      "type": "string",
+      "format": "int64"
+     }
+    },
+    "siteNames": {
+     "type": "array",
+     "description": "Free-form site names this order is associated with.",
+     "items": {
+      "type": "string"
+     }
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this order.",
+     "format": "int64"
+    },
+    "termsAndConditions": {
+     "type": "string",
+     "description": "Terms and conditions of this order."
+    }
+   }
+  },
+  "OrderContact": {
+   "id": "OrderContact",
+   "type": "object",
+   "description": "Contact of an order.",
+   "properties": {
+    "contactInfo": {
+     "type": "string",
+     "description": "Free-form information about this contact. It could be any information related to this contact in addition to type, title, name, and signature user profile ID."
+    },
+    "contactName": {
+     "type": "string",
+     "description": "Name of this contact."
+    },
+    "contactTitle": {
+     "type": "string",
+     "description": "Title of this contact."
+    },
+    "contactType": {
+     "type": "string",
+     "description": "Type of this contact.",
+     "enum": [
+      "PLANNING_ORDER_CONTACT_BUYER_BILLING_CONTACT",
+      "PLANNING_ORDER_CONTACT_BUYER_CONTACT",
+      "PLANNING_ORDER_CONTACT_SELLER_CONTACT"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "signatureUserProfileId": {
+     "type": "string",
+     "description": "ID of the user profile containing the signature that will be embedded into order documents.",
+     "format": "int64"
+    }
+   }
+  },
+  "OrderDocument": {
+   "id": "OrderDocument",
+   "type": "object",
+   "description": "Contains properties of a DoubleClick Planning order document.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this order document.",
+     "format": "int64"
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of this order document.",
+     "format": "int64"
+    },
+    "amendedOrderDocumentId": {
+     "type": "string",
+     "description": "The amended order document ID of this order document. An order document can be created by optionally amending another order document so that the change history can be preserved.",
+     "format": "int64"
+    },
+    "approvedByUserProfileIds": {
+     "type": "array",
+     "description": "IDs of users who have approved this order document.",
+     "items": {
+      "type": "string",
+      "format": "int64"
+     }
+    },
+    "cancelled": {
+     "type": "boolean",
+     "description": "Whether this order document is cancelled."
+    },
+    "createdInfo": {
+     "$ref": "LastModifiedInfo",
+     "description": "Information about the creation of this order document."
+    },
+    "effectiveDate": {
+     "type": "string",
+     "description": "Effective date of this order document.",
+     "format": "date"
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this order document.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#orderDocument\".",
+     "default": "dfareporting#orderDocument"
+    },
+    "lastSentRecipients": {
+     "type": "array",
+     "description": "List of email addresses that received the last sent document.",
+     "items": {
+      "type": "string"
+     }
+    },
+    "lastSentTime": {
+     "type": "string",
+     "description": "Timestamp of the last email sent with this order document.",
+     "format": "date-time"
+    },
+    "orderId": {
+     "type": "string",
+     "description": "ID of the order from which this order document is created.",
+     "format": "int64"
+    },
+    "projectId": {
+     "type": "string",
+     "description": "Project ID of this order document.",
+     "format": "int64"
+    },
+    "signed": {
+     "type": "boolean",
+     "description": "Whether this order document has been signed."
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this order document.",
+     "format": "int64"
+    },
+    "title": {
+     "type": "string",
+     "description": "Title of this order document."
+    },
+    "type": {
+     "type": "string",
+     "description": "Type of this order document",
+     "enum": [
+      "PLANNING_ORDER_TYPE_CHANGE_ORDER",
+      "PLANNING_ORDER_TYPE_INSERTION_ORDER"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "OrderDocumentsListResponse": {
+   "id": "OrderDocumentsListResponse",
+   "type": "object",
+   "description": "Order document List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#orderDocumentsListResponse\".",
+     "default": "dfareporting#orderDocumentsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    },
+    "orderDocuments": {
+     "type": "array",
+     "description": "Order document collection",
+     "items": {
+      "$ref": "OrderDocument"
+     }
+    }
+   }
+  },
+  "OrdersListResponse": {
+   "id": "OrdersListResponse",
+   "type": "object",
+   "description": "Order List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#ordersListResponse\".",
+     "default": "dfareporting#ordersListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    },
+    "orders": {
+     "type": "array",
+     "description": "Order collection.",
+     "items": {
+      "$ref": "Order"
+     }
+    }
+   }
+  },
+  "PathToConversionReportCompatibleFields": {
+   "id": "PathToConversionReportCompatibleFields",
+   "type": "object",
+   "description": "Represents fields that are compatible to be selected for a report of type \"PATH_TO_CONVERSION\".",
+   "properties": {
+    "conversionDimensions": {
+     "type": "array",
+     "description": "Conversion dimensions which are compatible to be selected in the \"conversionDimensions\" section of the report.",
+     "items": {
+      "$ref": "Dimension"
+     }
+    },
+    "customFloodlightVariables": {
+     "type": "array",
+     "description": "Custom floodlight variables which are compatible to be selected in the \"customFloodlightVariables\" section of the report.",
+     "items": {
+      "$ref": "Dimension"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#pathToConversionReportCompatibleFields.",
+     "default": "dfareporting#pathToConversionReportCompatibleFields"
+    },
+    "metrics": {
+     "type": "array",
+     "description": "Metrics which are compatible to be selected in the \"metricNames\" section of the report.",
+     "items": {
+      "$ref": "Metric"
+     }
+    },
+    "perInteractionDimensions": {
+     "type": "array",
+     "description": "Per-interaction dimensions which are compatible to be selected in the \"perInteractionDimensions\" section of the report.",
+     "items": {
+      "$ref": "Dimension"
+     }
+    }
+   }
+  },
+  "Placement": {
+   "id": "Placement",
+   "type": "object",
+   "description": "Contains properties of a placement.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this placement. This field can be left blank.",
+     "format": "int64"
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of this placement. This field can be left blank.",
+     "format": "int64"
+    },
+    "advertiserIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+    },
+    "archived": {
+     "type": "boolean",
+     "description": "Whether this placement is archived."
+    },
+    "campaignId": {
+     "type": "string",
+     "description": "Campaign ID of this placement. This field is a required field on insertion.",
+     "format": "int64"
+    },
+    "campaignIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the campaign. This is a read-only, auto-generated field."
+    },
+    "comment": {
+     "type": "string",
+     "description": "Comments for this placement."
+    },
+    "compatibility": {
+     "type": "string",
+     "description": "Placement compatibility. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering on desktop, mobile devices or in mobile apps for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are no longer allowed for new placement insertions. Instead, use DISPLAY or DISPLAY_INTERSTITIAL. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard.This field is required on insertion.",
+     "enum": [
+      "APP",
+      "APP_INTERSTITIAL",
+      "DISPLAY",
+      "DISPLAY_INTERSTITIAL",
+      "IN_STREAM_VIDEO"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "contentCategoryId": {
+     "type": "string",
+     "description": "ID of the content category assigned to this placement.",
+     "format": "int64"
+    },
+    "createInfo": {
+     "$ref": "LastModifiedInfo",
+     "description": "Information about the creation of this placement. This is a read-only field."
+    },
+    "directorySiteId": {
+     "type": "string",
+     "description": "Directory site ID of this placement. On insert, you must set either this field or the siteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.",
+     "format": "int64"
+    },
+    "directorySiteIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the directory site. This is a read-only, auto-generated field."
+    },
+    "externalId": {
+     "type": "string",
+     "description": "External ID for this placement."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this placement. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "idDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of this placement. This is a read-only, auto-generated field."
+    },
+    "keyName": {
+     "type": "string",
+     "description": "Key name of this placement. This is a read-only, auto-generated field."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#placement\".",
+     "default": "dfareporting#placement"
+    },
+    "lastModifiedInfo": {
+     "$ref": "LastModifiedInfo",
+     "description": "Information about the most recent modification of this placement. This is a read-only field."
+    },
+    "lookbackConfiguration": {
+     "$ref": "LookbackConfiguration",
+     "description": "Lookback window settings for this placement."
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this placement.This is a required field and must be less than 256 characters long."
+    },
+    "paymentApproved": {
+     "type": "boolean",
+     "description": "Whether payment was approved for this placement. This is a read-only field relevant only to publisher-paid placements."
+    },
+    "paymentSource": {
+     "type": "string",
+     "description": "Payment source for this placement. This is a required field that is read-only after insertion.",
+     "enum": [
+      "PLACEMENT_AGENCY_PAID",
+      "PLACEMENT_PUBLISHER_PAID"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "placementGroupId": {
+     "type": "string",
+     "description": "ID of this placement's group, if applicable.",
+     "format": "int64"
+    },
+    "placementGroupIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the placement group. This is a read-only, auto-generated field."
+    },
+    "placementStrategyId": {
+     "type": "string",
+     "description": "ID of the placement strategy assigned to this placement.",
+     "format": "int64"
+    },
+    "pricingSchedule": {
+     "$ref": "PricingSchedule",
+     "description": "Pricing schedule of this placement. This field is required on insertion, specifically subfields startDate, endDate and pricingType."
+    },
+    "primary": {
+     "type": "boolean",
+     "description": "Whether this placement is the primary placement of a roadblock (placement group). You cannot change this field from true to false. Setting this field to true will automatically set the primary field on the original primary placement of the roadblock to false, and it will automatically set the roadblock's primaryPlacementId field to the ID of this placement."
+    },
+    "publisherUpdateInfo": {
+     "$ref": "LastModifiedInfo",
+     "description": "Information about the last publisher update. This is a read-only field."
+    },
+    "siteId": {
+     "type": "string",
+     "description": "Site ID associated with this placement. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.",
+     "format": "int64"
+    },
+    "siteIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the site. This is a read-only, auto-generated field."
+    },
+    "size": {
+     "$ref": "Size",
+     "description": "Size associated with this placement. When inserting or updating a placement, only the size ID field is used. This field is required on insertion."
+    },
+    "sslRequired": {
+     "type": "boolean",
+     "description": "Whether creatives assigned to this placement must be SSL-compliant."
+    },
+    "status": {
+     "type": "string",
+     "description": "Third-party placement status.",
+     "enum": [
+      "ACKNOWLEDGE_ACCEPTANCE",
+      "ACKNOWLEDGE_REJECTION",
+      "DRAFT",
+      "PAYMENT_ACCEPTED",
+      "PAYMENT_REJECTED",
+      "PENDING_REVIEW"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this placement. This field can be left blank.",
+     "format": "int64"
+    },
+    "tagFormats": {
+     "type": "array",
+     "description": "Tag formats to generate for this placement. This field is required on insertion.\nAcceptable values are:\n- \"PLACEMENT_TAG_STANDARD\"\n- \"PLACEMENT_TAG_IFRAME_JAVASCRIPT\"\n- \"PLACEMENT_TAG_IFRAME_ILAYER\"\n- \"PLACEMENT_TAG_INTERNAL_REDIRECT\"\n- \"PLACEMENT_TAG_JAVASCRIPT\"\n- \"PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT\"\n- \"PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT\"\n- \"PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT\"\n- \"PLACEMENT_TAG_CLICK_COMMANDS\"\n- \"PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH\"\n- \"PLACEMENT_TAG_TRACKING\"\n- \"PLACEMENT_TAG_TRACKING_IFRAME\"\n- \"PLACEMENT_TAG_TRACKING_JAVASCRIPT\"",
+     "items": {
+      "type": "string",
+      "enum": [
+       "PLACEMENT_TAG_CLICK_COMMANDS",
+       "PLACEMENT_TAG_IFRAME_ILAYER",
+       "PLACEMENT_TAG_IFRAME_JAVASCRIPT",
+       "PLACEMENT_TAG_IFRAME_JAVASCRIPT_LEGACY",
+       "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH",
+       "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3",
+       "PLACEMENT_TAG_INTERNAL_REDIRECT",
+       "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT",
+       "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT_LEGACY",
+       "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT",
+       "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT",
+       "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT_LEGACY",
+       "PLACEMENT_TAG_JAVASCRIPT",
+       "PLACEMENT_TAG_JAVASCRIPT_LEGACY",
+       "PLACEMENT_TAG_STANDARD",
+       "PLACEMENT_TAG_TRACKING",
+       "PLACEMENT_TAG_TRACKING_IFRAME",
+       "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+      ],
+      "enumDescriptions": [
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       ""
+      ]
+     }
+    },
+    "tagSetting": {
+     "$ref": "TagSetting",
+     "description": "Tag settings for this placement."
+    }
+   }
+  },
+  "PlacementAssignment": {
+   "id": "PlacementAssignment",
+   "type": "object",
+   "description": "Placement Assignment.",
+   "properties": {
+    "active": {
+     "type": "boolean",
+     "description": "Whether this placement assignment is active. When true, the placement will be included in the ad's rotation."
+    },
+    "placementId": {
+     "type": "string",
+     "description": "ID of the placement to be assigned. This is a required field.",
+     "format": "int64"
+    },
+    "placementIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the placement. This is a read-only, auto-generated field."
+    },
+    "sslRequired": {
+     "type": "boolean",
+     "description": "Whether the placement to be assigned requires SSL. This is a read-only field that is auto-generated when the ad is inserted or updated."
+    }
+   }
+  },
+  "PlacementGroup": {
+   "id": "PlacementGroup",
+   "type": "object",
+   "description": "Contains properties of a package or roadblock.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this placement group. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of this placement group. This is a required field on insertion.",
+     "format": "int64"
+    },
+    "advertiserIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+    },
+    "archived": {
+     "type": "boolean",
+     "description": "Whether this placement group is archived."
+    },
+    "campaignId": {
+     "type": "string",
+     "description": "Campaign ID of this placement group. This field is required on insertion.",
+     "format": "int64"
+    },
+    "campaignIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the campaign. This is a read-only, auto-generated field."
+    },
+    "childPlacementIds": {
+     "type": "array",
+     "description": "IDs of placements which are assigned to this placement group. This is a read-only, auto-generated field.",
+     "items": {
+      "type": "string",
+      "format": "int64"
+     }
+    },
+    "comment": {
+     "type": "string",
+     "description": "Comments for this placement group."
+    },
+    "contentCategoryId": {
+     "type": "string",
+     "description": "ID of the content category assigned to this placement group.",
+     "format": "int64"
+    },
+    "createInfo": {
+     "$ref": "LastModifiedInfo",
+     "description": "Information about the creation of this placement group. This is a read-only field."
+    },
+    "directorySiteId": {
+     "type": "string",
+     "description": "Directory site ID associated with this placement group. On insert, you must set either this field or the site_id field to specify the site associated with this placement group. This is a required field that is read-only after insertion.",
+     "format": "int64"
+    },
+    "directorySiteIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the directory site. This is a read-only, auto-generated field."
+    },
+    "externalId": {
+     "type": "string",
+     "description": "External ID for this placement."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this placement group. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "idDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of this placement group. This is a read-only, auto-generated field."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#placementGroup\".",
+     "default": "dfareporting#placementGroup"
+    },
+    "lastModifiedInfo": {
+     "$ref": "LastModifiedInfo",
+     "description": "Information about the most recent modification of this placement group. This is a read-only field."
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this placement group. This is a required field and must be less than 256 characters long."
+    },
+    "placementGroupType": {
+     "type": "string",
+     "description": "Type of this placement group. A package is a simple group of placements that acts as a single pricing point for a group of tags. A roadblock is a group of placements that not only acts as a single pricing point, but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned placements to be marked as primary for reporting. This field is required on insertion.",
+     "enum": [
+      "PLACEMENT_PACKAGE",
+      "PLACEMENT_ROADBLOCK"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "placementStrategyId": {
+     "type": "string",
+     "description": "ID of the placement strategy assigned to this placement group.",
+     "format": "int64"
+    },
+    "pricingSchedule": {
+     "$ref": "PricingSchedule",
+     "description": "Pricing schedule of this placement group. This field is required on insertion."
+    },
+    "primaryPlacementId": {
+     "type": "string",
+     "description": "ID of the primary placement, used to calculate the media cost of a roadblock (placement group). Modifying this field will automatically modify the primary field on all affected roadblock child placements.",
+     "format": "int64"
+    },
+    "primaryPlacementIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the primary placement. This is a read-only, auto-generated field."
+    },
+    "siteId": {
+     "type": "string",
+     "description": "Site ID associated with this placement group. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement group. This is a required field that is read-only after insertion.",
+     "format": "int64"
+    },
+    "siteIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the site. This is a read-only, auto-generated field."
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this placement group. This is a read-only field that can be left blank.",
+     "format": "int64"
+    }
+   }
+  },
+  "PlacementGroupsListResponse": {
+   "id": "PlacementGroupsListResponse",
+   "type": "object",
+   "description": "Placement Group List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#placementGroupsListResponse\".",
+     "default": "dfareporting#placementGroupsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    },
+    "placementGroups": {
+     "type": "array",
+     "description": "Placement group collection.",
+     "items": {
+      "$ref": "PlacementGroup"
+     }
+    }
+   }
+  },
+  "PlacementStrategiesListResponse": {
+   "id": "PlacementStrategiesListResponse",
+   "type": "object",
+   "description": "Placement Strategy List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#placementStrategiesListResponse\".",
+     "default": "dfareporting#placementStrategiesListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    },
+    "placementStrategies": {
+     "type": "array",
+     "description": "Placement strategy collection.",
+     "items": {
+      "$ref": "PlacementStrategy"
+     }
+    }
+   }
+  },
+  "PlacementStrategy": {
+   "id": "PlacementStrategy",
+   "type": "object",
+   "description": "Contains properties of a placement strategy.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this placement strategy.This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this placement strategy. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#placementStrategy\".",
+     "default": "dfareporting#placementStrategy"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this placement strategy. This is a required field. It must be less than 256 characters long and unique among placement strategies of the same account."
+    }
+   }
+  },
+  "PlacementTag": {
+   "id": "PlacementTag",
+   "type": "object",
+   "description": "Placement Tag",
+   "properties": {
+    "placementId": {
+     "type": "string",
+     "description": "Placement ID",
+     "format": "int64"
+    },
+    "tagDatas": {
+     "type": "array",
+     "description": "Tags generated for this placement.",
+     "items": {
+      "$ref": "TagData"
+     }
+    }
+   }
+  },
+  "PlacementsGenerateTagsResponse": {
+   "id": "PlacementsGenerateTagsResponse",
+   "type": "object",
+   "description": "Placement GenerateTags Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#placementsGenerateTagsResponse\".",
+     "default": "dfareporting#placementsGenerateTagsResponse"
+    },
+    "placementTags": {
+     "type": "array",
+     "description": "Set of generated tags for the specified placements.",
+     "items": {
+      "$ref": "PlacementTag"
+     }
+    }
+   }
+  },
+  "PlacementsListResponse": {
+   "id": "PlacementsListResponse",
+   "type": "object",
+   "description": "Placement List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#placementsListResponse\".",
+     "default": "dfareporting#placementsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    },
+    "placements": {
+     "type": "array",
+     "description": "Placement collection.",
+     "items": {
+      "$ref": "Placement"
+     }
+    }
+   }
+  },
+  "PlatformType": {
+   "id": "PlatformType",
+   "type": "object",
+   "description": "Contains information about a platform type that can be targeted by ads.",
+   "properties": {
+    "id": {
+     "type": "string",
+     "description": "ID of this platform type.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#platformType\".",
+     "default": "dfareporting#platformType"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this platform type."
+    }
+   }
+  },
+  "PlatformTypesListResponse": {
+   "id": "PlatformTypesListResponse",
+   "type": "object",
+   "description": "Platform Type List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#platformTypesListResponse\".",
+     "default": "dfareporting#platformTypesListResponse"
+    },
+    "platformTypes": {
+     "type": "array",
+     "description": "Platform type collection.",
+     "items": {
+      "$ref": "PlatformType"
+     }
+    }
+   }
+  },
+  "PopupWindowProperties": {
+   "id": "PopupWindowProperties",
+   "type": "object",
+   "description": "Popup Window Properties.",
+   "properties": {
+    "dimension": {
+     "$ref": "Size",
+     "description": "Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID"
+    },
+    "offset": {
+     "$ref": "OffsetPosition",
+     "description": "Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES."
+    },
+    "positionType": {
+     "type": "string",
+     "description": "Popup window position either centered or at specific coordinate.",
+     "enum": [
+      "CENTER",
+      "COORDINATES"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "showAddressBar": {
+     "type": "boolean",
+     "description": "Whether to display the browser address bar."
+    },
+    "showMenuBar": {
+     "type": "boolean",
+     "description": "Whether to display the browser menu bar."
+    },
+    "showScrollBar": {
+     "type": "boolean",
+     "description": "Whether to display the browser scroll bar."
+    },
+    "showStatusBar": {
+     "type": "boolean",
+     "description": "Whether to display the browser status bar."
+    },
+    "showToolBar": {
+     "type": "boolean",
+     "description": "Whether to display the browser tool bar."
+    },
+    "title": {
+     "type": "string",
+     "description": "Title of popup window."
+    }
+   }
+  },
+  "PostalCode": {
+   "id": "PostalCode",
+   "type": "object",
+   "description": "Contains information about a postal code that can be targeted by ads.",
+   "properties": {
+    "code": {
+     "type": "string",
+     "description": "Postal code. This is equivalent to the id field."
+    },
+    "countryCode": {
+     "type": "string",
+     "description": "Country code of the country to which this postal code belongs."
+    },
+    "countryDartId": {
+     "type": "string",
+     "description": "DART ID of the country to which this postal code belongs.",
+     "format": "int64"
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this postal code."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#postalCode\".",
+     "default": "dfareporting#postalCode"
+    }
+   }
+  },
+  "PostalCodesListResponse": {
+   "id": "PostalCodesListResponse",
+   "type": "object",
+   "description": "Postal Code List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#postalCodesListResponse\".",
+     "default": "dfareporting#postalCodesListResponse"
+    },
+    "postalCodes": {
+     "type": "array",
+     "description": "Postal code collection.",
+     "items": {
+      "$ref": "PostalCode"
+     }
+    }
+   }
+  },
+  "Pricing": {
+   "id": "Pricing",
+   "type": "object",
+   "description": "Pricing Information",
+   "properties": {
+    "capCostType": {
+     "type": "string",
+     "description": "Cap cost type of this inventory item.",
+     "enum": [
+      "PLANNING_PLACEMENT_CAP_COST_TYPE_CUMULATIVE",
+      "PLANNING_PLACEMENT_CAP_COST_TYPE_MONTHLY",
+      "PLANNING_PLACEMENT_CAP_COST_TYPE_NONE"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "endDate": {
+     "type": "string",
+     "description": "End date of this inventory item.",
+     "format": "date"
+    },
+    "flights": {
+     "type": "array",
+     "description": "Flights of this inventory item. A flight (a.k.a. pricing period) represents the inventory item pricing information for a specific period of time.",
+     "items": {
+      "$ref": "Flight"
+     }
+    },
+    "groupType": {
+     "type": "string",
+     "description": "Group type of this inventory item if it represents a placement group. Is null otherwise. There are two type of placement groups: PLANNING_PLACEMENT_GROUP_TYPE_PACKAGE is a simple group of inventory items that acts as a single pricing point for a group of tags. PLANNING_PLACEMENT_GROUP_TYPE_ROADBLOCK is a group of inventory items that not only acts as a single pricing point, but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned inventory items to be marked as primary.",
+     "enum": [
+      "PLANNING_PLACEMENT_GROUP_TYPE_PACKAGE",
+      "PLANNING_PLACEMENT_GROUP_TYPE_ROADBLOCK"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "pricingType": {
+     "type": "string",
+     "description": "Pricing type of this inventory item.",
+     "enum": [
+      "PLANNING_PLACEMENT_PRICING_TYPE_CLICKS",
+      "PLANNING_PLACEMENT_PRICING_TYPE_CPA",
+      "PLANNING_PLACEMENT_PRICING_TYPE_CPC",
+      "PLANNING_PLACEMENT_PRICING_TYPE_CPM",
+      "PLANNING_PLACEMENT_PRICING_TYPE_FLAT_RATE_CLICKS",
+      "PLANNING_PLACEMENT_PRICING_TYPE_FLAT_RATE_IMPRESSIONS",
+      "PLANNING_PLACEMENT_PRICING_TYPE_IMPRESSIONS"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "startDate": {
+     "type": "string",
+     "description": "Start date of this inventory item.",
+     "format": "date"
+    }
+   }
+  },
+  "PricingSchedule": {
+   "id": "PricingSchedule",
+   "type": "object",
+   "description": "Pricing Schedule",
+   "properties": {
+    "capCostOption": {
+     "type": "string",
+     "description": "Placement cap cost option.",
+     "enum": [
+      "CAP_COST_CUMULATIVE",
+      "CAP_COST_MONTHLY",
+      "CAP_COST_NONE"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    },
+    "disregardOverdelivery": {
+     "type": "boolean",
+     "description": "Whether cap costs are ignored by ad serving."
+    },
+    "endDate": {
+     "type": "string",
+     "description": "Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.",
+     "format": "date"
+    },
+    "flighted": {
+     "type": "boolean",
+     "description": "Whether this placement is flighted. If true, pricing periods will be computed automatically."
+    },
+    "floodlightActivityId": {
+     "type": "string",
+     "description": "Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.",
+     "format": "int64"
+    },
+    "pricingPeriods": {
+     "type": "array",
+     "description": "Pricing periods for this placement.",
+     "items": {
+      "$ref": "PricingSchedulePricingPeriod"
+     }
+    },
+    "pricingType": {
+     "type": "string",
+     "description": "Placement pricing type. This field is required on insertion.",
+     "enum": [
+      "PRICING_TYPE_CPA",
+      "PRICING_TYPE_CPC",
+      "PRICING_TYPE_CPM",
+      "PRICING_TYPE_FLAT_RATE_CLICKS",
+      "PRICING_TYPE_FLAT_RATE_IMPRESSIONS"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "startDate": {
+     "type": "string",
+     "description": "Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.",
+     "format": "date"
+    },
+    "testingStartDate": {
+     "type": "string",
+     "description": "Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.",
+     "format": "date"
+    }
+   }
+  },
+  "PricingSchedulePricingPeriod": {
+   "id": "PricingSchedulePricingPeriod",
+   "type": "object",
+   "description": "Pricing Period",
+   "properties": {
+    "endDate": {
+     "type": "string",
+     "description": "Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.",
+     "format": "date"
+    },
+    "pricingComment": {
+     "type": "string",
+     "description": "Comments for this pricing period."
+    },
+    "rateOrCostNanos": {
+     "type": "string",
+     "description": "Rate or cost of this pricing period.",
+     "format": "int64"
+    },
+    "startDate": {
+     "type": "string",
+     "description": "Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.",
+     "format": "date"
+    },
+    "units": {
+     "type": "string",
+     "description": "Units of this pricing period.",
+     "format": "int64"
+    }
+   }
+  },
+  "Project": {
+   "id": "Project",
+   "type": "object",
+   "description": "Contains properties of a DoubleClick Planning project.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this project.",
+     "format": "int64"
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Advertiser ID of this project.",
+     "format": "int64"
+    },
+    "audienceAgeGroup": {
+     "type": "string",
+     "description": "Audience age group of this project.",
+     "enum": [
+      "PLANNING_AUDIENCE_AGE_18_24",
+      "PLANNING_AUDIENCE_AGE_25_34",
+      "PLANNING_AUDIENCE_AGE_35_44",
+      "PLANNING_AUDIENCE_AGE_45_54",
+      "PLANNING_AUDIENCE_AGE_55_64",
+      "PLANNING_AUDIENCE_AGE_65_OR_MORE",
+      "PLANNING_AUDIENCE_AGE_UNKNOWN"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "audienceGender": {
+     "type": "string",
+     "description": "Audience gender of this project.",
+     "enum": [
+      "PLANNING_AUDIENCE_GENDER_FEMALE",
+      "PLANNING_AUDIENCE_GENDER_MALE"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "budget": {
+     "type": "string",
+     "description": "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.",
+     "format": "int64"
+    },
+    "clientBillingCode": {
+     "type": "string",
+     "description": "Client billing code of this project."
+    },
+    "clientName": {
+     "type": "string",
+     "description": "Name of the project client."
+    },
+    "endDate": {
+     "type": "string",
+     "description": "End date of the project.",
+     "format": "date"
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this project. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#project\".",
+     "default": "dfareporting#project"
+    },
+    "lastModifiedInfo": {
+     "$ref": "LastModifiedInfo",
+     "description": "Information about the most recent modification of this project."
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this project."
+    },
+    "overview": {
+     "type": "string",
+     "description": "Overview of this project."
+    },
+    "startDate": {
+     "type": "string",
+     "description": "Start date of the project.",
+     "format": "date"
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this project.",
+     "format": "int64"
+    },
+    "targetClicks": {
+     "type": "string",
+     "description": "Number of clicks that the advertiser is targeting.",
+     "format": "int64"
+    },
+    "targetConversions": {
+     "type": "string",
+     "description": "Number of conversions that the advertiser is targeting.",
+     "format": "int64"
+    },
+    "targetCpaNanos": {
+     "type": "string",
+     "description": "CPA that the advertiser is targeting.",
+     "format": "int64"
+    },
+    "targetCpcNanos": {
+     "type": "string",
+     "description": "CPC that the advertiser is targeting.",
+     "format": "int64"
+    },
+    "targetCpmNanos": {
+     "type": "string",
+     "description": "CPM that the advertiser is targeting.",
+     "format": "int64"
+    },
+    "targetImpressions": {
+     "type": "string",
+     "description": "Number of impressions that the advertiser is targeting.",
+     "format": "int64"
+    }
+   }
+  },
+  "ProjectsListResponse": {
+   "id": "ProjectsListResponse",
+   "type": "object",
+   "description": "Project List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#projectsListResponse\".",
+     "default": "dfareporting#projectsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    },
+    "projects": {
+     "type": "array",
+     "description": "Project collection.",
+     "items": {
+      "$ref": "Project"
+     }
+    }
+   }
+  },
+  "ReachReportCompatibleFields": {
+   "id": "ReachReportCompatibleFields",
+   "type": "object",
+   "description": "Represents fields that are compatible to be selected for a report of type \"REACH\".",
+   "properties": {
+    "dimensionFilters": {
+     "type": "array",
+     "description": "Dimensions which are compatible to be selected in the \"dimensionFilters\" section of the report.",
+     "items": {
+      "$ref": "Dimension"
+     }
+    },
+    "dimensions": {
+     "type": "array",
+     "description": "Dimensions which are compatible to be selected in the \"dimensions\" section of the report.",
+     "items": {
+      "$ref": "Dimension"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#reachReportCompatibleFields.",
+     "default": "dfareporting#reachReportCompatibleFields"
+    },
+    "metrics": {
+     "type": "array",
+     "description": "Metrics which are compatible to be selected in the \"metricNames\" section of the report.",
+     "items": {
+      "$ref": "Metric"
+     }
+    },
+    "pivotedActivityMetrics": {
+     "type": "array",
+     "description": "Metrics which are compatible to be selected as activity metrics to pivot on in the \"activities\" section of the report.",
+     "items": {
+      "$ref": "Metric"
+     }
+    },
+    "reachByFrequencyMetrics": {
+     "type": "array",
+     "description": "Metrics which are compatible to be selected in the \"reachByFrequencyMetricNames\" section of the report.",
+     "items": {
+      "$ref": "Metric"
+     }
+    }
+   }
+  },
+  "Recipient": {
+   "id": "Recipient",
+   "type": "object",
+   "description": "Represents a recipient.",
+   "properties": {
+    "deliveryType": {
+     "type": "string",
+     "description": "The delivery type for the recipient.",
+     "enum": [
+      "ATTACHMENT",
+      "LINK"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ],
+     "annotations": {
+      "required": [
+       "dfareporting.reports.insert",
+       "dfareporting.reports.update"
+      ]
+     }
+    },
+    "email": {
+     "type": "string",
+     "description": "The email address of the recipient.",
+     "annotations": {
+      "required": [
+       "dfareporting.reports.insert",
+       "dfareporting.reports.update"
+      ]
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#recipient.",
+     "default": "dfareporting#recipient"
+    }
+   }
+  },
+  "Region": {
+   "id": "Region",
+   "type": "object",
+   "description": "Contains information about a region that can be targeted by ads.",
+   "properties": {
+    "countryCode": {
+     "type": "string",
+     "description": "Country code of the country to which this region belongs."
+    },
+    "countryDartId": {
+     "type": "string",
+     "description": "DART ID of the country to which this region belongs.",
+     "format": "int64"
+    },
+    "dartId": {
+     "type": "string",
+     "description": "DART ID of this region.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#region\".",
+     "default": "dfareporting#region"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this region."
+    },
+    "regionCode": {
+     "type": "string",
+     "description": "Region code."
+    }
+   }
+  },
+  "RegionsListResponse": {
+   "id": "RegionsListResponse",
+   "type": "object",
+   "description": "Region List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#regionsListResponse\".",
+     "default": "dfareporting#regionsListResponse"
+    },
+    "regions": {
+     "type": "array",
+     "description": "Region collection.",
+     "items": {
+      "$ref": "Region"
+     }
+    }
+   }
+  },
+  "RemarketingList": {
+   "id": "RemarketingList",
+   "type": "object",
+   "description": "Contains properties of a remarketing list. Remarketing enables you to create lists of users who have performed specific actions on a site, then target ads to members of those lists. This resource can be used to manage remarketing lists that are owned by your advertisers. To see all remarketing lists that are visible to your advertisers, including those that are shared to your advertiser or account, use the TargetableRemarketingLists resource.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.",
+     "format": "int64"
+    },
+    "active": {
+     "type": "boolean",
+     "description": "Whether this remarketing list is active."
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Dimension value for the advertiser ID that owns this remarketing list. This is a required field.",
+     "format": "int64"
+    },
+    "advertiserIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+    },
+    "description": {
+     "type": "string",
+     "description": "Remarketing list description."
+    },
+    "id": {
+     "type": "string",
+     "description": "Remarketing list ID. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#remarketingList\".",
+     "default": "dfareporting#remarketingList"
+    },
+    "lifeSpan": {
+     "type": "string",
+     "description": "Number of days that a user should remain in the remarketing list without an impression.",
+     "format": "int64"
+    },
+    "listPopulationRule": {
+     "$ref": "ListPopulationRule",
+     "description": "Rule used to populate the remarketing list with users."
+    },
+    "listSize": {
+     "type": "string",
+     "description": "Number of users currently in the list. This is a read-only field.",
+     "format": "int64"
+    },
+    "listSource": {
+     "type": "string",
+     "description": "Product from which this remarketing list was originated.",
+     "enum": [
+      "REMARKETING_LIST_SOURCE_ADX",
+      "REMARKETING_LIST_SOURCE_DBM",
+      "REMARKETING_LIST_SOURCE_DFA",
+      "REMARKETING_LIST_SOURCE_DFP",
+      "REMARKETING_LIST_SOURCE_DMP",
+      "REMARKETING_LIST_SOURCE_GA",
+      "REMARKETING_LIST_SOURCE_GPLUS",
+      "REMARKETING_LIST_SOURCE_OTHER",
+      "REMARKETING_LIST_SOURCE_PLAY_STORE",
+      "REMARKETING_LIST_SOURCE_XFP",
+      "REMARKETING_LIST_SOURCE_YOUTUBE"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of the remarketing list. This is a required field. Must be no greater than 128 characters long."
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.",
+     "format": "int64"
+    }
+   }
+  },
+  "RemarketingListShare": {
+   "id": "RemarketingListShare",
+   "type": "object",
+   "description": "Contains properties of a remarketing list's sharing information. Sharing allows other accounts or advertisers to target to your remarketing lists. This resource can be used to manage remarketing list sharing to other accounts and advertisers.",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#remarketingListShare\".",
+     "default": "dfareporting#remarketingListShare"
+    },
+    "remarketingListId": {
+     "type": "string",
+     "description": "Remarketing list ID. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "sharedAccountIds": {
+     "type": "array",
+     "description": "Accounts that the remarketing list is shared with.",
+     "items": {
+      "type": "string",
+      "format": "int64"
+     }
+    },
+    "sharedAdvertiserIds": {
+     "type": "array",
+     "description": "Advertisers that the remarketing list is shared with.",
+     "items": {
+      "type": "string",
+      "format": "int64"
+     }
+    }
+   }
+  },
+  "RemarketingListsListResponse": {
+   "id": "RemarketingListsListResponse",
+   "type": "object",
+   "description": "Remarketing list response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#remarketingListsListResponse\".",
+     "default": "dfareporting#remarketingListsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    },
+    "remarketingLists": {
+     "type": "array",
+     "description": "Remarketing list collection.",
+     "items": {
+      "$ref": "RemarketingList"
+     }
+    }
+   }
+  },
+  "Report": {
+   "id": "Report",
+   "type": "object",
+   "description": "Represents a Report resource.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "The account ID to which this report belongs.",
+     "format": "int64",
+     "annotations": {
+      "required": [
+       "dfareporting.reports.update"
+      ]
+     }
+    },
+    "criteria": {
+     "type": "object",
+     "description": "The report criteria for a report of type \"STANDARD\".",
+     "properties": {
+      "activities": {
+       "$ref": "Activities",
+       "description": "Activity group."
+      },
+      "customRichMediaEvents": {
+       "$ref": "CustomRichMediaEvents",
+       "description": "Custom Rich Media Events group."
+      },
+      "dateRange": {
+       "$ref": "DateRange",
+       "description": "The date range for which this report should be run."
+      },
+      "dimensionFilters": {
+       "type": "array",
+       "description": "The list of filters on which dimensions are filtered.\nFilters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.",
+       "items": {
+        "$ref": "DimensionValue"
+       }
+      },
+      "dimensions": {
+       "type": "array",
+       "description": "The list of standard dimensions the report should include.",
+       "items": {
+        "$ref": "SortedDimension"
+       }
+      },
+      "metricNames": {
+       "type": "array",
+       "description": "The list of names of metrics the report should include.",
+       "items": {
+        "type": "string"
+       }
+      }
+     }
+    },
+    "crossDimensionReachCriteria": {
+     "type": "object",
+     "description": "The report criteria for a report of type \"CROSS_DIMENSION_REACH\".",
+     "properties": {
+      "breakdown": {
+       "type": "array",
+       "description": "The list of dimensions the report should include.",
+       "items": {
+        "$ref": "SortedDimension"
+       }
+      },
+      "dateRange": {
+       "$ref": "DateRange",
+       "description": "The date range this report should be run for."
+      },
+      "dimension": {
+       "type": "string",
+       "description": "The dimension option.",
+       "enum": [
+        "ADVERTISER",
+        "CAMPAIGN",
+        "SITE_BY_ADVERTISER",
+        "SITE_BY_CAMPAIGN"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        "",
+        ""
+       ]
+      },
+      "dimensionFilters": {
+       "type": "array",
+       "description": "The list of filters on which dimensions are filtered.",
+       "items": {
+        "$ref": "DimensionValue"
+       }
+      },
+      "metricNames": {
+       "type": "array",
+       "description": "The list of names of metrics the report should include.",
+       "items": {
+        "type": "string"
+       }
+      },
+      "overlapMetricNames": {
+       "type": "array",
+       "description": "The list of names of overlap metrics the report should include.",
+       "items": {
+        "type": "string"
+       }
+      },
+      "pivoted": {
+       "type": "boolean",
+       "description": "Whether the report is pivoted or not. Defaults to true."
+      }
+     }
+    },
+    "delivery": {
+     "type": "object",
+     "description": "The report's email delivery settings.",
+     "properties": {
+      "emailOwner": {
+       "type": "boolean",
+       "description": "Whether the report should be emailed to the report owner."
+      },
+      "emailOwnerDeliveryType": {
+       "type": "string",
+       "description": "The type of delivery for the owner to receive, if enabled.",
+       "enum": [
+        "ATTACHMENT",
+        "LINK"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ]
+      },
+      "message": {
+       "type": "string",
+       "description": "The message to be sent with each email."
+      },
+      "recipients": {
+       "type": "array",
+       "description": "The list of recipients to which to email the report.",
+       "items": {
+        "$ref": "Recipient"
+       }
+      }
+     }
+    },
+    "etag": {
+     "type": "string",
+     "description": "The eTag of this response for caching purposes."
+    },
+    "fileName": {
+     "type": "string",
+     "description": "The filename used when generating report files for this report."
+    },
+    "floodlightCriteria": {
+     "type": "object",
+     "description": "The report criteria for a report of type \"FLOODLIGHT\".",
+     "properties": {
+      "customRichMediaEvents": {
+       "type": "array",
+       "description": "The list of custom rich media events to include.",
+       "items": {
+        "$ref": "DimensionValue"
+       }
+      },
+      "dateRange": {
+       "$ref": "DateRange",
+       "description": "The date range this report should be run for."
+      },
+      "dimensionFilters": {
+       "type": "array",
+       "description": "The list of filters on which dimensions are filtered.\nFilters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.",
+       "items": {
+        "$ref": "DimensionValue"
+       }
+      },
+      "dimensions": {
+       "type": "array",
+       "description": "The list of dimensions the report should include.",
+       "items": {
+        "$ref": "SortedDimension"
+       }
+      },
+      "floodlightConfigId": {
+       "$ref": "DimensionValue",
+       "description": "The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'."
+      },
+      "metricNames": {
+       "type": "array",
+       "description": "The list of names of metrics the report should include.",
+       "items": {
+        "type": "string"
+       }
+      },
+      "reportProperties": {
+       "type": "object",
+       "description": "The properties of the report.",
+       "properties": {
+        "includeAttributedIPConversions": {
+         "type": "boolean",
+         "description": "Include conversions that have no cookie, but do have an exposure path."
+        },
+        "includeUnattributedCookieConversions": {
+         "type": "boolean",
+         "description": "Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window."
+        },
+        "includeUnattributedIPConversions": {
+         "type": "boolean",
+         "description": "Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion."
+        }
+       }
+      }
+     }
+    },
+    "format": {
+     "type": "string",
+     "description": "The output format of the report. If not specified, default format is \"CSV\". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. \"CSV\" will then be the fallback format.",
+     "enum": [
+      "CSV",
+      "EXCEL"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "id": {
+     "type": "string",
+     "description": "The unique ID identifying this report resource.",
+     "format": "int64",
+     "annotations": {
+      "required": [
+       "dfareporting.reports.update"
+      ]
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#report.",
+     "default": "dfareporting#report"
+    },
+    "lastModifiedTime": {
+     "type": "string",
+     "description": "The timestamp (in milliseconds since epoch) of when this report was last modified.",
+     "format": "uint64",
+     "annotations": {
+      "required": [
+       "dfareporting.reports.update"
+      ]
+     }
+    },
+    "name": {
+     "type": "string",
+     "description": "The name of the report.",
+     "annotations": {
+      "required": [
+       "dfareporting.reports.insert",
+       "dfareporting.reports.update"
+      ]
+     }
+    },
+    "ownerProfileId": {
+     "type": "string",
+     "description": "The user profile id of the owner of this report.",
+     "format": "int64",
+     "annotations": {
+      "required": [
+       "dfareporting.reports.update"
+      ]
+     }
+    },
+    "pathToConversionCriteria": {
+     "type": "object",
+     "description": "The report criteria for a report of type \"PATH_TO_CONVERSION\".",
+     "properties": {
+      "activityFilters": {
+       "type": "array",
+       "description": "The list of 'dfa:activity' values to filter on.",
+       "items": {
+        "$ref": "DimensionValue"
+       }
+      },
+      "conversionDimensions": {
+       "type": "array",
+       "description": "The list of conversion dimensions the report should include.",
+       "items": {
+        "$ref": "SortedDimension"
+       }
+      },
+      "customFloodlightVariables": {
+       "type": "array",
+       "description": "The list of custom floodlight variables the report should include.",
+       "items": {
+        "$ref": "SortedDimension"
+       }
+      },
+      "customRichMediaEvents": {
+       "type": "array",
+       "description": "The list of custom rich media events to include.",
+       "items": {
+        "$ref": "DimensionValue"
+       }
+      },
+      "dateRange": {
+       "$ref": "DateRange",
+       "description": "The date range this report should be run for."
+      },
+      "floodlightConfigId": {
+       "$ref": "DimensionValue",
+       "description": "The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'."
+      },
+      "metricNames": {
+       "type": "array",
+       "description": "The list of names of metrics the report should include.",
+       "items": {
+        "type": "string"
+       }
+      },
+      "perInteractionDimensions": {
+       "type": "array",
+       "description": "The list of per interaction dimensions the report should include.",
+       "items": {
+        "$ref": "SortedDimension"
+       }
+      },
+      "reportProperties": {
+       "type": "object",
+       "description": "The properties of the report.",
+       "properties": {
+        "clicksLookbackWindow": {
+         "type": "integer",
+         "description": "DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.",
+         "format": "int32"
+        },
+        "impressionsLookbackWindow": {
+         "type": "integer",
+         "description": "DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.",
+         "format": "int32"
+        },
+        "includeAttributedIPConversions": {
+         "type": "boolean",
+         "description": "Deprecated: has no effect."
+        },
+        "includeUnattributedCookieConversions": {
+         "type": "boolean",
+         "description": "Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window."
+        },
+        "includeUnattributedIPConversions": {
+         "type": "boolean",
+         "description": "Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion."
+        },
+        "maximumClickInteractions": {
+         "type": "integer",
+         "description": "The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.",
+         "format": "int32"
+        },
+        "maximumImpressionInteractions": {
+         "type": "integer",
+         "description": "The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.",
+         "format": "int32"
+        },
+        "maximumInteractionGap": {
+         "type": "integer",
+         "description": "The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.",
+         "format": "int32"
+        },
+        "pivotOnInteractionPath": {
+         "type": "boolean",
+         "description": "Enable pivoting on interaction path."
+        }
+       }
+      }
+     }
+    },
+    "reachCriteria": {
+     "type": "object",
+     "description": "The report criteria for a report of type \"REACH\".",
+     "properties": {
+      "activities": {
+       "$ref": "Activities",
+       "description": "Activity group."
+      },
+      "customRichMediaEvents": {
+       "$ref": "CustomRichMediaEvents",
+       "description": "Custom Rich Media Events group."
+      },
+      "dateRange": {
+       "$ref": "DateRange",
+       "description": "The date range this report should be run for."
+      },
+      "dimensionFilters": {
+       "type": "array",
+       "description": "The list of filters on which dimensions are filtered.\nFilters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.",
+       "items": {
+        "$ref": "DimensionValue"
+       }
+      },
+      "dimensions": {
+       "type": "array",
+       "description": "The list of dimensions the report should include.",
+       "items": {
+        "$ref": "SortedDimension"
+       }
+      },
+      "enableAllDimensionCombinations": {
+       "type": "boolean",
+       "description": "Whether to enable all reach dimension combinations in the report. Defaults to false. If enabled, the date range of the report should be within the last three months."
+      },
+      "metricNames": {
+       "type": "array",
+       "description": "The list of names of metrics the report should include.",
+       "items": {
+        "type": "string"
+       }
+      },
+      "reachByFrequencyMetricNames": {
+       "type": "array",
+       "description": "The list of names of  Reach By Frequency metrics the report should include.",
+       "items": {
+        "type": "string"
+       }
+      }
+     }
+    },
+    "schedule": {
+     "type": "object",
+     "description": "The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not \"TODAY\".",
+     "properties": {
+      "active": {
+       "type": "boolean",
+       "description": "Whether the schedule is active or not. Must be set to either true or false.",
+       "annotations": {
+        "required": [
+         "dfareporting.reports.insert",
+         "dfareporting.reports.update"
+        ]
+       }
+      },
+      "every": {
+       "type": "integer",
+       "description": "Defines every how many days, weeks or months the report should be run. Needs to be set when \"repeats\" is either \"DAILY\", \"WEEKLY\" or \"MONTHLY\".",
+       "format": "int32"
+      },
+      "expirationDate": {
+       "type": "string",
+       "description": "The expiration date when the scheduled report stops running.",
+       "format": "date",
+       "annotations": {
+        "required": [
+         "dfareporting.reports.insert",
+         "dfareporting.reports.update"
+        ]
+       }
+      },
+      "repeats": {
+       "type": "string",
+       "description": "The interval for which the report is repeated. Note:  \n- \"DAILY\" also requires field \"every\" to be set. \n- \"WEEKLY\" also requires fields \"every\" and \"repeatsOnWeekDays\" to be set. \n- \"MONTHLY\" also requires fields \"every\" and \"runsOnDayOfMonth\" to be set.",
+       "annotations": {
+        "required": [
+         "dfareporting.reports.insert",
+         "dfareporting.reports.update"
+        ]
+       }
+      },
+      "repeatsOnWeekDays": {
+       "type": "array",
+       "description": "List of week days \"WEEKLY\" on which scheduled reports should run.",
+       "items": {
+        "type": "string",
+        "enum": [
+         "FRIDAY",
+         "MONDAY",
+         "SATURDAY",
+         "SUNDAY",
+         "THURSDAY",
+         "TUESDAY",
+         "WEDNESDAY"
+        ],
+        "enumDescriptions": [
+         "",
+         "",
+         "",
+         "",
+         "",
+         "",
+         ""
+        ]
+       }
+      },
+      "runsOnDayOfMonth": {
+       "type": "string",
+       "description": "Enum to define for \"MONTHLY\" scheduled reports whether reports should be repeated on the same day of the month as \"startDate\" or the same day of the week of the month.\nExample: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), \"DAY_OF_MONTH\" would run subsequent reports on the 2nd of every Month, and \"WEEK_OF_MONTH\" would run subsequent reports on the first Monday of the month.",
+       "enum": [
+        "DAY_OF_MONTH",
+        "WEEK_OF_MONTH"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ]
+      },
+      "startDate": {
+       "type": "string",
+       "description": "Start date of date range for which scheduled reports should be run.",
+       "format": "date",
+       "annotations": {
+        "required": [
+         "dfareporting.reports.insert",
+         "dfareporting.reports.update"
+        ]
+       }
+      }
+     }
+    },
+    "subAccountId": {
+     "type": "string",
+     "description": "The subaccount ID to which this report belongs if applicable.",
+     "format": "int64"
+    },
+    "type": {
+     "type": "string",
+     "description": "The type of the report.",
+     "enum": [
+      "CROSS_DIMENSION_REACH",
+      "FLOODLIGHT",
+      "PATH_TO_CONVERSION",
+      "REACH",
+      "STANDARD"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      ""
+     ],
+     "annotations": {
+      "required": [
+       "dfareporting.reports.insert",
+       "dfareporting.reports.update"
+      ]
+     }
+    }
+   }
+  },
+  "ReportCompatibleFields": {
+   "id": "ReportCompatibleFields",
+   "type": "object",
+   "description": "Represents fields that are compatible to be selected for a report of type \"STANDARD\".",
+   "properties": {
+    "dimensionFilters": {
+     "type": "array",
+     "description": "Dimensions which are compatible to be selected in the \"dimensionFilters\" section of the report.",
+     "items": {
+      "$ref": "Dimension"
+     }
+    },
+    "dimensions": {
+     "type": "array",
+     "description": "Dimensions which are compatible to be selected in the \"dimensions\" section of the report.",
+     "items": {
+      "$ref": "Dimension"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#reportCompatibleFields.",
+     "default": "dfareporting#reportCompatibleFields"
+    },
+    "metrics": {
+     "type": "array",
+     "description": "Metrics which are compatible to be selected in the \"metricNames\" section of the report.",
+     "items": {
+      "$ref": "Metric"
+     }
+    },
+    "pivotedActivityMetrics": {
+     "type": "array",
+     "description": "Metrics which are compatible to be selected as activity metrics to pivot on in the \"activities\" section of the report.",
+     "items": {
+      "$ref": "Metric"
+     }
+    }
+   }
+  },
+  "ReportList": {
+   "id": "ReportList",
+   "type": "object",
+   "description": "Represents the list of reports.",
+   "properties": {
+    "etag": {
+     "type": "string",
+     "description": "The eTag of this response for caching purposes."
+    },
+    "items": {
+     "type": "array",
+     "description": "The reports returned in this response.",
+     "items": {
+      "$ref": "Report"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of list this is, in this case dfareporting#reportList.",
+     "default": "dfareporting#reportList"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Continuation token used to page through reports. To retrieve the next page of results, set the next request's \"pageToken\" to the value of this field. The page token is only valid for a limited amount of time and should not be persisted."
+    }
+   }
+  },
+  "ReportsConfiguration": {
+   "id": "ReportsConfiguration",
+   "type": "object",
+   "description": "Reporting Configuration",
+   "properties": {
+    "exposureToConversionEnabled": {
+     "type": "boolean",
+     "description": "Whether the exposure to conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting."
+    },
+    "lookbackConfiguration": {
+     "$ref": "LookbackConfiguration",
+     "description": "Default lookback windows for new advertisers in this account."
+    },
+    "reportGenerationTimeZoneId": {
+     "type": "string",
+     "description": "Report generation time zone ID of this account. This is a required field that can only be changed by a superuser.\nAcceptable values are:\n\n- \"1\" for \"America/New_York\" \n- \"2\" for \"Europe/London\" \n- \"3\" for \"Europe/Paris\" \n- \"4\" for \"Africa/Johannesburg\" \n- \"5\" for \"Asia/Jerusalem\" \n- \"6\" for \"Asia/Shanghai\" \n- \"7\" for \"Asia/Hong_Kong\" \n- \"8\" for \"Asia/Tokyo\" \n- \"9\" for \"Australia/Sydney\" \n- \"10\" for \"Asia/Dubai\" \n- \"11\" for \"America/Los_Angeles\" \n- \"12\" for \"Pacific/Auckland\" \n- \"13\" for \"America/Sao_Paulo\"",
+     "format": "int64"
+    }
+   }
+  },
+  "RichMediaExitOverride": {
+   "id": "RichMediaExitOverride",
+   "type": "object",
+   "description": "Rich Media Exit Override.",
+   "properties": {
+    "customExitUrl": {
+     "type": "string",
+     "description": "Click-through URL to override the default exit URL. Applicable if the useCustomExitUrl field is set to true."
+    },
+    "exitId": {
+     "type": "string",
+     "description": "ID for the override to refer to a specific exit in the creative.",
+     "format": "int64"
+    },
+    "useCustomExitUrl": {
+     "type": "boolean",
+     "description": "Whether to use the custom exit URL."
+    }
+   }
+  },
+  "Site": {
+   "id": "Site",
+   "type": "object",
+   "description": "Contains properties of a site.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this site. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "approved": {
+     "type": "boolean",
+     "description": "Whether this site is approved."
+    },
+    "directorySiteId": {
+     "type": "string",
+     "description": "Directory site associated with this site. This is a required field that is read-only after insertion.",
+     "format": "int64"
+    },
+    "directorySiteIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the directory site. This is a read-only, auto-generated field."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this site. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "idDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of this site. This is a read-only, auto-generated field."
+    },
+    "keyName": {
+     "type": "string",
+     "description": "Key name of this site. This is a read-only, auto-generated field."
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#site\".",
+     "default": "dfareporting#site"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this site.This is a required field. Must be less than 128 characters long. If this site is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this site is a top-level site, and the name must be unique among top-level sites of the same account."
+    },
+    "siteContacts": {
+     "type": "array",
+     "description": "Site contacts.",
+     "items": {
+      "$ref": "SiteContact"
+     }
+    },
+    "siteSettings": {
+     "$ref": "SiteSettings",
+     "description": "Site-wide settings."
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this site. This is a read-only field that can be left blank.",
+     "format": "int64"
+    }
+   }
+  },
+  "SiteContact": {
+   "id": "SiteContact",
+   "type": "object",
+   "description": "Site Contact",
+   "properties": {
+    "address": {
+     "type": "string",
+     "description": "Address of this site contact."
+    },
+    "contactType": {
+     "type": "string",
+     "description": "Site contact type.",
+     "enum": [
+      "SALES_PERSON",
+      "TRAFFICKER"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "email": {
+     "type": "string",
+     "description": "Email address of this site contact. This is a required field."
+    },
+    "firstName": {
+     "type": "string",
+     "description": "First name of this site contact."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this site contact. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "lastName": {
+     "type": "string",
+     "description": "Last name of this site contact."
+    },
+    "phone": {
+     "type": "string",
+     "description": "Primary phone number of this site contact."
+    },
+    "title": {
+     "type": "string",
+     "description": "Title or designation of this site contact."
+    }
+   }
+  },
+  "SiteSettings": {
+   "id": "SiteSettings",
+   "type": "object",
+   "description": "Site Settings",
+   "properties": {
+    "activeViewOptOut": {
+     "type": "boolean",
+     "description": "Whether active view creatives are disabled for this site."
+    },
+    "creativeSettings": {
+     "$ref": "CreativeSettings",
+     "description": "Site-wide creative settings."
+    },
+    "disableBrandSafeAds": {
+     "type": "boolean",
+     "description": "Whether brand safe ads are disabled for this site."
+    },
+    "disableNewCookie": {
+     "type": "boolean",
+     "description": "Whether new cookies are disabled for this site."
+    },
+    "lookbackConfiguration": {
+     "$ref": "LookbackConfiguration",
+     "description": "Lookback window settings for this site."
+    },
+    "tagSetting": {
+     "$ref": "TagSetting",
+     "description": "Configuration settings for dynamic and image floodlight tags."
+    },
+    "videoActiveViewOptOut": {
+     "type": "boolean",
+     "description": "Whether Verification and ActiveView are disabled for in-stream video creatives on this site. The same setting videoActiveViewOptOut exists on the directory site level -- the opt out occurs if either of these settings are true. These settings are distinct from DirectorySites.settings.activeViewOptOut or Sites.siteSettings.activeViewOptOut which only apply to display ads. However, Accounts.activeViewOptOut opts out both video traffic, as well as display ads, from Verification and ActiveView."
+    }
+   }
+  },
+  "SitesListResponse": {
+   "id": "SitesListResponse",
+   "type": "object",
+   "description": "Site List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#sitesListResponse\".",
+     "default": "dfareporting#sitesListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    },
+    "sites": {
+     "type": "array",
+     "description": "Site collection.",
+     "items": {
+      "$ref": "Site"
+     }
+    }
+   }
+  },
+  "Size": {
+   "id": "Size",
+   "type": "object",
+   "description": "Represents the dimensions of ads, placements, creatives, or creative assets.",
+   "properties": {
+    "height": {
+     "type": "integer",
+     "description": "Height of this size.",
+     "format": "int32"
+    },
+    "iab": {
+     "type": "boolean",
+     "description": "IAB standard size. This is a read-only, auto-generated field."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this size. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#size\".",
+     "default": "dfareporting#size"
+    },
+    "width": {
+     "type": "integer",
+     "description": "Width of this size.",
+     "format": "int32"
+    }
+   }
+  },
+  "SizesListResponse": {
+   "id": "SizesListResponse",
+   "type": "object",
+   "description": "Size List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#sizesListResponse\".",
+     "default": "dfareporting#sizesListResponse"
+    },
+    "sizes": {
+     "type": "array",
+     "description": "Size collection.",
+     "items": {
+      "$ref": "Size"
+     }
+    }
+   }
+  },
+  "SortedDimension": {
+   "id": "SortedDimension",
+   "type": "object",
+   "description": "Represents a sorted dimension.",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#sortedDimension.",
+     "default": "dfareporting#sortedDimension"
+    },
+    "name": {
+     "type": "string",
+     "description": "The name of the dimension."
+    },
+    "sortOrder": {
+     "type": "string",
+     "description": "An optional sort order for the dimension column.",
+     "enum": [
+      "ASCENDING",
+      "DESCENDING"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "Subaccount": {
+   "id": "Subaccount",
+   "type": "object",
+   "description": "Contains properties of a DCM subaccount.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "ID of the account that contains this subaccount. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "availablePermissionIds": {
+     "type": "array",
+     "description": "IDs of the available user role permissions for this subaccount.",
+     "items": {
+      "type": "string",
+      "format": "int64"
+     }
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this subaccount. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#subaccount\".",
+     "default": "dfareporting#subaccount"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this subaccount. This is a required field. Must be less than 128 characters long and be unique among subaccounts of the same account."
+    }
+   }
+  },
+  "SubaccountsListResponse": {
+   "id": "SubaccountsListResponse",
+   "type": "object",
+   "description": "Subaccount List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#subaccountsListResponse\".",
+     "default": "dfareporting#subaccountsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    },
+    "subaccounts": {
+     "type": "array",
+     "description": "Subaccount collection.",
+     "items": {
+      "$ref": "Subaccount"
+     }
+    }
+   }
+  },
+  "TagData": {
+   "id": "TagData",
+   "type": "object",
+   "description": "Placement Tag Data",
+   "properties": {
+    "adId": {
+     "type": "string",
+     "description": "Ad associated with this placement tag.",
+     "format": "int64"
+    },
+    "clickTag": {
+     "type": "string",
+     "description": "Tag string to record a click."
+    },
+    "creativeId": {
+     "type": "string",
+     "description": "Creative associated with this placement tag.",
+     "format": "int64"
+    },
+    "format": {
+     "type": "string",
+     "description": "TagData tag format of this tag.",
+     "enum": [
+      "PLACEMENT_TAG_CLICK_COMMANDS",
+      "PLACEMENT_TAG_IFRAME_ILAYER",
+      "PLACEMENT_TAG_IFRAME_JAVASCRIPT",
+      "PLACEMENT_TAG_IFRAME_JAVASCRIPT_LEGACY",
+      "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH",
+      "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3",
+      "PLACEMENT_TAG_INTERNAL_REDIRECT",
+      "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT",
+      "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT_LEGACY",
+      "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT",
+      "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT",
+      "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT_LEGACY",
+      "PLACEMENT_TAG_JAVASCRIPT",
+      "PLACEMENT_TAG_JAVASCRIPT_LEGACY",
+      "PLACEMENT_TAG_STANDARD",
+      "PLACEMENT_TAG_TRACKING",
+      "PLACEMENT_TAG_TRACKING_IFRAME",
+      "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "impressionTag": {
+     "type": "string",
+     "description": "Tag string for serving an ad."
+    }
+   }
+  },
+  "TagSetting": {
+   "id": "TagSetting",
+   "type": "object",
+   "description": "Tag Settings",
+   "properties": {
+    "additionalKeyValues": {
+     "type": "string",
+     "description": "Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field."
+    },
+    "includeClickThroughUrls": {
+     "type": "boolean",
+     "description": "Whether static landing page URLs should be included in the tags. This setting applies only to placements."
+    },
+    "includeClickTracking": {
+     "type": "boolean",
+     "description": "Whether click-tracking string should be included in the tags."
+    },
+    "keywordOption": {
+     "type": "string",
+     "description": "Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.",
+     "enum": [
+      "GENERATE_SEPARATE_TAG_FOR_EACH_KEYWORD",
+      "IGNORE",
+      "PLACEHOLDER_WITH_LIST_OF_KEYWORDS"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "TagSettings": {
+   "id": "TagSettings",
+   "type": "object",
+   "description": "Dynamic and Image Tag Settings.",
+   "properties": {
+    "dynamicTagEnabled": {
+     "type": "boolean",
+     "description": "Whether dynamic floodlight tags are enabled."
+    },
+    "imageTagEnabled": {
+     "type": "boolean",
+     "description": "Whether image tags are enabled."
+    }
+   }
+  },
+  "TargetWindow": {
+   "id": "TargetWindow",
+   "type": "object",
+   "description": "Target Window.",
+   "properties": {
+    "customHtml": {
+     "type": "string",
+     "description": "User-entered value."
+    },
+    "targetWindowOption": {
+     "type": "string",
+     "description": "Type of browser window for which the backup image of the flash creative can be displayed.",
+     "enum": [
+      "CURRENT_WINDOW",
+      "CUSTOM",
+      "NEW_WINDOW"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "TargetableRemarketingList": {
+   "id": "TargetableRemarketingList",
+   "type": "object",
+   "description": "Contains properties of a targetable remarketing list. Remarketing enables you to create lists of users who have performed specific actions on a site, then target ads to members of those lists. This resource is a read-only view of a remarketing list to be used to faciliate targeting ads to specific lists. Remarketing lists that are owned by your advertisers and those that are shared to your advertisers or account are accessible via this resource. To manage remarketing lists that are owned by your advertisers, use the RemarketingLists resource.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.",
+     "format": "int64"
+    },
+    "active": {
+     "type": "boolean",
+     "description": "Whether this targetable remarketing list is active."
+    },
+    "advertiserId": {
+     "type": "string",
+     "description": "Dimension value for the advertiser ID that owns this targetable remarketing list.",
+     "format": "int64"
+    },
+    "advertiserIdDimensionValue": {
+     "$ref": "DimensionValue",
+     "description": "Dimension value for the ID of the advertiser."
+    },
+    "description": {
+     "type": "string",
+     "description": "Targetable remarketing list description."
+    },
+    "id": {
+     "type": "string",
+     "description": "Targetable remarketing list ID.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#targetableRemarketingList\".",
+     "default": "dfareporting#targetableRemarketingList"
+    },
+    "lifeSpan": {
+     "type": "string",
+     "description": "Number of days that a user should remain in the targetable remarketing list without an impression.",
+     "format": "int64"
+    },
+    "listSize": {
+     "type": "string",
+     "description": "Number of users currently in the list. This is a read-only field.",
+     "format": "int64"
+    },
+    "listSource": {
+     "type": "string",
+     "description": "Product from which this targetable remarketing list was originated.",
+     "enum": [
+      "REMARKETING_LIST_SOURCE_ADX",
+      "REMARKETING_LIST_SOURCE_DBM",
+      "REMARKETING_LIST_SOURCE_DFA",
+      "REMARKETING_LIST_SOURCE_DFP",
+      "REMARKETING_LIST_SOURCE_DMP",
+      "REMARKETING_LIST_SOURCE_GA",
+      "REMARKETING_LIST_SOURCE_GPLUS",
+      "REMARKETING_LIST_SOURCE_OTHER",
+      "REMARKETING_LIST_SOURCE_PLAY_STORE",
+      "REMARKETING_LIST_SOURCE_XFP",
+      "REMARKETING_LIST_SOURCE_YOUTUBE"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of the targetable remarketing list. Is no greater than 128 characters long."
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.",
+     "format": "int64"
+    }
+   }
+  },
+  "TargetableRemarketingListsListResponse": {
+   "id": "TargetableRemarketingListsListResponse",
+   "type": "object",
+   "description": "Targetable remarketing list response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#targetableRemarketingListsListResponse\".",
+     "default": "dfareporting#targetableRemarketingListsListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    },
+    "targetableRemarketingLists": {
+     "type": "array",
+     "description": "Targetable remarketing list collection.",
+     "items": {
+      "$ref": "TargetableRemarketingList"
+     }
+    }
+   }
+  },
+  "TechnologyTargeting": {
+   "id": "TechnologyTargeting",
+   "type": "object",
+   "description": "Technology Targeting.",
+   "properties": {
+    "browsers": {
+     "type": "array",
+     "description": "Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used.The other fields are populated automatically when the ad is inserted or updated.",
+     "items": {
+      "$ref": "Browser"
+     }
+    },
+    "connectionTypes": {
+     "type": "array",
+     "description": "Connection types that this ad targets. For each connection type only id is required.The other fields are populated automatically when the ad is inserted or updated.",
+     "items": {
+      "$ref": "ConnectionType"
+     }
+    },
+    "mobileCarriers": {
+     "type": "array",
+     "description": "Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.",
+     "items": {
+      "$ref": "MobileCarrier"
+     }
+    },
+    "operatingSystemVersions": {
+     "type": "array",
+     "description": "Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.",
+     "items": {
+      "$ref": "OperatingSystemVersion"
+     }
+    },
+    "operatingSystems": {
+     "type": "array",
+     "description": "Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.",
+     "items": {
+      "$ref": "OperatingSystem"
+     }
+    },
+    "platformTypes": {
+     "type": "array",
+     "description": "Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.",
+     "items": {
+      "$ref": "PlatformType"
+     }
+    }
+   }
+  },
+  "ThirdPartyAuthenticationToken": {
+   "id": "ThirdPartyAuthenticationToken",
+   "type": "object",
+   "description": "Third Party Authentication Token",
+   "properties": {
+    "name": {
+     "type": "string",
+     "description": "Name of the third-party authentication token."
+    },
+    "value": {
+     "type": "string",
+     "description": "Value of the third-party authentication token. This is a read-only, auto-generated field."
+    }
+   }
+  },
+  "ThirdPartyTrackingUrl": {
+   "id": "ThirdPartyTrackingUrl",
+   "type": "object",
+   "description": "Third-party Tracking URL.",
+   "properties": {
+    "thirdPartyUrlType": {
+     "type": "string",
+     "description": "Third-party URL type for in-stream video creatives.",
+     "enum": [
+      "CLICK_TRACKING",
+      "IMPRESSION",
+      "RICH_MEDIA_BACKUP_IMPRESSION",
+      "RICH_MEDIA_IMPRESSION",
+      "RICH_MEDIA_RM_IMPRESSION",
+      "SURVEY",
+      "VIDEO_COMPLETE",
+      "VIDEO_CUSTOM",
+      "VIDEO_FIRST_QUARTILE",
+      "VIDEO_FULLSCREEN",
+      "VIDEO_MIDPOINT",
+      "VIDEO_MUTE",
+      "VIDEO_PAUSE",
+      "VIDEO_PROGRESS",
+      "VIDEO_REWIND",
+      "VIDEO_SKIP",
+      "VIDEO_START",
+      "VIDEO_STOP",
+      "VIDEO_THIRD_QUARTILE"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "url": {
+     "type": "string",
+     "description": "URL for the specified third-party URL type."
+    }
+   }
+  },
+  "UserDefinedVariableConfiguration": {
+   "id": "UserDefinedVariableConfiguration",
+   "type": "object",
+   "description": "User Defined Variable configuration.",
+   "properties": {
+    "dataType": {
+     "type": "string",
+     "description": "Data type for the variable. This is a required field.",
+     "enum": [
+      "NUMBER",
+      "STRING"
+     ],
+     "enumDescriptions": [
+      "",
+      ""
+     ]
+    },
+    "reportName": {
+     "type": "string",
+     "description": "User-friendly name for the variable which will appear in reports. This is a required field, must be less than 64 characters long, and cannot contain the following characters: \"\"\u003c\u003e\"."
+    },
+    "variableType": {
+     "type": "string",
+     "description": "Variable name in the tag. This is a required field.",
+     "enum": [
+      "U1",
+      "U10",
+      "U11",
+      "U12",
+      "U13",
+      "U14",
+      "U15",
+      "U16",
+      "U17",
+      "U18",
+      "U19",
+      "U2",
+      "U20",
+      "U3",
+      "U4",
+      "U5",
+      "U6",
+      "U7",
+      "U8",
+      "U9"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    }
+   }
+  },
+  "UserProfile": {
+   "id": "UserProfile",
+   "type": "object",
+   "description": "Represents a UserProfile resource.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "The account ID to which this profile belongs.",
+     "format": "int64"
+    },
+    "accountName": {
+     "type": "string",
+     "description": "The account name this profile belongs to."
+    },
+    "etag": {
+     "type": "string",
+     "description": "The eTag of this response for caching purposes."
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of resource this is, in this case dfareporting#userProfile.",
+     "default": "dfareporting#userProfile"
+    },
+    "profileId": {
+     "type": "string",
+     "description": "The unique ID of the user profile.",
+     "format": "int64"
+    },
+    "subAccountId": {
+     "type": "string",
+     "description": "The sub account ID this profile belongs to if applicable.",
+     "format": "int64"
+    },
+    "subAccountName": {
+     "type": "string",
+     "description": "The sub account name this profile belongs to if applicable."
+    },
+    "userName": {
+     "type": "string",
+     "description": "The user name."
+    }
+   }
+  },
+  "UserProfileList": {
+   "id": "UserProfileList",
+   "type": "object",
+   "description": "Represents the list of user profiles.",
+   "properties": {
+    "etag": {
+     "type": "string",
+     "description": "The eTag of this response for caching purposes."
+    },
+    "items": {
+     "type": "array",
+     "description": "The user profiles returned in this response.",
+     "items": {
+      "$ref": "UserProfile"
+     }
+    },
+    "kind": {
+     "type": "string",
+     "description": "The kind of list this is, in this case dfareporting#userProfileList.",
+     "default": "dfareporting#userProfileList"
+    }
+   }
+  },
+  "UserRole": {
+   "id": "UserRole",
+   "type": "object",
+   "description": "Contains properties of auser role, which is used to manage user access.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Account ID of this user role. This is a read-only field that can be left blank.",
+     "format": "int64"
+    },
+    "defaultUserRole": {
+     "type": "boolean",
+     "description": "Whether this is a default user role. Default user roles are created by the system for the account/subaccount and cannot be modified or deleted. Each default user role comes with a basic set of preassigned permissions."
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this user role. This is a read-only, auto-generated field.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#userRole\".",
+     "default": "dfareporting#userRole"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this user role. This is a required field. Must be less than 256 characters long. If this user role is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this user role is a top-level user role, and the name must be unique among top-level user roles of the same account."
+    },
+    "parentUserRoleId": {
+     "type": "string",
+     "description": "ID of the user role that this user role is based on or copied from. This is a required field.",
+     "format": "int64"
+    },
+    "permissions": {
+     "type": "array",
+     "description": "List of permissions associated with this user role.",
+     "items": {
+      "$ref": "UserRolePermission"
+     }
+    },
+    "subaccountId": {
+     "type": "string",
+     "description": "Subaccount ID of this user role. This is a read-only field that can be left blank.",
+     "format": "int64"
+    }
+   }
+  },
+  "UserRolePermission": {
+   "id": "UserRolePermission",
+   "type": "object",
+   "description": "Contains properties of a user role permission.",
+   "properties": {
+    "availability": {
+     "type": "string",
+     "description": "Levels of availability for a user role permission.",
+     "enum": [
+      "ACCOUNT_ALWAYS",
+      "ACCOUNT_BY_DEFAULT",
+      "NOT_AVAILABLE_BY_DEFAULT",
+      "SUBACCOUNT_AND_ACCOUNT_ALWAYS",
+      "SUBACCOUNT_AND_ACCOUNT_BY_DEFAULT"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
+    "id": {
+     "type": "string",
+     "description": "ID of this user role permission.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#userRolePermission\".",
+     "default": "dfareporting#userRolePermission"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this user role permission."
+    },
+    "permissionGroupId": {
+     "type": "string",
+     "description": "ID of the permission group that this user role permission belongs to.",
+     "format": "int64"
+    }
+   }
+  },
+  "UserRolePermissionGroup": {
+   "id": "UserRolePermissionGroup",
+   "type": "object",
+   "description": "Represents a grouping of related user role permissions.",
+   "properties": {
+    "id": {
+     "type": "string",
+     "description": "ID of this user role permission.",
+     "format": "int64"
+    },
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#userRolePermissionGroup\".",
+     "default": "dfareporting#userRolePermissionGroup"
+    },
+    "name": {
+     "type": "string",
+     "description": "Name of this user role permission group."
+    }
+   }
+  },
+  "UserRolePermissionGroupsListResponse": {
+   "id": "UserRolePermissionGroupsListResponse",
+   "type": "object",
+   "description": "User Role Permission Group List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#userRolePermissionGroupsListResponse\".",
+     "default": "dfareporting#userRolePermissionGroupsListResponse"
+    },
+    "userRolePermissionGroups": {
+     "type": "array",
+     "description": "User role permission group collection.",
+     "items": {
+      "$ref": "UserRolePermissionGroup"
+     }
+    }
+   }
+  },
+  "UserRolePermissionsListResponse": {
+   "id": "UserRolePermissionsListResponse",
+   "type": "object",
+   "description": "User Role Permission List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#userRolePermissionsListResponse\".",
+     "default": "dfareporting#userRolePermissionsListResponse"
+    },
+    "userRolePermissions": {
+     "type": "array",
+     "description": "User role permission collection.",
+     "items": {
+      "$ref": "UserRolePermission"
+     }
+    }
+   }
+  },
+  "UserRolesListResponse": {
+   "id": "UserRolesListResponse",
+   "type": "object",
+   "description": "User Role List Response",
+   "properties": {
+    "kind": {
+     "type": "string",
+     "description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#userRolesListResponse\".",
+     "default": "dfareporting#userRolesListResponse"
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "Pagination token to be used for the next list operation."
+    },
+    "userRoles": {
+     "type": "array",
+     "description": "User role collection.",
+     "items": {
+      "$ref": "UserRole"
+     }
+    }
+   }
+  }
+ },
+ "resources": {
+  "accountActiveAdSummaries": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.accountActiveAdSummaries.get",
+     "path": "userprofiles/{profileId}/accountActiveAdSummaries/{summaryAccountId}",
+     "httpMethod": "GET",
+     "description": "Gets the account's active ad summary by account ID.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "summaryAccountId": {
+       "type": "string",
+       "description": "Account ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "summaryAccountId"
+     ],
+     "response": {
+      "$ref": "AccountActiveAdSummary"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "accountPermissionGroups": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.accountPermissionGroups.get",
+     "path": "userprofiles/{profileId}/accountPermissionGroups/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one account permission group by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Account permission group ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "AccountPermissionGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.accountPermissionGroups.list",
+     "path": "userprofiles/{profileId}/accountPermissionGroups",
+     "httpMethod": "GET",
+     "description": "Retrieves the list of account permission groups.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "AccountPermissionGroupsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "accountPermissions": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.accountPermissions.get",
+     "path": "userprofiles/{profileId}/accountPermissions/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one account permission by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Account permission ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "AccountPermission"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.accountPermissions.list",
+     "path": "userprofiles/{profileId}/accountPermissions",
+     "httpMethod": "GET",
+     "description": "Retrieves the list of account permissions.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "AccountPermissionsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "accountUserProfiles": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.accountUserProfiles.get",
+     "path": "userprofiles/{profileId}/accountUserProfiles/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one account user profile by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "User profile ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "AccountUserProfile"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.accountUserProfiles.insert",
+     "path": "userprofiles/{profileId}/accountUserProfiles",
+     "httpMethod": "POST",
+     "description": "Inserts a new account user profile.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "AccountUserProfile"
+     },
+     "response": {
+      "$ref": "AccountUserProfile"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.accountUserProfiles.list",
+     "path": "userprofiles/{profileId}/accountUserProfiles",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of account user profiles, possibly filtered.",
+     "parameters": {
+      "active": {
+       "type": "boolean",
+       "description": "Select only active user profiles.",
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only user profiles with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name, ID or email. Wildcards (*) are allowed. For example, \"user profile*2015\" will return objects with names like \"user profile June 2015\", \"user profile April 2015\", or simply \"user profile 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 \"user profile\" will match objects with name \"my user profile\", \"user profile 2015\", or simply \"user profile\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "subaccountId": {
+       "type": "string",
+       "description": "Select only user profiles with the specified subaccount ID.",
+       "format": "int64",
+       "location": "query"
+      },
+      "userRoleId": {
+       "type": "string",
+       "description": "Select only user profiles with the specified user role ID.",
+       "format": "int64",
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "AccountUserProfilesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.accountUserProfiles.patch",
+     "path": "userprofiles/{profileId}/accountUserProfiles",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing account user profile. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "User profile ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "AccountUserProfile"
+     },
+     "response": {
+      "$ref": "AccountUserProfile"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.accountUserProfiles.update",
+     "path": "userprofiles/{profileId}/accountUserProfiles",
+     "httpMethod": "PUT",
+     "description": "Updates an existing account user profile.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "AccountUserProfile"
+     },
+     "response": {
+      "$ref": "AccountUserProfile"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "accounts": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.accounts.get",
+     "path": "userprofiles/{profileId}/accounts/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one account by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Account ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "Account"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.accounts.list",
+     "path": "userprofiles/{profileId}/accounts",
+     "httpMethod": "GET",
+     "description": "Retrieves the list of accounts, possibly filtered.",
+     "parameters": {
+      "active": {
+       "type": "boolean",
+       "description": "Select only active accounts. Don't set this field to select both active and non-active accounts.",
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only accounts with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"account*2015\" will return objects with names like \"account June 2015\", \"account April 2015\", or simply \"account 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 \"account\" will match objects with name \"my account\", \"account 2015\", or simply \"account\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "AccountsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.accounts.patch",
+     "path": "userprofiles/{profileId}/accounts",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing account. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Account ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "Account"
+     },
+     "response": {
+      "$ref": "Account"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.accounts.update",
+     "path": "userprofiles/{profileId}/accounts",
+     "httpMethod": "PUT",
+     "description": "Updates an existing account.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Account"
+     },
+     "response": {
+      "$ref": "Account"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "ads": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.ads.get",
+     "path": "userprofiles/{profileId}/ads/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one ad by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Ad ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "Ad"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.ads.insert",
+     "path": "userprofiles/{profileId}/ads",
+     "httpMethod": "POST",
+     "description": "Inserts a new ad.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Ad"
+     },
+     "response": {
+      "$ref": "Ad"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.ads.list",
+     "path": "userprofiles/{profileId}/ads",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of ads, possibly filtered.",
+     "parameters": {
+      "active": {
+       "type": "boolean",
+       "description": "Select only active ads.",
+       "location": "query"
+      },
+      "advertiserId": {
+       "type": "string",
+       "description": "Select only ads with this advertiser ID.",
+       "format": "int64",
+       "location": "query"
+      },
+      "archived": {
+       "type": "boolean",
+       "description": "Select only archived ads.",
+       "location": "query"
+      },
+      "audienceSegmentIds": {
+       "type": "string",
+       "description": "Select only ads with these audience segment IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "campaignIds": {
+       "type": "string",
+       "description": "Select only ads with these campaign IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "compatibility": {
+       "type": "string",
+       "description": "Select default ads with the specified compatibility. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. IN_STREAM_VIDEO refers to rendering an in-stream video ads developed with the VAST standard.",
+       "enum": [
+        "APP",
+        "APP_INTERSTITIAL",
+        "DISPLAY",
+        "DISPLAY_INTERSTITIAL",
+        "IN_STREAM_VIDEO"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        "",
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "creativeIds": {
+       "type": "string",
+       "description": "Select only ads with these creative IDs assigned.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "creativeOptimizationConfigurationIds": {
+       "type": "string",
+       "description": "Select only ads with these creative optimization configuration IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "creativeType": {
+       "type": "string",
+       "description": "Select only ads with the specified creativeType.",
+       "enum": [
+        "BRAND_SAFE_DEFAULT_INSTREAM_VIDEO",
+        "CUSTOM_INPAGE",
+        "CUSTOM_INTERSTITIAL",
+        "ENHANCED_BANNER",
+        "ENHANCED_IMAGE",
+        "FLASH_INPAGE",
+        "HTML5_BANNER",
+        "IMAGE",
+        "INSTREAM_VIDEO",
+        "INSTREAM_VIDEO_REDIRECT",
+        "INTERNAL_REDIRECT",
+        "INTERSTITIAL_INTERNAL_REDIRECT",
+        "REDIRECT",
+        "RICH_MEDIA_EXPANDING",
+        "RICH_MEDIA_IM_EXPAND",
+        "RICH_MEDIA_INPAGE",
+        "RICH_MEDIA_INPAGE_FLOATING",
+        "RICH_MEDIA_INTERSTITIAL_FLOAT",
+        "RICH_MEDIA_MOBILE_IN_APP",
+        "RICH_MEDIA_MULTI_FLOATING",
+        "RICH_MEDIA_PEEL_DOWN",
+        "TRACKING_TEXT",
+        "VPAID_LINEAR",
+        "VPAID_NON_LINEAR"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "dynamicClickTracker": {
+       "type": "boolean",
+       "description": "Select only dynamic click trackers. Applicable when type is AD_SERVING_CLICK_TRACKER. If true, select dynamic click trackers. If false, select static click trackers. Leave unset to select both.",
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only ads with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "landingPageIds": {
+       "type": "string",
+       "description": "Select only ads with these landing page IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "overriddenEventTagId": {
+       "type": "string",
+       "description": "Select only ads with this event tag override ID.",
+       "format": "int64",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "placementIds": {
+       "type": "string",
+       "description": "Select only ads with these placement IDs assigned.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "remarketingListIds": {
+       "type": "string",
+       "description": "Select only ads whose list targeting expression use these remarketing list IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"ad*2015\" will return objects with names like \"ad June 2015\", \"ad April 2015\", or simply \"ad 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 \"ad\" will match objects with name \"my ad\", \"ad 2015\", or simply \"ad\".",
+       "location": "query"
+      },
+      "sizeIds": {
+       "type": "string",
+       "description": "Select only ads with these size IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sslCompliant": {
+       "type": "boolean",
+       "description": "Select only ads that are SSL-compliant.",
+       "location": "query"
+      },
+      "sslRequired": {
+       "type": "boolean",
+       "description": "Select only ads that require SSL.",
+       "location": "query"
+      },
+      "type": {
+       "type": "string",
+       "description": "Select only ads with these types.",
+       "enum": [
+        "AD_SERVING_CLICK_TRACKER",
+        "AD_SERVING_DEFAULT_AD",
+        "AD_SERVING_STANDARD_AD",
+        "AD_SERVING_TRACKING"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        "",
+        ""
+       ],
+       "repeated": true,
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "AdsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.ads.patch",
+     "path": "userprofiles/{profileId}/ads",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing ad. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Ad ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "Ad"
+     },
+     "response": {
+      "$ref": "Ad"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.ads.update",
+     "path": "userprofiles/{profileId}/ads",
+     "httpMethod": "PUT",
+     "description": "Updates an existing ad.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Ad"
+     },
+     "response": {
+      "$ref": "Ad"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "advertiserGroups": {
+   "methods": {
+    "delete": {
+     "id": "dfareporting.advertiserGroups.delete",
+     "path": "userprofiles/{profileId}/advertiserGroups/{id}",
+     "httpMethod": "DELETE",
+     "description": "Deletes an existing advertiser group.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Advertiser group ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "get": {
+     "id": "dfareporting.advertiserGroups.get",
+     "path": "userprofiles/{profileId}/advertiserGroups/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one advertiser group by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Advertiser group ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "AdvertiserGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.advertiserGroups.insert",
+     "path": "userprofiles/{profileId}/advertiserGroups",
+     "httpMethod": "POST",
+     "description": "Inserts a new advertiser group.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "AdvertiserGroup"
+     },
+     "response": {
+      "$ref": "AdvertiserGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.advertiserGroups.list",
+     "path": "userprofiles/{profileId}/advertiserGroups",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of advertiser groups, possibly filtered.",
+     "parameters": {
+      "ids": {
+       "type": "string",
+       "description": "Select only advertiser groups with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"advertiser*2015\" will return objects with names like \"advertiser group June 2015\", \"advertiser group April 2015\", or simply \"advertiser group 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 \"advertisergroup\" will match objects with name \"my advertisergroup\", \"advertisergroup 2015\", or simply \"advertisergroup\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "AdvertiserGroupsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.advertiserGroups.patch",
+     "path": "userprofiles/{profileId}/advertiserGroups",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing advertiser group. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Advertiser group ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "AdvertiserGroup"
+     },
+     "response": {
+      "$ref": "AdvertiserGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.advertiserGroups.update",
+     "path": "userprofiles/{profileId}/advertiserGroups",
+     "httpMethod": "PUT",
+     "description": "Updates an existing advertiser group.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "AdvertiserGroup"
+     },
+     "response": {
+      "$ref": "AdvertiserGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "advertisers": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.advertisers.get",
+     "path": "userprofiles/{profileId}/advertisers/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one advertiser by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Advertiser ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "Advertiser"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.advertisers.insert",
+     "path": "userprofiles/{profileId}/advertisers",
+     "httpMethod": "POST",
+     "description": "Inserts a new advertiser.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Advertiser"
+     },
+     "response": {
+      "$ref": "Advertiser"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.advertisers.list",
+     "path": "userprofiles/{profileId}/advertisers",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of advertisers, possibly filtered.",
+     "parameters": {
+      "advertiserGroupIds": {
+       "type": "string",
+       "description": "Select only advertisers with these advertiser group IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "floodlightConfigurationIds": {
+       "type": "string",
+       "description": "Select only advertisers with these floodlight configuration IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only advertisers with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "includeAdvertisersWithoutGroupsOnly": {
+       "type": "boolean",
+       "description": "Select only advertisers which do not belong to any advertiser group.",
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "onlyParent": {
+       "type": "boolean",
+       "description": "Select only advertisers which use another advertiser's floodlight configuration.",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"advertiser*2015\" will return objects with names like \"advertiser June 2015\", \"advertiser April 2015\", or simply \"advertiser 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 \"advertiser\" will match objects with name \"my advertiser\", \"advertiser 2015\", or simply \"advertiser\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "status": {
+       "type": "string",
+       "description": "Select only advertisers with the specified status.",
+       "enum": [
+        "APPROVED",
+        "ON_HOLD"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "subaccountId": {
+       "type": "string",
+       "description": "Select only advertisers with these subaccount IDs.",
+       "format": "int64",
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "AdvertisersListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.advertisers.patch",
+     "path": "userprofiles/{profileId}/advertisers",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing advertiser. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Advertiser ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "Advertiser"
+     },
+     "response": {
+      "$ref": "Advertiser"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.advertisers.update",
+     "path": "userprofiles/{profileId}/advertisers",
+     "httpMethod": "PUT",
+     "description": "Updates an existing advertiser.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Advertiser"
+     },
+     "response": {
+      "$ref": "Advertiser"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "browsers": {
+   "methods": {
+    "list": {
+     "id": "dfareporting.browsers.list",
+     "path": "userprofiles/{profileId}/browsers",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of browsers.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "BrowsersListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "campaignCreativeAssociations": {
+   "methods": {
+    "insert": {
+     "id": "dfareporting.campaignCreativeAssociations.insert",
+     "path": "userprofiles/{profileId}/campaigns/{campaignId}/campaignCreativeAssociations",
+     "httpMethod": "POST",
+     "description": "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.",
+     "parameters": {
+      "campaignId": {
+       "type": "string",
+       "description": "Campaign ID in this association.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "campaignId"
+     ],
+     "request": {
+      "$ref": "CampaignCreativeAssociation"
+     },
+     "response": {
+      "$ref": "CampaignCreativeAssociation"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.campaignCreativeAssociations.list",
+     "path": "userprofiles/{profileId}/campaigns/{campaignId}/campaignCreativeAssociations",
+     "httpMethod": "GET",
+     "description": "Retrieves the list of creative IDs associated with the specified campaign.",
+     "parameters": {
+      "campaignId": {
+       "type": "string",
+       "description": "Campaign ID in this association.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "campaignId"
+     ],
+     "response": {
+      "$ref": "CampaignCreativeAssociationsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "campaigns": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.campaigns.get",
+     "path": "userprofiles/{profileId}/campaigns/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one campaign by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Campaign ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "Campaign"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.campaigns.insert",
+     "path": "userprofiles/{profileId}/campaigns",
+     "httpMethod": "POST",
+     "description": "Inserts a new campaign.",
+     "parameters": {
+      "defaultLandingPageName": {
+       "type": "string",
+       "description": "Default landing page name for this new campaign. Must be less than 256 characters long.",
+       "required": true,
+       "location": "query"
+      },
+      "defaultLandingPageUrl": {
+       "type": "string",
+       "description": "Default landing page URL for this new campaign.",
+       "required": true,
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "defaultLandingPageName",
+      "defaultLandingPageUrl"
+     ],
+     "request": {
+      "$ref": "Campaign"
+     },
+     "response": {
+      "$ref": "Campaign"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.campaigns.list",
+     "path": "userprofiles/{profileId}/campaigns",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of campaigns, possibly filtered.",
+     "parameters": {
+      "advertiserGroupIds": {
+       "type": "string",
+       "description": "Select only campaigns whose advertisers belong to these advertiser groups.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "advertiserIds": {
+       "type": "string",
+       "description": "Select only campaigns that belong to these advertisers.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "archived": {
+       "type": "boolean",
+       "description": "Select only archived campaigns. Don't set this field to select both archived and non-archived campaigns.",
+       "location": "query"
+      },
+      "atLeastOneOptimizationActivity": {
+       "type": "boolean",
+       "description": "Select only campaigns that have at least one optimization activity.",
+       "location": "query"
+      },
+      "excludedIds": {
+       "type": "string",
+       "description": "Exclude campaigns with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only campaigns with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "overriddenEventTagId": {
+       "type": "string",
+       "description": "Select only campaigns that have overridden this event tag ID.",
+       "format": "int64",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for campaigns by name or ID. Wildcards (*) are allowed. For example, \"campaign*2015\" will return campaigns with names like \"campaign June 2015\", \"campaign April 2015\", or simply \"campaign 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 \"campaign\" will match campaigns with name \"my campaign\", \"campaign 2015\", or simply \"campaign\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "subaccountId": {
+       "type": "string",
+       "description": "Select only campaigns that belong to this subaccount.",
+       "format": "int64",
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "CampaignsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.campaigns.patch",
+     "path": "userprofiles/{profileId}/campaigns",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing campaign. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Campaign ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "Campaign"
+     },
+     "response": {
+      "$ref": "Campaign"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.campaigns.update",
+     "path": "userprofiles/{profileId}/campaigns",
+     "httpMethod": "PUT",
+     "description": "Updates an existing campaign.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Campaign"
+     },
+     "response": {
+      "$ref": "Campaign"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "changeLogs": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.changeLogs.get",
+     "path": "userprofiles/{profileId}/changeLogs/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one change log by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Change log ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "ChangeLog"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.changeLogs.list",
+     "path": "userprofiles/{profileId}/changeLogs",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of change logs.",
+     "parameters": {
+      "action": {
+       "type": "string",
+       "description": "Select only change logs with the specified action.",
+       "enum": [
+        "ACTION_ADD",
+        "ACTION_ASSIGN",
+        "ACTION_ASSOCIATE",
+        "ACTION_CREATE",
+        "ACTION_DELETE",
+        "ACTION_DISABLE",
+        "ACTION_EMAIL_TAGS",
+        "ACTION_ENABLE",
+        "ACTION_LINK",
+        "ACTION_MARK_AS_DEFAULT",
+        "ACTION_PUSH",
+        "ACTION_REMOVE",
+        "ACTION_SEND",
+        "ACTION_SHARE",
+        "ACTION_UNASSIGN",
+        "ACTION_UNLINK",
+        "ACTION_UPDATE"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only change logs with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxChangeTime": {
+       "type": "string",
+       "description": "Select only change logs whose change time is before the specified maxChangeTime.The time should be formatted as an RFC3339 date/time string. For example, for 10:54 PM on July 18th, 2015, in the America/New York time zone, the format is \"2015-07-18T22:54:00-04:00\". In other words, the year, month, day, the letter T, the hour (24-hour clock system), minute, second, and then the time zone offset.",
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "minChangeTime": {
+       "type": "string",
+       "description": "Select only change logs whose change time is before the specified minChangeTime.The time should be formatted as an RFC3339 date/time string. For example, for 10:54 PM on July 18th, 2015, in the America/New York time zone, the format is \"2015-07-18T22:54:00-04:00\". In other words, the year, month, day, the letter T, the hour (24-hour clock system), minute, second, and then the time zone offset.",
+       "location": "query"
+      },
+      "objectIds": {
+       "type": "string",
+       "description": "Select only change logs with these object IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "objectType": {
+       "type": "string",
+       "description": "Select only change logs with the specified object type.",
+       "enum": [
+        "OBJECT_ACCOUNT",
+        "OBJECT_ACCOUNT_BILLING_FEATURE",
+        "OBJECT_AD",
+        "OBJECT_ADVERTISER",
+        "OBJECT_ADVERTISER_GROUP",
+        "OBJECT_BILLING_ACCOUNT_GROUP",
+        "OBJECT_BILLING_FEATURE",
+        "OBJECT_BILLING_MINIMUM_FEE",
+        "OBJECT_BILLING_PROFILE",
+        "OBJECT_CAMPAIGN",
+        "OBJECT_CONTENT_CATEGORY",
+        "OBJECT_CREATIVE",
+        "OBJECT_CREATIVE_ASSET",
+        "OBJECT_CREATIVE_BUNDLE",
+        "OBJECT_CREATIVE_FIELD",
+        "OBJECT_CREATIVE_GROUP",
+        "OBJECT_DFA_SITE",
+        "OBJECT_EVENT_TAG",
+        "OBJECT_FLOODLIGHT_ACTIVITY_GROUP",
+        "OBJECT_FLOODLIGHT_ACTVITY",
+        "OBJECT_FLOODLIGHT_CONFIGURATION",
+        "OBJECT_INSTREAM_CREATIVE",
+        "OBJECT_LANDING_PAGE",
+        "OBJECT_MEDIA_ORDER",
+        "OBJECT_PLACEMENT",
+        "OBJECT_PLACEMENT_STRATEGY",
+        "OBJECT_PLAYSTORE_LINK",
+        "OBJECT_PROVIDED_LIST_CLIENT",
+        "OBJECT_RATE_CARD",
+        "OBJECT_REMARKETING_LIST",
+        "OBJECT_RICHMEDIA_CREATIVE",
+        "OBJECT_SD_SITE",
+        "OBJECT_SIZE",
+        "OBJECT_SUBACCOUNT",
+        "OBJECT_USER_PROFILE",
+        "OBJECT_USER_PROFILE_FILTER",
+        "OBJECT_USER_ROLE"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Select only change logs whose object ID, user name, old or new values match the search string.",
+       "location": "query"
+      },
+      "userProfileIds": {
+       "type": "string",
+       "description": "Select only change logs with these user profile IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "ChangeLogsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "cities": {
+   "methods": {
+    "list": {
+     "id": "dfareporting.cities.list",
+     "path": "userprofiles/{profileId}/cities",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of cities, possibly filtered.",
+     "parameters": {
+      "countryDartIds": {
+       "type": "string",
+       "description": "Select only cities from these countries.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "dartIds": {
+       "type": "string",
+       "description": "Select only cities with these DART IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "namePrefix": {
+       "type": "string",
+       "description": "Select only cities with names starting with this prefix.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "regionDartIds": {
+       "type": "string",
+       "description": "Select only cities from these regions.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "CitiesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "connectionTypes": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.connectionTypes.get",
+     "path": "userprofiles/{profileId}/connectionTypes/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one connection type by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Connection type ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "ConnectionType"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.connectionTypes.list",
+     "path": "userprofiles/{profileId}/connectionTypes",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of connection types.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "ConnectionTypesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "contentCategories": {
+   "methods": {
+    "delete": {
+     "id": "dfareporting.contentCategories.delete",
+     "path": "userprofiles/{profileId}/contentCategories/{id}",
+     "httpMethod": "DELETE",
+     "description": "Deletes an existing content category.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Content category ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "get": {
+     "id": "dfareporting.contentCategories.get",
+     "path": "userprofiles/{profileId}/contentCategories/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one content category by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Content category ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "ContentCategory"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.contentCategories.insert",
+     "path": "userprofiles/{profileId}/contentCategories",
+     "httpMethod": "POST",
+     "description": "Inserts a new content category.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "ContentCategory"
+     },
+     "response": {
+      "$ref": "ContentCategory"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.contentCategories.list",
+     "path": "userprofiles/{profileId}/contentCategories",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of content categories, possibly filtered.",
+     "parameters": {
+      "ids": {
+       "type": "string",
+       "description": "Select only content categories with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"contentcategory*2015\" will return objects with names like \"contentcategory June 2015\", \"contentcategory April 2015\", or simply \"contentcategory 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 \"contentcategory\" will match objects with name \"my contentcategory\", \"contentcategory 2015\", or simply \"contentcategory\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "ContentCategoriesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.contentCategories.patch",
+     "path": "userprofiles/{profileId}/contentCategories",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing content category. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Content category ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "ContentCategory"
+     },
+     "response": {
+      "$ref": "ContentCategory"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.contentCategories.update",
+     "path": "userprofiles/{profileId}/contentCategories",
+     "httpMethod": "PUT",
+     "description": "Updates an existing content category.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "ContentCategory"
+     },
+     "response": {
+      "$ref": "ContentCategory"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "countries": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.countries.get",
+     "path": "userprofiles/{profileId}/countries/{dartId}",
+     "httpMethod": "GET",
+     "description": "Gets one country by ID.",
+     "parameters": {
+      "dartId": {
+       "type": "string",
+       "description": "Country DART ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "dartId"
+     ],
+     "response": {
+      "$ref": "Country"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.countries.list",
+     "path": "userprofiles/{profileId}/countries",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of countries.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "CountriesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "creativeAssets": {
+   "methods": {
+    "insert": {
+     "id": "dfareporting.creativeAssets.insert",
+     "path": "userprofiles/{profileId}/creativeAssets/{advertiserId}/creativeAssets",
+     "httpMethod": "POST",
+     "description": "Inserts a new creative asset.",
+     "parameters": {
+      "advertiserId": {
+       "type": "string",
+       "description": "Advertiser ID of this creative. This is a required field.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "advertiserId"
+     ],
+     "request": {
+      "$ref": "CreativeAssetMetadata"
+     },
+     "response": {
+      "$ref": "CreativeAssetMetadata"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ],
+     "supportsMediaUpload": true,
+     "mediaUpload": {
+      "accept": [
+       "*/*"
+      ],
+      "maxSize": "1024MB",
+      "protocols": {
+       "simple": {
+        "multipart": true,
+        "path": "/upload/dfareporting/v2.4/userprofiles/{profileId}/creativeAssets/{advertiserId}/creativeAssets"
+       },
+       "resumable": {
+        "multipart": true,
+        "path": "/resumable/upload/dfareporting/v2.4/userprofiles/{profileId}/creativeAssets/{advertiserId}/creativeAssets"
+       }
+      }
+     }
+    }
+   }
+  },
+  "creativeFieldValues": {
+   "methods": {
+    "delete": {
+     "id": "dfareporting.creativeFieldValues.delete",
+     "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues/{id}",
+     "httpMethod": "DELETE",
+     "description": "Deletes an existing creative field value.",
+     "parameters": {
+      "creativeFieldId": {
+       "type": "string",
+       "description": "Creative field ID for this creative field value.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "id": {
+       "type": "string",
+       "description": "Creative Field Value ID",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "creativeFieldId",
+      "id"
+     ],
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "get": {
+     "id": "dfareporting.creativeFieldValues.get",
+     "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one creative field value by ID.",
+     "parameters": {
+      "creativeFieldId": {
+       "type": "string",
+       "description": "Creative field ID for this creative field value.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "id": {
+       "type": "string",
+       "description": "Creative Field Value ID",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "creativeFieldId",
+      "id"
+     ],
+     "response": {
+      "$ref": "CreativeFieldValue"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.creativeFieldValues.insert",
+     "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
+     "httpMethod": "POST",
+     "description": "Inserts a new creative field value.",
+     "parameters": {
+      "creativeFieldId": {
+       "type": "string",
+       "description": "Creative field ID for this creative field value.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "creativeFieldId"
+     ],
+     "request": {
+      "$ref": "CreativeFieldValue"
+     },
+     "response": {
+      "$ref": "CreativeFieldValue"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.creativeFieldValues.list",
+     "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of creative field values, possibly filtered.",
+     "parameters": {
+      "creativeFieldId": {
+       "type": "string",
+       "description": "Creative field ID for this creative field value.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only creative field values with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for creative field values by their values. Wildcards (e.g. *) are not allowed.",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "VALUE"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "creativeFieldId"
+     ],
+     "response": {
+      "$ref": "CreativeFieldValuesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.creativeFieldValues.patch",
+     "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing creative field value. This method supports patch semantics.",
+     "parameters": {
+      "creativeFieldId": {
+       "type": "string",
+       "description": "Creative field ID for this creative field value.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "id": {
+       "type": "string",
+       "description": "Creative Field Value ID",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "creativeFieldId",
+      "id"
+     ],
+     "request": {
+      "$ref": "CreativeFieldValue"
+     },
+     "response": {
+      "$ref": "CreativeFieldValue"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.creativeFieldValues.update",
+     "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
+     "httpMethod": "PUT",
+     "description": "Updates an existing creative field value.",
+     "parameters": {
+      "creativeFieldId": {
+       "type": "string",
+       "description": "Creative field ID for this creative field value.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "creativeFieldId"
+     ],
+     "request": {
+      "$ref": "CreativeFieldValue"
+     },
+     "response": {
+      "$ref": "CreativeFieldValue"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "creativeFields": {
+   "methods": {
+    "delete": {
+     "id": "dfareporting.creativeFields.delete",
+     "path": "userprofiles/{profileId}/creativeFields/{id}",
+     "httpMethod": "DELETE",
+     "description": "Deletes an existing creative field.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Creative Field ID",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "get": {
+     "id": "dfareporting.creativeFields.get",
+     "path": "userprofiles/{profileId}/creativeFields/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one creative field by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Creative Field ID",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "CreativeField"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.creativeFields.insert",
+     "path": "userprofiles/{profileId}/creativeFields",
+     "httpMethod": "POST",
+     "description": "Inserts a new creative field.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "CreativeField"
+     },
+     "response": {
+      "$ref": "CreativeField"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.creativeFields.list",
+     "path": "userprofiles/{profileId}/creativeFields",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of creative fields, possibly filtered.",
+     "parameters": {
+      "advertiserIds": {
+       "type": "string",
+       "description": "Select only creative fields that belong to these advertisers.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only creative fields with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for creative fields by name or ID. Wildcards (*) are allowed. For example, \"creativefield*2015\" will return creative fields with names like \"creativefield June 2015\", \"creativefield April 2015\", or simply \"creativefield 2015\". Most of the searches also add wild-cards implicitly at the start and the end of the search string. For example, a search string of \"creativefield\" will match creative fields with the name \"my creativefield\", \"creativefield 2015\", or simply \"creativefield\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "CreativeFieldsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.creativeFields.patch",
+     "path": "userprofiles/{profileId}/creativeFields",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing creative field. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Creative Field ID",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "CreativeField"
+     },
+     "response": {
+      "$ref": "CreativeField"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.creativeFields.update",
+     "path": "userprofiles/{profileId}/creativeFields",
+     "httpMethod": "PUT",
+     "description": "Updates an existing creative field.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "CreativeField"
+     },
+     "response": {
+      "$ref": "CreativeField"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "creativeGroups": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.creativeGroups.get",
+     "path": "userprofiles/{profileId}/creativeGroups/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one creative group by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Creative group ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "CreativeGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.creativeGroups.insert",
+     "path": "userprofiles/{profileId}/creativeGroups",
+     "httpMethod": "POST",
+     "description": "Inserts a new creative group.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "CreativeGroup"
+     },
+     "response": {
+      "$ref": "CreativeGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.creativeGroups.list",
+     "path": "userprofiles/{profileId}/creativeGroups",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of creative groups, possibly filtered.",
+     "parameters": {
+      "advertiserIds": {
+       "type": "string",
+       "description": "Select only creative groups that belong to these advertisers.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "groupNumber": {
+       "type": "integer",
+       "description": "Select only creative groups that belong to this subgroup.",
+       "format": "int32",
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only creative groups with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for creative groups by name or ID. Wildcards (*) are allowed. For example, \"creativegroup*2015\" will return creative groups with names like \"creativegroup June 2015\", \"creativegroup April 2015\", or simply \"creativegroup 2015\". Most of the searches also add wild-cards implicitly at the start and the end of the search string. For example, a search string of \"creativegroup\" will match creative groups with the name \"my creativegroup\", \"creativegroup 2015\", or simply \"creativegroup\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "CreativeGroupsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.creativeGroups.patch",
+     "path": "userprofiles/{profileId}/creativeGroups",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing creative group. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Creative group ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "CreativeGroup"
+     },
+     "response": {
+      "$ref": "CreativeGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.creativeGroups.update",
+     "path": "userprofiles/{profileId}/creativeGroups",
+     "httpMethod": "PUT",
+     "description": "Updates an existing creative group.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "CreativeGroup"
+     },
+     "response": {
+      "$ref": "CreativeGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "creatives": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.creatives.get",
+     "path": "userprofiles/{profileId}/creatives/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one creative by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Creative ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "Creative"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.creatives.insert",
+     "path": "userprofiles/{profileId}/creatives",
+     "httpMethod": "POST",
+     "description": "Inserts a new creative.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Creative"
+     },
+     "response": {
+      "$ref": "Creative"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.creatives.list",
+     "path": "userprofiles/{profileId}/creatives",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of creatives, possibly filtered.",
+     "parameters": {
+      "active": {
+       "type": "boolean",
+       "description": "Select only active creatives. Leave blank to select active and inactive creatives.",
+       "location": "query"
+      },
+      "advertiserId": {
+       "type": "string",
+       "description": "Select only creatives with this advertiser ID.",
+       "format": "int64",
+       "location": "query"
+      },
+      "archived": {
+       "type": "boolean",
+       "description": "Select only archived creatives. Leave blank to select archived and unarchived creatives.",
+       "location": "query"
+      },
+      "campaignId": {
+       "type": "string",
+       "description": "Select only creatives with this campaign ID.",
+       "format": "int64",
+       "location": "query"
+      },
+      "companionCreativeIds": {
+       "type": "string",
+       "description": "Select only in-stream video creatives with these companion IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "creativeFieldIds": {
+       "type": "string",
+       "description": "Select only creatives with these creative field IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only creatives with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "renderingIds": {
+       "type": "string",
+       "description": "Select only creatives with these rendering IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"creative*2015\" will return objects with names like \"creative June 2015\", \"creative April 2015\", or simply \"creative 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 \"creative\" will match objects with name \"my creative\", \"creative 2015\", or simply \"creative\".",
+       "location": "query"
+      },
+      "sizeIds": {
+       "type": "string",
+       "description": "Select only creatives with these size IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "studioCreativeId": {
+       "type": "string",
+       "description": "Select only creatives corresponding to this Studio creative ID.",
+       "format": "int64",
+       "location": "query"
+      },
+      "types": {
+       "type": "string",
+       "description": "Select only creatives with these creative types.",
+       "enum": [
+        "BRAND_SAFE_DEFAULT_INSTREAM_VIDEO",
+        "CUSTOM_INPAGE",
+        "CUSTOM_INTERSTITIAL",
+        "ENHANCED_BANNER",
+        "ENHANCED_IMAGE",
+        "FLASH_INPAGE",
+        "HTML5_BANNER",
+        "IMAGE",
+        "INSTREAM_VIDEO",
+        "INSTREAM_VIDEO_REDIRECT",
+        "INTERNAL_REDIRECT",
+        "INTERSTITIAL_INTERNAL_REDIRECT",
+        "REDIRECT",
+        "RICH_MEDIA_EXPANDING",
+        "RICH_MEDIA_IM_EXPAND",
+        "RICH_MEDIA_INPAGE",
+        "RICH_MEDIA_INPAGE_FLOATING",
+        "RICH_MEDIA_INTERSTITIAL_FLOAT",
+        "RICH_MEDIA_MOBILE_IN_APP",
+        "RICH_MEDIA_MULTI_FLOATING",
+        "RICH_MEDIA_PEEL_DOWN",
+        "TRACKING_TEXT",
+        "VPAID_LINEAR",
+        "VPAID_NON_LINEAR"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        ""
+       ],
+       "repeated": true,
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "CreativesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.creatives.patch",
+     "path": "userprofiles/{profileId}/creatives",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing creative. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Creative ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "Creative"
+     },
+     "response": {
+      "$ref": "Creative"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.creatives.update",
+     "path": "userprofiles/{profileId}/creatives",
+     "httpMethod": "PUT",
+     "description": "Updates an existing creative.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Creative"
+     },
+     "response": {
+      "$ref": "Creative"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "dimensionValues": {
+   "methods": {
+    "query": {
+     "id": "dfareporting.dimensionValues.query",
+     "path": "userprofiles/{profileId}/dimensionvalues/query",
+     "httpMethod": "POST",
+     "description": "Retrieves list of report dimension values for a list of filters.",
+     "parameters": {
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "minimum": "0",
+       "maximum": "100",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "The value of the nextToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "The DFA user profile ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "DimensionValueRequest"
+     },
+     "response": {
+      "$ref": "DimensionValueList"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfareporting"
+     ]
+    }
+   }
+  },
+  "directorySiteContacts": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.directorySiteContacts.get",
+     "path": "userprofiles/{profileId}/directorySiteContacts/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one directory site contact by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Directory site contact ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "DirectorySiteContact"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.directorySiteContacts.list",
+     "path": "userprofiles/{profileId}/directorySiteContacts",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of directory site contacts, possibly filtered.",
+     "parameters": {
+      "directorySiteIds": {
+       "type": "string",
+       "description": "Select only directory site contacts with these directory site IDs. This is a required field.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only directory site contacts with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name, ID or email. Wildcards (*) are allowed. For example, \"directory site contact*2015\" will return objects with names like \"directory site contact June 2015\", \"directory site contact April 2015\", or simply \"directory site contact 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 \"directory site contact\" will match objects with name \"my directory site contact\", \"directory site contact 2015\", or simply \"directory site contact\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "DirectorySiteContactsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "directorySites": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.directorySites.get",
+     "path": "userprofiles/{profileId}/directorySites/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one directory site by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Directory site ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "DirectorySite"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.directorySites.insert",
+     "path": "userprofiles/{profileId}/directorySites",
+     "httpMethod": "POST",
+     "description": "Inserts a new directory site.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "DirectorySite"
+     },
+     "response": {
+      "$ref": "DirectorySite"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.directorySites.list",
+     "path": "userprofiles/{profileId}/directorySites",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of directory sites, possibly filtered.",
+     "parameters": {
+      "acceptsInStreamVideoPlacements": {
+       "type": "boolean",
+       "description": "This search filter is no longer supported and will have no effect on the results returned.",
+       "location": "query"
+      },
+      "acceptsInterstitialPlacements": {
+       "type": "boolean",
+       "description": "This search filter is no longer supported and will have no effect on the results returned.",
+       "location": "query"
+      },
+      "acceptsPublisherPaidPlacements": {
+       "type": "boolean",
+       "description": "Select only directory sites that accept publisher paid placements. This field can be left blank.",
+       "location": "query"
+      },
+      "active": {
+       "type": "boolean",
+       "description": "Select only active directory sites. Leave blank to retrieve both active and inactive directory sites.",
+       "location": "query"
+      },
+      "countryId": {
+       "type": "string",
+       "description": "Select only directory sites with this country ID.",
+       "format": "int64",
+       "location": "query"
+      },
+      "dfp_network_code": {
+       "type": "string",
+       "description": "Select only directory sites with this DFP network code.",
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only directory sites with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "parentId": {
+       "type": "string",
+       "description": "Select only directory sites with this parent ID.",
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name, ID or URL. Wildcards (*) are allowed. For example, \"directory site*2015\" will return objects with names like \"directory site June 2015\", \"directory site April 2015\", or simply \"directory site 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 \"directory site\" will match objects with name \"my directory site\", \"directory site 2015\" or simply, \"directory site\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "DirectorySitesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "eventTags": {
+   "methods": {
+    "delete": {
+     "id": "dfareporting.eventTags.delete",
+     "path": "userprofiles/{profileId}/eventTags/{id}",
+     "httpMethod": "DELETE",
+     "description": "Deletes an existing event tag.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Event tag ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "get": {
+     "id": "dfareporting.eventTags.get",
+     "path": "userprofiles/{profileId}/eventTags/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one event tag by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Event tag ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "EventTag"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.eventTags.insert",
+     "path": "userprofiles/{profileId}/eventTags",
+     "httpMethod": "POST",
+     "description": "Inserts a new event tag.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "EventTag"
+     },
+     "response": {
+      "$ref": "EventTag"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.eventTags.list",
+     "path": "userprofiles/{profileId}/eventTags",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of event tags, possibly filtered.",
+     "parameters": {
+      "adId": {
+       "type": "string",
+       "description": "Select only event tags that belong to this ad.",
+       "format": "int64",
+       "location": "query"
+      },
+      "advertiserId": {
+       "type": "string",
+       "description": "Select only event tags that belong to this advertiser.",
+       "format": "int64",
+       "location": "query"
+      },
+      "campaignId": {
+       "type": "string",
+       "description": "Select only event tags that belong to this campaign.",
+       "format": "int64",
+       "location": "query"
+      },
+      "definitionsOnly": {
+       "type": "boolean",
+       "description": "Examine only the specified campaign or advertiser's event tags for matching selector criteria. When set to false, the parent advertiser and parent campaign of the specified ad or campaign is examined as well. In addition, when set to false, the status field is examined as well, along with the enabledByDefault field. This parameter can not be set to true when adId is specified as ads do not define their own even tags.",
+       "location": "query"
+      },
+      "enabled": {
+       "type": "boolean",
+       "description": "Select only enabled event tags. What is considered enabled or disabled depends on the definitionsOnly parameter. When definitionsOnly is set to true, only the specified advertiser or campaign's event tags' enabledByDefault field is examined. When definitionsOnly is set to false, the specified ad or specified campaign's parent advertiser's or parent campaign's event tags' enabledByDefault and status fields are examined as well.",
+       "location": "query"
+      },
+      "eventTagTypes": {
+       "type": "string",
+       "description": "Select only event tags with the specified event tag types. Event tag types can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking.",
+       "enum": [
+        "CLICK_THROUGH_EVENT_TAG",
+        "IMPRESSION_IMAGE_EVENT_TAG",
+        "IMPRESSION_JAVASCRIPT_EVENT_TAG"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        ""
+       ],
+       "repeated": true,
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only event tags with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"eventtag*2015\" will return objects with names like \"eventtag June 2015\", \"eventtag April 2015\", or simply \"eventtag 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 \"eventtag\" will match objects with name \"my eventtag\", \"eventtag 2015\", or simply \"eventtag\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "EventTagsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.eventTags.patch",
+     "path": "userprofiles/{profileId}/eventTags",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing event tag. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Event tag ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "EventTag"
+     },
+     "response": {
+      "$ref": "EventTag"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.eventTags.update",
+     "path": "userprofiles/{profileId}/eventTags",
+     "httpMethod": "PUT",
+     "description": "Updates an existing event tag.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "EventTag"
+     },
+     "response": {
+      "$ref": "EventTag"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "files": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.files.get",
+     "path": "reports/{reportId}/files/{fileId}",
+     "httpMethod": "GET",
+     "description": "Retrieves a report file by its report ID and file ID.",
+     "parameters": {
+      "fileId": {
+       "type": "string",
+       "description": "The ID of the report file.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "reportId": {
+       "type": "string",
+       "description": "The ID of the report.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "reportId",
+      "fileId"
+     ],
+     "response": {
+      "$ref": "File"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfareporting"
+     ],
+     "supportsMediaDownload": true
+    },
+    "list": {
+     "id": "dfareporting.files.list",
+     "path": "userprofiles/{profileId}/files",
+     "httpMethod": "GET",
+     "description": "Lists files for a user profile.",
+     "parameters": {
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "minimum": "0",
+       "maximum": "10",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "The value of the nextToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "The DFA profile ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "scope": {
+       "type": "string",
+       "description": "The scope that defines which results are returned, default is 'MINE'.",
+       "default": "MINE",
+       "enum": [
+        "ALL",
+        "MINE",
+        "SHARED_WITH_ME"
+       ],
+       "enumDescriptions": [
+        "All files in account.",
+        "My files.",
+        "Files shared with me."
+       ],
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "The field by which to sort the list.",
+       "default": "LAST_MODIFIED_TIME",
+       "enum": [
+        "ID",
+        "LAST_MODIFIED_TIME"
+       ],
+       "enumDescriptions": [
+        "Sort by file ID.",
+        "Sort by 'lastmodifiedAt' field."
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is 'DESCENDING'.",
+       "default": "DESCENDING",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "Ascending order.",
+        "Descending order."
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "FileList"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfareporting"
+     ]
+    }
+   }
+  },
+  "floodlightActivities": {
+   "methods": {
+    "delete": {
+     "id": "dfareporting.floodlightActivities.delete",
+     "path": "userprofiles/{profileId}/floodlightActivities/{id}",
+     "httpMethod": "DELETE",
+     "description": "Deletes an existing floodlight activity.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Floodlight activity ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "generatetag": {
+     "id": "dfareporting.floodlightActivities.generatetag",
+     "path": "userprofiles/{profileId}/floodlightActivities/generatetag",
+     "httpMethod": "POST",
+     "description": "Generates a tag for a floodlight activity.",
+     "parameters": {
+      "floodlightActivityId": {
+       "type": "string",
+       "description": "Floodlight activity ID for which we want to generate a tag.",
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "FloodlightActivitiesGenerateTagResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "get": {
+     "id": "dfareporting.floodlightActivities.get",
+     "path": "userprofiles/{profileId}/floodlightActivities/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one floodlight activity by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Floodlight activity ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "FloodlightActivity"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.floodlightActivities.insert",
+     "path": "userprofiles/{profileId}/floodlightActivities",
+     "httpMethod": "POST",
+     "description": "Inserts a new floodlight activity.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "FloodlightActivity"
+     },
+     "response": {
+      "$ref": "FloodlightActivity"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.floodlightActivities.list",
+     "path": "userprofiles/{profileId}/floodlightActivities",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of floodlight activities, possibly filtered.",
+     "parameters": {
+      "advertiserId": {
+       "type": "string",
+       "description": "Select only floodlight activities for the specified advertiser ID. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result.",
+       "format": "int64",
+       "location": "query"
+      },
+      "floodlightActivityGroupIds": {
+       "type": "string",
+       "description": "Select only floodlight activities with the specified floodlight activity group IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "floodlightActivityGroupName": {
+       "type": "string",
+       "description": "Select only floodlight activities with the specified floodlight activity group name.",
+       "location": "query"
+      },
+      "floodlightActivityGroupTagString": {
+       "type": "string",
+       "description": "Select only floodlight activities with the specified floodlight activity group tag string.",
+       "location": "query"
+      },
+      "floodlightActivityGroupType": {
+       "type": "string",
+       "description": "Select only floodlight activities with the specified floodlight activity group type.",
+       "enum": [
+        "COUNTER",
+        "SALE"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "floodlightConfigurationId": {
+       "type": "string",
+       "description": "Select only floodlight activities for the specified floodlight configuration ID. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result.",
+       "format": "int64",
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only floodlight activities with the specified IDs. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"floodlightactivity*2015\" will return objects with names like \"floodlightactivity June 2015\", \"floodlightactivity April 2015\", or simply \"floodlightactivity 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 \"floodlightactivity\" will match objects with name \"my floodlightactivity activity\", \"floodlightactivity 2015\", or simply \"floodlightactivity\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "tagString": {
+       "type": "string",
+       "description": "Select only floodlight activities with the specified tag string.",
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "FloodlightActivitiesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.floodlightActivities.patch",
+     "path": "userprofiles/{profileId}/floodlightActivities",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing floodlight activity. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Floodlight activity ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "FloodlightActivity"
+     },
+     "response": {
+      "$ref": "FloodlightActivity"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.floodlightActivities.update",
+     "path": "userprofiles/{profileId}/floodlightActivities",
+     "httpMethod": "PUT",
+     "description": "Updates an existing floodlight activity.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "FloodlightActivity"
+     },
+     "response": {
+      "$ref": "FloodlightActivity"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "floodlightActivityGroups": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.floodlightActivityGroups.get",
+     "path": "userprofiles/{profileId}/floodlightActivityGroups/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one floodlight activity group by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Floodlight activity Group ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "FloodlightActivityGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.floodlightActivityGroups.insert",
+     "path": "userprofiles/{profileId}/floodlightActivityGroups",
+     "httpMethod": "POST",
+     "description": "Inserts a new floodlight activity group.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "FloodlightActivityGroup"
+     },
+     "response": {
+      "$ref": "FloodlightActivityGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.floodlightActivityGroups.list",
+     "path": "userprofiles/{profileId}/floodlightActivityGroups",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of floodlight activity groups, possibly filtered.",
+     "parameters": {
+      "advertiserId": {
+       "type": "string",
+       "description": "Select only floodlight activity groups with the specified advertiser ID. Must specify either advertiserId or floodlightConfigurationId for a non-empty result.",
+       "format": "int64",
+       "location": "query"
+      },
+      "floodlightConfigurationId": {
+       "type": "string",
+       "description": "Select only floodlight activity groups with the specified floodlight configuration ID. Must specify either advertiserId, or floodlightConfigurationId for a non-empty result.",
+       "format": "int64",
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only floodlight activity groups with the specified IDs. Must specify either advertiserId or floodlightConfigurationId for a non-empty result.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"floodlightactivitygroup*2015\" will return objects with names like \"floodlightactivitygroup June 2015\", \"floodlightactivitygroup April 2015\", or simply \"floodlightactivitygroup 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 \"floodlightactivitygroup\" will match objects with name \"my floodlightactivitygroup activity\", \"floodlightactivitygroup 2015\", or simply \"floodlightactivitygroup\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "type": {
+       "type": "string",
+       "description": "Select only floodlight activity groups with the specified floodlight activity group type.",
+       "enum": [
+        "COUNTER",
+        "SALE"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "FloodlightActivityGroupsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.floodlightActivityGroups.patch",
+     "path": "userprofiles/{profileId}/floodlightActivityGroups",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing floodlight activity group. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Floodlight activity Group ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "FloodlightActivityGroup"
+     },
+     "response": {
+      "$ref": "FloodlightActivityGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.floodlightActivityGroups.update",
+     "path": "userprofiles/{profileId}/floodlightActivityGroups",
+     "httpMethod": "PUT",
+     "description": "Updates an existing floodlight activity group.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "FloodlightActivityGroup"
+     },
+     "response": {
+      "$ref": "FloodlightActivityGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "floodlightConfigurations": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.floodlightConfigurations.get",
+     "path": "userprofiles/{profileId}/floodlightConfigurations/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one floodlight configuration by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Floodlight configuration ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "FloodlightConfiguration"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.floodlightConfigurations.list",
+     "path": "userprofiles/{profileId}/floodlightConfigurations",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of floodlight configurations, possibly filtered.",
+     "parameters": {
+      "ids": {
+       "type": "string",
+       "description": "Set of IDs of floodlight configurations to retrieve. Required field; otherwise an empty list will be returned.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "FloodlightConfigurationsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.floodlightConfigurations.patch",
+     "path": "userprofiles/{profileId}/floodlightConfigurations",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing floodlight configuration. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Floodlight configuration ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "FloodlightConfiguration"
+     },
+     "response": {
+      "$ref": "FloodlightConfiguration"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.floodlightConfigurations.update",
+     "path": "userprofiles/{profileId}/floodlightConfigurations",
+     "httpMethod": "PUT",
+     "description": "Updates an existing floodlight configuration.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "FloodlightConfiguration"
+     },
+     "response": {
+      "$ref": "FloodlightConfiguration"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "inventoryItems": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.inventoryItems.get",
+     "path": "userprofiles/{profileId}/projects/{projectId}/inventoryItems/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one inventory item by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Inventory item ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "projectId": {
+       "type": "string",
+       "description": "Project ID for order documents.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "projectId",
+      "id"
+     ],
+     "response": {
+      "$ref": "InventoryItem"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.inventoryItems.list",
+     "path": "userprofiles/{profileId}/projects/{projectId}/inventoryItems",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of inventory items, possibly filtered.",
+     "parameters": {
+      "ids": {
+       "type": "string",
+       "description": "Select only inventory items with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "inPlan": {
+       "type": "boolean",
+       "description": "Select only inventory items that are in plan.",
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "orderId": {
+       "type": "string",
+       "description": "Select only inventory items that belong to specified orders.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "projectId": {
+       "type": "string",
+       "description": "Project ID for order documents.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "siteId": {
+       "type": "string",
+       "description": "Select only inventory items that are associated with these sites.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "type": {
+       "type": "string",
+       "description": "Select only inventory items with this type.",
+       "enum": [
+        "PLANNING_PLACEMENT_TYPE_CREDIT",
+        "PLANNING_PLACEMENT_TYPE_REGULAR"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "projectId"
+     ],
+     "response": {
+      "$ref": "InventoryItemsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "landingPages": {
+   "methods": {
+    "delete": {
+     "id": "dfareporting.landingPages.delete",
+     "path": "userprofiles/{profileId}/campaigns/{campaignId}/landingPages/{id}",
+     "httpMethod": "DELETE",
+     "description": "Deletes an existing campaign landing page.",
+     "parameters": {
+      "campaignId": {
+       "type": "string",
+       "description": "Landing page campaign ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "id": {
+       "type": "string",
+       "description": "Landing page ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "campaignId",
+      "id"
+     ],
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "get": {
+     "id": "dfareporting.landingPages.get",
+     "path": "userprofiles/{profileId}/campaigns/{campaignId}/landingPages/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one campaign landing page by ID.",
+     "parameters": {
+      "campaignId": {
+       "type": "string",
+       "description": "Landing page campaign ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "id": {
+       "type": "string",
+       "description": "Landing page ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "campaignId",
+      "id"
+     ],
+     "response": {
+      "$ref": "LandingPage"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.landingPages.insert",
+     "path": "userprofiles/{profileId}/campaigns/{campaignId}/landingPages",
+     "httpMethod": "POST",
+     "description": "Inserts a new landing page for the specified campaign.",
+     "parameters": {
+      "campaignId": {
+       "type": "string",
+       "description": "Landing page campaign ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "campaignId"
+     ],
+     "request": {
+      "$ref": "LandingPage"
+     },
+     "response": {
+      "$ref": "LandingPage"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.landingPages.list",
+     "path": "userprofiles/{profileId}/campaigns/{campaignId}/landingPages",
+     "httpMethod": "GET",
+     "description": "Retrieves the list of landing pages for the specified campaign.",
+     "parameters": {
+      "campaignId": {
+       "type": "string",
+       "description": "Landing page campaign ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "campaignId"
+     ],
+     "response": {
+      "$ref": "LandingPagesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.landingPages.patch",
+     "path": "userprofiles/{profileId}/campaigns/{campaignId}/landingPages",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing campaign landing page. This method supports patch semantics.",
+     "parameters": {
+      "campaignId": {
+       "type": "string",
+       "description": "Landing page campaign ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "id": {
+       "type": "string",
+       "description": "Landing page ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "campaignId",
+      "id"
+     ],
+     "request": {
+      "$ref": "LandingPage"
+     },
+     "response": {
+      "$ref": "LandingPage"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.landingPages.update",
+     "path": "userprofiles/{profileId}/campaigns/{campaignId}/landingPages",
+     "httpMethod": "PUT",
+     "description": "Updates an existing campaign landing page.",
+     "parameters": {
+      "campaignId": {
+       "type": "string",
+       "description": "Landing page campaign ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "campaignId"
+     ],
+     "request": {
+      "$ref": "LandingPage"
+     },
+     "response": {
+      "$ref": "LandingPage"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "metros": {
+   "methods": {
+    "list": {
+     "id": "dfareporting.metros.list",
+     "path": "userprofiles/{profileId}/metros",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of metros.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "MetrosListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "mobileCarriers": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.mobileCarriers.get",
+     "path": "userprofiles/{profileId}/mobileCarriers/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one mobile carrier by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Mobile carrier ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "MobileCarrier"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.mobileCarriers.list",
+     "path": "userprofiles/{profileId}/mobileCarriers",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of mobile carriers.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "MobileCarriersListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "operatingSystemVersions": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.operatingSystemVersions.get",
+     "path": "userprofiles/{profileId}/operatingSystemVersions/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one operating system version by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Operating system version ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "OperatingSystemVersion"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.operatingSystemVersions.list",
+     "path": "userprofiles/{profileId}/operatingSystemVersions",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of operating system versions.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "OperatingSystemVersionsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "operatingSystems": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.operatingSystems.get",
+     "path": "userprofiles/{profileId}/operatingSystems/{dartId}",
+     "httpMethod": "GET",
+     "description": "Gets one operating system by DART ID.",
+     "parameters": {
+      "dartId": {
+       "type": "string",
+       "description": "Operating system DART ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "dartId"
+     ],
+     "response": {
+      "$ref": "OperatingSystem"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.operatingSystems.list",
+     "path": "userprofiles/{profileId}/operatingSystems",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of operating systems.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "OperatingSystemsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "orderDocuments": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.orderDocuments.get",
+     "path": "userprofiles/{profileId}/projects/{projectId}/orderDocuments/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one order document by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Order document ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "projectId": {
+       "type": "string",
+       "description": "Project ID for order documents.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "projectId",
+      "id"
+     ],
+     "response": {
+      "$ref": "OrderDocument"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.orderDocuments.list",
+     "path": "userprofiles/{profileId}/projects/{projectId}/orderDocuments",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of order documents, possibly filtered.",
+     "parameters": {
+      "approved": {
+       "type": "boolean",
+       "description": "Select only order documents that have been approved by at least one user.",
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only order documents with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "orderId": {
+       "type": "string",
+       "description": "Select only order documents for specified orders.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "projectId": {
+       "type": "string",
+       "description": "Project ID for order documents.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for order documents by name or ID. Wildcards (*) are allowed. For example, \"orderdocument*2015\" will return order documents with names like \"orderdocument June 2015\", \"orderdocument April 2015\", or simply \"orderdocument 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 \"orderdocument\" will match order documents with name \"my orderdocument\", \"orderdocument 2015\", or simply \"orderdocument\".",
+       "location": "query"
+      },
+      "siteId": {
+       "type": "string",
+       "description": "Select only order documents that are associated with these sites.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "projectId"
+     ],
+     "response": {
+      "$ref": "OrderDocumentsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "orders": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.orders.get",
+     "path": "userprofiles/{profileId}/projects/{projectId}/orders/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one order by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Order ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "projectId": {
+       "type": "string",
+       "description": "Project ID for orders.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "projectId",
+      "id"
+     ],
+     "response": {
+      "$ref": "Order"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.orders.list",
+     "path": "userprofiles/{profileId}/projects/{projectId}/orders",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of orders, possibly filtered.",
+     "parameters": {
+      "ids": {
+       "type": "string",
+       "description": "Select only orders with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "projectId": {
+       "type": "string",
+       "description": "Project ID for orders.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for orders by name or ID. Wildcards (*) are allowed. For example, \"order*2015\" will return orders with names like \"order June 2015\", \"order April 2015\", or simply \"order 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 \"order\" will match orders with name \"my order\", \"order 2015\", or simply \"order\".",
+       "location": "query"
+      },
+      "siteId": {
+       "type": "string",
+       "description": "Select only orders that are associated with these site IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "projectId"
+     ],
+     "response": {
+      "$ref": "OrdersListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "placementGroups": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.placementGroups.get",
+     "path": "userprofiles/{profileId}/placementGroups/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one placement group by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Placement group ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "PlacementGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.placementGroups.insert",
+     "path": "userprofiles/{profileId}/placementGroups",
+     "httpMethod": "POST",
+     "description": "Inserts a new placement group.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "PlacementGroup"
+     },
+     "response": {
+      "$ref": "PlacementGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.placementGroups.list",
+     "path": "userprofiles/{profileId}/placementGroups",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of placement groups, possibly filtered.",
+     "parameters": {
+      "advertiserIds": {
+       "type": "string",
+       "description": "Select only placement groups that belong to these advertisers.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "archived": {
+       "type": "boolean",
+       "description": "Select only archived placements. Don't set this field to select both archived and non-archived placements.",
+       "location": "query"
+      },
+      "campaignIds": {
+       "type": "string",
+       "description": "Select only placement groups that belong to these campaigns.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "contentCategoryIds": {
+       "type": "string",
+       "description": "Select only placement groups that are associated with these content categories.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "directorySiteIds": {
+       "type": "string",
+       "description": "Select only placement groups that are associated with these directory sites.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only placement groups with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxEndDate": {
+       "type": "string",
+       "description": "Select only placements or placement groups whose end date is on or before the specified maxEndDate. The date should be formatted as \"yyyy-MM-dd\".",
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "maxStartDate": {
+       "type": "string",
+       "description": "Select only placements or placement groups whose start date is on or before the specified maxStartDate. The date should be formatted as \"yyyy-MM-dd\".",
+       "location": "query"
+      },
+      "minEndDate": {
+       "type": "string",
+       "description": "Select only placements or placement groups whose end date is on or after the specified minEndDate. The date should be formatted as \"yyyy-MM-dd\".",
+       "location": "query"
+      },
+      "minStartDate": {
+       "type": "string",
+       "description": "Select only placements or placement groups whose start date is on or after the specified minStartDate. The date should be formatted as \"yyyy-MM-dd\".",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "placementGroupType": {
+       "type": "string",
+       "description": "Select only placement groups belonging with this group type. A package is a simple group of placements that acts as a single pricing point for a group of tags. A roadblock is a group of placements that not only acts as a single pricing point but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned placements to be marked as primary for reporting.",
+       "enum": [
+        "PLACEMENT_PACKAGE",
+        "PLACEMENT_ROADBLOCK"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "placementStrategyIds": {
+       "type": "string",
+       "description": "Select only placement groups that are associated with these placement strategies.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "pricingTypes": {
+       "type": "string",
+       "description": "Select only placement groups with these pricing types.",
+       "enum": [
+        "PRICING_TYPE_CPA",
+        "PRICING_TYPE_CPC",
+        "PRICING_TYPE_CPM",
+        "PRICING_TYPE_FLAT_RATE_CLICKS",
+        "PRICING_TYPE_FLAT_RATE_IMPRESSIONS"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        "",
+        "",
+        ""
+       ],
+       "repeated": true,
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for placement groups by name or ID. Wildcards (*) are allowed. For example, \"placement*2015\" will return placement groups with names like \"placement group June 2015\", \"placement group May 2015\", or simply \"placements 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 \"placementgroup\" will match placement groups with name \"my placementgroup\", \"placementgroup 2015\", or simply \"placementgroup\".",
+       "location": "query"
+      },
+      "siteIds": {
+       "type": "string",
+       "description": "Select only placement groups that are associated with these sites.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "PlacementGroupsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.placementGroups.patch",
+     "path": "userprofiles/{profileId}/placementGroups",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing placement group. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Placement group ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "PlacementGroup"
+     },
+     "response": {
+      "$ref": "PlacementGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.placementGroups.update",
+     "path": "userprofiles/{profileId}/placementGroups",
+     "httpMethod": "PUT",
+     "description": "Updates an existing placement group.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "PlacementGroup"
+     },
+     "response": {
+      "$ref": "PlacementGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "placementStrategies": {
+   "methods": {
+    "delete": {
+     "id": "dfareporting.placementStrategies.delete",
+     "path": "userprofiles/{profileId}/placementStrategies/{id}",
+     "httpMethod": "DELETE",
+     "description": "Deletes an existing placement strategy.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Placement strategy ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "get": {
+     "id": "dfareporting.placementStrategies.get",
+     "path": "userprofiles/{profileId}/placementStrategies/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one placement strategy by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Placement strategy ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "PlacementStrategy"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.placementStrategies.insert",
+     "path": "userprofiles/{profileId}/placementStrategies",
+     "httpMethod": "POST",
+     "description": "Inserts a new placement strategy.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "PlacementStrategy"
+     },
+     "response": {
+      "$ref": "PlacementStrategy"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.placementStrategies.list",
+     "path": "userprofiles/{profileId}/placementStrategies",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of placement strategies, possibly filtered.",
+     "parameters": {
+      "ids": {
+       "type": "string",
+       "description": "Select only placement strategies with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"placementstrategy*2015\" will return objects with names like \"placementstrategy June 2015\", \"placementstrategy April 2015\", or simply \"placementstrategy 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 \"placementstrategy\" will match objects with name \"my placementstrategy\", \"placementstrategy 2015\", or simply \"placementstrategy\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "PlacementStrategiesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.placementStrategies.patch",
+     "path": "userprofiles/{profileId}/placementStrategies",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing placement strategy. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Placement strategy ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "PlacementStrategy"
+     },
+     "response": {
+      "$ref": "PlacementStrategy"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.placementStrategies.update",
+     "path": "userprofiles/{profileId}/placementStrategies",
+     "httpMethod": "PUT",
+     "description": "Updates an existing placement strategy.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "PlacementStrategy"
+     },
+     "response": {
+      "$ref": "PlacementStrategy"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "placements": {
+   "methods": {
+    "generatetags": {
+     "id": "dfareporting.placements.generatetags",
+     "path": "userprofiles/{profileId}/placements/generatetags",
+     "httpMethod": "POST",
+     "description": "Generates tags for a placement.",
+     "parameters": {
+      "campaignId": {
+       "type": "string",
+       "description": "Generate placements belonging to this campaign. This is a required field.",
+       "format": "int64",
+       "location": "query"
+      },
+      "placementIds": {
+       "type": "string",
+       "description": "Generate tags for these placements.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "tagFormats": {
+       "type": "string",
+       "description": "Tag formats to generate for these placements.",
+       "enum": [
+        "PLACEMENT_TAG_CLICK_COMMANDS",
+        "PLACEMENT_TAG_IFRAME_ILAYER",
+        "PLACEMENT_TAG_IFRAME_JAVASCRIPT",
+        "PLACEMENT_TAG_IFRAME_JAVASCRIPT_LEGACY",
+        "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH",
+        "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3",
+        "PLACEMENT_TAG_INTERNAL_REDIRECT",
+        "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT",
+        "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT_LEGACY",
+        "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT",
+        "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT",
+        "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT_LEGACY",
+        "PLACEMENT_TAG_JAVASCRIPT",
+        "PLACEMENT_TAG_JAVASCRIPT_LEGACY",
+        "PLACEMENT_TAG_STANDARD",
+        "PLACEMENT_TAG_TRACKING",
+        "PLACEMENT_TAG_TRACKING_IFRAME",
+        "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        "",
+        ""
+       ],
+       "repeated": true,
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "PlacementsGenerateTagsResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "get": {
+     "id": "dfareporting.placements.get",
+     "path": "userprofiles/{profileId}/placements/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one placement by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Placement ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "Placement"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.placements.insert",
+     "path": "userprofiles/{profileId}/placements",
+     "httpMethod": "POST",
+     "description": "Inserts a new placement.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Placement"
+     },
+     "response": {
+      "$ref": "Placement"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.placements.list",
+     "path": "userprofiles/{profileId}/placements",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of placements, possibly filtered.",
+     "parameters": {
+      "advertiserIds": {
+       "type": "string",
+       "description": "Select only placements that belong to these advertisers.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "archived": {
+       "type": "boolean",
+       "description": "Select only archived placements. Don't set this field to select both archived and non-archived placements.",
+       "location": "query"
+      },
+      "campaignIds": {
+       "type": "string",
+       "description": "Select only placements that belong to these campaigns.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "compatibilities": {
+       "type": "string",
+       "description": "Select only placements that are associated with these compatibilities. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps.IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard.",
+       "enum": [
+        "APP",
+        "APP_INTERSTITIAL",
+        "DISPLAY",
+        "DISPLAY_INTERSTITIAL",
+        "IN_STREAM_VIDEO"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        "",
+        "",
+        ""
+       ],
+       "repeated": true,
+       "location": "query"
+      },
+      "contentCategoryIds": {
+       "type": "string",
+       "description": "Select only placements that are associated with these content categories.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "directorySiteIds": {
+       "type": "string",
+       "description": "Select only placements that are associated with these directory sites.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "groupIds": {
+       "type": "string",
+       "description": "Select only placements that belong to these placement groups.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only placements with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxEndDate": {
+       "type": "string",
+       "description": "Select only placements or placement groups whose end date is on or before the specified maxEndDate. The date should be formatted as \"yyyy-MM-dd\".",
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "maxStartDate": {
+       "type": "string",
+       "description": "Select only placements or placement groups whose start date is on or before the specified maxStartDate. The date should be formatted as \"yyyy-MM-dd\".",
+       "location": "query"
+      },
+      "minEndDate": {
+       "type": "string",
+       "description": "Select only placements or placement groups whose end date is on or after the specified minEndDate. The date should be formatted as \"yyyy-MM-dd\".",
+       "location": "query"
+      },
+      "minStartDate": {
+       "type": "string",
+       "description": "Select only placements or placement groups whose start date is on or after the specified minStartDate. The date should be formatted as \"yyyy-MM-dd\".",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "paymentSource": {
+       "type": "string",
+       "description": "Select only placements with this payment source.",
+       "enum": [
+        "PLACEMENT_AGENCY_PAID",
+        "PLACEMENT_PUBLISHER_PAID"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "placementStrategyIds": {
+       "type": "string",
+       "description": "Select only placements that are associated with these placement strategies.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "pricingTypes": {
+       "type": "string",
+       "description": "Select only placements with these pricing types.",
+       "enum": [
+        "PRICING_TYPE_CPA",
+        "PRICING_TYPE_CPC",
+        "PRICING_TYPE_CPM",
+        "PRICING_TYPE_FLAT_RATE_CLICKS",
+        "PRICING_TYPE_FLAT_RATE_IMPRESSIONS"
+       ],
+       "enumDescriptions": [
+        "",
+        "",
+        "",
+        "",
+        ""
+       ],
+       "repeated": true,
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for placements by name or ID. Wildcards (*) are allowed. For example, \"placement*2015\" will return placements with names like \"placement June 2015\", \"placement May 2015\", or simply \"placements 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 \"placement\" will match placements with name \"my placement\", \"placement 2015\", or simply \"placement\".",
+       "location": "query"
+      },
+      "siteIds": {
+       "type": "string",
+       "description": "Select only placements that are associated with these sites.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "sizeIds": {
+       "type": "string",
+       "description": "Select only placements that are associated with these sizes.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "PlacementsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.placements.patch",
+     "path": "userprofiles/{profileId}/placements",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing placement. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Placement ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "Placement"
+     },
+     "response": {
+      "$ref": "Placement"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.placements.update",
+     "path": "userprofiles/{profileId}/placements",
+     "httpMethod": "PUT",
+     "description": "Updates an existing placement.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Placement"
+     },
+     "response": {
+      "$ref": "Placement"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "platformTypes": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.platformTypes.get",
+     "path": "userprofiles/{profileId}/platformTypes/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one platform type by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Platform type ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "PlatformType"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.platformTypes.list",
+     "path": "userprofiles/{profileId}/platformTypes",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of platform types.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "PlatformTypesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "postalCodes": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.postalCodes.get",
+     "path": "userprofiles/{profileId}/postalCodes/{code}",
+     "httpMethod": "GET",
+     "description": "Gets one postal code by ID.",
+     "parameters": {
+      "code": {
+       "type": "string",
+       "description": "Postal code ID.",
+       "required": true,
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "code"
+     ],
+     "response": {
+      "$ref": "PostalCode"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.postalCodes.list",
+     "path": "userprofiles/{profileId}/postalCodes",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of postal codes.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "PostalCodesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "projects": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.projects.get",
+     "path": "userprofiles/{profileId}/projects/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one project by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Project ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "Project"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.projects.list",
+     "path": "userprofiles/{profileId}/projects",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of projects, possibly filtered.",
+     "parameters": {
+      "advertiserIds": {
+       "type": "string",
+       "description": "Select only projects with these advertiser IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only projects with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "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\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "ProjectsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "regions": {
+   "methods": {
+    "list": {
+     "id": "dfareporting.regions.list",
+     "path": "userprofiles/{profileId}/regions",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of regions.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "RegionsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "remarketingListShares": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.remarketingListShares.get",
+     "path": "userprofiles/{profileId}/remarketingListShares/{remarketingListId}",
+     "httpMethod": "GET",
+     "description": "Gets one remarketing list share by remarketing list ID.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "remarketingListId": {
+       "type": "string",
+       "description": "Remarketing list ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "remarketingListId"
+     ],
+     "response": {
+      "$ref": "RemarketingListShare"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.remarketingListShares.patch",
+     "path": "userprofiles/{profileId}/remarketingListShares",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing remarketing list share. This method supports patch semantics.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "remarketingListId": {
+       "type": "string",
+       "description": "Remarketing list ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "remarketingListId"
+     ],
+     "request": {
+      "$ref": "RemarketingListShare"
+     },
+     "response": {
+      "$ref": "RemarketingListShare"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.remarketingListShares.update",
+     "path": "userprofiles/{profileId}/remarketingListShares",
+     "httpMethod": "PUT",
+     "description": "Updates an existing remarketing list share.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "RemarketingListShare"
+     },
+     "response": {
+      "$ref": "RemarketingListShare"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "remarketingLists": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.remarketingLists.get",
+     "path": "userprofiles/{profileId}/remarketingLists/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one remarketing list by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Remarketing list ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "RemarketingList"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.remarketingLists.insert",
+     "path": "userprofiles/{profileId}/remarketingLists",
+     "httpMethod": "POST",
+     "description": "Inserts a new remarketing list.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "RemarketingList"
+     },
+     "response": {
+      "$ref": "RemarketingList"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.remarketingLists.list",
+     "path": "userprofiles/{profileId}/remarketingLists",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of remarketing lists, possibly filtered.",
+     "parameters": {
+      "active": {
+       "type": "boolean",
+       "description": "Select only active or only inactive remarketing lists.",
+       "location": "query"
+      },
+      "advertiserId": {
+       "type": "string",
+       "description": "Select only remarketing lists owned by this advertiser.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "floodlightActivityId": {
+       "type": "string",
+       "description": "Select only remarketing lists that have this floodlight activity ID.",
+       "format": "int64",
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "name": {
+       "type": "string",
+       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"remarketing list*2015\" will return objects with names like \"remarketing list June 2015\", \"remarketing list April 2015\", or simply \"remarketing list 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 \"remarketing list\" will match objects with name \"my remarketing list\", \"remarketing list 2015\", or simply \"remarketing list\".",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "advertiserId"
+     ],
+     "response": {
+      "$ref": "RemarketingListsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.remarketingLists.patch",
+     "path": "userprofiles/{profileId}/remarketingLists",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing remarketing list. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Remarketing list ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "RemarketingList"
+     },
+     "response": {
+      "$ref": "RemarketingList"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.remarketingLists.update",
+     "path": "userprofiles/{profileId}/remarketingLists",
+     "httpMethod": "PUT",
+     "description": "Updates an existing remarketing list.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "RemarketingList"
+     },
+     "response": {
+      "$ref": "RemarketingList"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "reports": {
+   "methods": {
+    "delete": {
+     "id": "dfareporting.reports.delete",
+     "path": "userprofiles/{profileId}/reports/{reportId}",
+     "httpMethod": "DELETE",
+     "description": "Deletes a report by its ID.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "The DFA user profile ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "reportId": {
+       "type": "string",
+       "description": "The ID of the report.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "reportId"
+     ],
+     "scopes": [
+      "https://www.googleapis.com/auth/dfareporting"
+     ]
+    },
+    "get": {
+     "id": "dfareporting.reports.get",
+     "path": "userprofiles/{profileId}/reports/{reportId}",
+     "httpMethod": "GET",
+     "description": "Retrieves a report by its ID.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "The DFA user profile ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "reportId": {
+       "type": "string",
+       "description": "The ID of the report.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "reportId"
+     ],
+     "response": {
+      "$ref": "Report"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfareporting"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.reports.insert",
+     "path": "userprofiles/{profileId}/reports",
+     "httpMethod": "POST",
+     "description": "Creates a report.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "The DFA user profile ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Report"
+     },
+     "response": {
+      "$ref": "Report"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfareporting"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.reports.list",
+     "path": "userprofiles/{profileId}/reports",
+     "httpMethod": "GET",
+     "description": "Retrieves list of reports.",
+     "parameters": {
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "minimum": "0",
+       "maximum": "10",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "The value of the nextToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "The DFA user profile ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "scope": {
+       "type": "string",
+       "description": "The scope that defines which results are returned, default is 'MINE'.",
+       "default": "MINE",
+       "enum": [
+        "ALL",
+        "MINE"
+       ],
+       "enumDescriptions": [
+        "All reports in account.",
+        "My reports."
+       ],
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "The field by which to sort the list.",
+       "default": "LAST_MODIFIED_TIME",
+       "enum": [
+        "ID",
+        "LAST_MODIFIED_TIME",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "Sort by report ID.",
+        "Sort by 'lastModifiedTime' field.",
+        "Sort by name of reports."
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is 'DESCENDING'.",
+       "default": "DESCENDING",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "Ascending order.",
+        "Descending order."
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "ReportList"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfareporting"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.reports.patch",
+     "path": "userprofiles/{profileId}/reports/{reportId}",
+     "httpMethod": "PATCH",
+     "description": "Updates a report. This method supports patch semantics.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "The DFA user profile ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "reportId": {
+       "type": "string",
+       "description": "The ID of the report.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "reportId"
+     ],
+     "request": {
+      "$ref": "Report"
+     },
+     "response": {
+      "$ref": "Report"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfareporting"
+     ]
+    },
+    "run": {
+     "id": "dfareporting.reports.run",
+     "path": "userprofiles/{profileId}/reports/{reportId}/run",
+     "httpMethod": "POST",
+     "description": "Runs a report.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "The DFA profile ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "reportId": {
+       "type": "string",
+       "description": "The ID of the report.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "synchronous": {
+       "type": "boolean",
+       "description": "If set and true, tries to run the report synchronously.",
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "reportId"
+     ],
+     "response": {
+      "$ref": "File"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfareporting"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.reports.update",
+     "path": "userprofiles/{profileId}/reports/{reportId}",
+     "httpMethod": "PUT",
+     "description": "Updates a report.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "The DFA user profile ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "reportId": {
+       "type": "string",
+       "description": "The ID of the report.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "reportId"
+     ],
+     "request": {
+      "$ref": "Report"
+     },
+     "response": {
+      "$ref": "Report"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfareporting"
+     ]
+    }
+   },
+   "resources": {
+    "compatibleFields": {
+     "methods": {
+      "query": {
+       "id": "dfareporting.reports.compatibleFields.query",
+       "path": "userprofiles/{profileId}/reports/compatiblefields/query",
+       "httpMethod": "POST",
+       "description": "Returns the fields that are compatible to be selected in the respective sections of a report criteria, given the fields already selected in the input report and user permissions.",
+       "parameters": {
+        "profileId": {
+         "type": "string",
+         "description": "The DFA user profile ID.",
+         "required": true,
+         "format": "int64",
+         "location": "path"
+        }
+       },
+       "parameterOrder": [
+        "profileId"
+       ],
+       "request": {
+        "$ref": "Report"
+       },
+       "response": {
+        "$ref": "CompatibleFields"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/dfareporting"
+       ]
+      }
+     }
+    },
+    "files": {
+     "methods": {
+      "get": {
+       "id": "dfareporting.reports.files.get",
+       "path": "userprofiles/{profileId}/reports/{reportId}/files/{fileId}",
+       "httpMethod": "GET",
+       "description": "Retrieves a report file.",
+       "parameters": {
+        "fileId": {
+         "type": "string",
+         "description": "The ID of the report file.",
+         "required": true,
+         "format": "int64",
+         "location": "path"
+        },
+        "profileId": {
+         "type": "string",
+         "description": "The DFA profile ID.",
+         "required": true,
+         "format": "int64",
+         "location": "path"
+        },
+        "reportId": {
+         "type": "string",
+         "description": "The ID of the report.",
+         "required": true,
+         "format": "int64",
+         "location": "path"
+        }
+       },
+       "parameterOrder": [
+        "profileId",
+        "reportId",
+        "fileId"
+       ],
+       "response": {
+        "$ref": "File"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/dfareporting"
+       ],
+       "supportsMediaDownload": true
+      },
+      "list": {
+       "id": "dfareporting.reports.files.list",
+       "path": "userprofiles/{profileId}/reports/{reportId}/files",
+       "httpMethod": "GET",
+       "description": "Lists files for a report.",
+       "parameters": {
+        "maxResults": {
+         "type": "integer",
+         "description": "Maximum number of results to return.",
+         "format": "int32",
+         "minimum": "0",
+         "maximum": "10",
+         "location": "query"
+        },
+        "pageToken": {
+         "type": "string",
+         "description": "The value of the nextToken from the previous result page.",
+         "location": "query"
+        },
+        "profileId": {
+         "type": "string",
+         "description": "The DFA profile ID.",
+         "required": true,
+         "format": "int64",
+         "location": "path"
+        },
+        "reportId": {
+         "type": "string",
+         "description": "The ID of the parent report.",
+         "required": true,
+         "format": "int64",
+         "location": "path"
+        },
+        "sortField": {
+         "type": "string",
+         "description": "The field by which to sort the list.",
+         "default": "LAST_MODIFIED_TIME",
+         "enum": [
+          "ID",
+          "LAST_MODIFIED_TIME"
+         ],
+         "enumDescriptions": [
+          "Sort by file ID.",
+          "Sort by 'lastmodifiedAt' field."
+         ],
+         "location": "query"
+        },
+        "sortOrder": {
+         "type": "string",
+         "description": "Order of sorted results, default is 'DESCENDING'.",
+         "default": "DESCENDING",
+         "enum": [
+          "ASCENDING",
+          "DESCENDING"
+         ],
+         "enumDescriptions": [
+          "Ascending order.",
+          "Descending order."
+         ],
+         "location": "query"
+        }
+       },
+       "parameterOrder": [
+        "profileId",
+        "reportId"
+       ],
+       "response": {
+        "$ref": "FileList"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/dfareporting"
+       ]
+      }
+     }
+    }
+   }
+  },
+  "sites": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.sites.get",
+     "path": "userprofiles/{profileId}/sites/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one site by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Site ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "Site"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.sites.insert",
+     "path": "userprofiles/{profileId}/sites",
+     "httpMethod": "POST",
+     "description": "Inserts a new site.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Site"
+     },
+     "response": {
+      "$ref": "Site"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.sites.list",
+     "path": "userprofiles/{profileId}/sites",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of sites, possibly filtered.",
+     "parameters": {
+      "acceptsInStreamVideoPlacements": {
+       "type": "boolean",
+       "description": "This search filter is no longer supported and will have no effect on the results returned.",
+       "location": "query"
+      },
+      "acceptsInterstitialPlacements": {
+       "type": "boolean",
+       "description": "This search filter is no longer supported and will have no effect on the results returned.",
+       "location": "query"
+      },
+      "acceptsPublisherPaidPlacements": {
+       "type": "boolean",
+       "description": "Select only sites that accept publisher paid placements.",
+       "location": "query"
+      },
+      "adWordsSite": {
+       "type": "boolean",
+       "description": "Select only AdWords sites.",
+       "location": "query"
+      },
+      "approved": {
+       "type": "boolean",
+       "description": "Select only approved sites.",
+       "location": "query"
+      },
+      "campaignIds": {
+       "type": "string",
+       "description": "Select only sites with these campaign IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "directorySiteIds": {
+       "type": "string",
+       "description": "Select only sites with these directory site IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only sites with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name, ID or keyName. Wildcards (*) are allowed. For example, \"site*2015\" will return objects with names like \"site June 2015\", \"site April 2015\", or simply \"site 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 \"site\" will match objects with name \"my site\", \"site 2015\", or simply \"site\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "subaccountId": {
+       "type": "string",
+       "description": "Select only sites with this subaccount ID.",
+       "format": "int64",
+       "location": "query"
+      },
+      "unmappedSite": {
+       "type": "boolean",
+       "description": "Select only sites that have not been mapped to a directory site.",
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "SitesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.sites.patch",
+     "path": "userprofiles/{profileId}/sites",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing site. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Site ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "Site"
+     },
+     "response": {
+      "$ref": "Site"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.sites.update",
+     "path": "userprofiles/{profileId}/sites",
+     "httpMethod": "PUT",
+     "description": "Updates an existing site.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Site"
+     },
+     "response": {
+      "$ref": "Site"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "sizes": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.sizes.get",
+     "path": "userprofiles/{profileId}/sizes/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one size by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Size ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "Size"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.sizes.insert",
+     "path": "userprofiles/{profileId}/sizes",
+     "httpMethod": "POST",
+     "description": "Inserts a new size.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Size"
+     },
+     "response": {
+      "$ref": "Size"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.sizes.list",
+     "path": "userprofiles/{profileId}/sizes",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of sizes, possibly filtered.",
+     "parameters": {
+      "height": {
+       "type": "integer",
+       "description": "Select only sizes with this height.",
+       "format": "int32",
+       "location": "query"
+      },
+      "iabStandard": {
+       "type": "boolean",
+       "description": "Select only IAB standard sizes.",
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only sizes with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "width": {
+       "type": "integer",
+       "description": "Select only sizes with this width.",
+       "format": "int32",
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "SizesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "subaccounts": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.subaccounts.get",
+     "path": "userprofiles/{profileId}/subaccounts/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one subaccount by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Subaccount ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "Subaccount"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.subaccounts.insert",
+     "path": "userprofiles/{profileId}/subaccounts",
+     "httpMethod": "POST",
+     "description": "Inserts a new subaccount.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Subaccount"
+     },
+     "response": {
+      "$ref": "Subaccount"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.subaccounts.list",
+     "path": "userprofiles/{profileId}/subaccounts",
+     "httpMethod": "GET",
+     "description": "Gets a list of subaccounts, possibly filtered.",
+     "parameters": {
+      "ids": {
+       "type": "string",
+       "description": "Select only subaccounts with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"subaccount*2015\" will return objects with names like \"subaccount June 2015\", \"subaccount April 2015\", or simply \"subaccount 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 \"subaccount\" will match objects with name \"my subaccount\", \"subaccount 2015\", or simply \"subaccount\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "SubaccountsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.subaccounts.patch",
+     "path": "userprofiles/{profileId}/subaccounts",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing subaccount. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Subaccount ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "Subaccount"
+     },
+     "response": {
+      "$ref": "Subaccount"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.subaccounts.update",
+     "path": "userprofiles/{profileId}/subaccounts",
+     "httpMethod": "PUT",
+     "description": "Updates an existing subaccount.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "Subaccount"
+     },
+     "response": {
+      "$ref": "Subaccount"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "targetableRemarketingLists": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.targetableRemarketingLists.get",
+     "path": "userprofiles/{profileId}/targetableRemarketingLists/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one remarketing list by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "Remarketing list ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "TargetableRemarketingList"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.targetableRemarketingLists.list",
+     "path": "userprofiles/{profileId}/targetableRemarketingLists",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of targetable remarketing lists, possibly filtered.",
+     "parameters": {
+      "active": {
+       "type": "boolean",
+       "description": "Select only active or only inactive targetable remarketing lists.",
+       "location": "query"
+      },
+      "advertiserId": {
+       "type": "string",
+       "description": "Select only targetable remarketing lists targetable by these advertisers.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "name": {
+       "type": "string",
+       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"remarketing list*2015\" will return objects with names like \"remarketing list June 2015\", \"remarketing list April 2015\", or simply \"remarketing list 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 \"remarketing list\" will match objects with name \"my remarketing list\", \"remarketing list 2015\", or simply \"remarketing list\".",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "advertiserId"
+     ],
+     "response": {
+      "$ref": "TargetableRemarketingListsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "userProfiles": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.userProfiles.get",
+     "path": "userprofiles/{profileId}",
+     "httpMethod": "GET",
+     "description": "Gets one user profile by ID.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "The user profile ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "UserProfile"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfareporting",
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.userProfiles.list",
+     "path": "userprofiles",
+     "httpMethod": "GET",
+     "description": "Retrieves list of user profiles for a user.",
+     "response": {
+      "$ref": "UserProfileList"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfareporting",
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "userRolePermissionGroups": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.userRolePermissionGroups.get",
+     "path": "userprofiles/{profileId}/userRolePermissionGroups/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one user role permission group by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "User role permission group ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "UserRolePermissionGroup"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.userRolePermissionGroups.list",
+     "path": "userprofiles/{profileId}/userRolePermissionGroups",
+     "httpMethod": "GET",
+     "description": "Gets a list of all supported user role permission groups.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "UserRolePermissionGroupsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "userRolePermissions": {
+   "methods": {
+    "get": {
+     "id": "dfareporting.userRolePermissions.get",
+     "path": "userprofiles/{profileId}/userRolePermissions/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one user role permission by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "User role permission ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "UserRolePermission"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.userRolePermissions.list",
+     "path": "userprofiles/{profileId}/userRolePermissions",
+     "httpMethod": "GET",
+     "description": "Gets a list of user role permissions, possibly filtered.",
+     "parameters": {
+      "ids": {
+       "type": "string",
+       "description": "Select only user role permissions with these IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "UserRolePermissionsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  },
+  "userRoles": {
+   "methods": {
+    "delete": {
+     "id": "dfareporting.userRoles.delete",
+     "path": "userprofiles/{profileId}/userRoles/{id}",
+     "httpMethod": "DELETE",
+     "description": "Deletes an existing user role.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "User role ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "get": {
+     "id": "dfareporting.userRoles.get",
+     "path": "userprofiles/{profileId}/userRoles/{id}",
+     "httpMethod": "GET",
+     "description": "Gets one user role by ID.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "User role ID.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "response": {
+      "$ref": "UserRole"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "insert": {
+     "id": "dfareporting.userRoles.insert",
+     "path": "userprofiles/{profileId}/userRoles",
+     "httpMethod": "POST",
+     "description": "Inserts a new user role.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "UserRole"
+     },
+     "response": {
+      "$ref": "UserRole"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "list": {
+     "id": "dfareporting.userRoles.list",
+     "path": "userprofiles/{profileId}/userRoles",
+     "httpMethod": "GET",
+     "description": "Retrieves a list of user roles, possibly filtered.",
+     "parameters": {
+      "accountUserRoleOnly": {
+       "type": "boolean",
+       "description": "Select only account level user roles not associated with any specific subaccount.",
+       "location": "query"
+      },
+      "ids": {
+       "type": "string",
+       "description": "Select only user roles with the specified IDs.",
+       "format": "int64",
+       "repeated": true,
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "Maximum number of results to return.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Value of the nextPageToken from the previous result page.",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      },
+      "searchString": {
+       "type": "string",
+       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"userrole*2015\" will return objects with names like \"userrole June 2015\", \"userrole April 2015\", or simply \"userrole 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 \"userrole\" will match objects with name \"my userrole\", \"userrole 2015\", or simply \"userrole\".",
+       "location": "query"
+      },
+      "sortField": {
+       "type": "string",
+       "description": "Field by which to sort the list.",
+       "enum": [
+        "ID",
+        "NAME"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "sortOrder": {
+       "type": "string",
+       "description": "Order of sorted results, default is ASCENDING.",
+       "enum": [
+        "ASCENDING",
+        "DESCENDING"
+       ],
+       "enumDescriptions": [
+        "",
+        ""
+       ],
+       "location": "query"
+      },
+      "subaccountId": {
+       "type": "string",
+       "description": "Select only user roles that belong to this subaccount.",
+       "format": "int64",
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "response": {
+      "$ref": "UserRolesListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "patch": {
+     "id": "dfareporting.userRoles.patch",
+     "path": "userprofiles/{profileId}/userRoles",
+     "httpMethod": "PATCH",
+     "description": "Updates an existing user role. This method supports patch semantics.",
+     "parameters": {
+      "id": {
+       "type": "string",
+       "description": "User role ID.",
+       "required": true,
+       "format": "int64",
+       "location": "query"
+      },
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId",
+      "id"
+     ],
+     "request": {
+      "$ref": "UserRole"
+     },
+     "response": {
+      "$ref": "UserRole"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    },
+    "update": {
+     "id": "dfareporting.userRoles.update",
+     "path": "userprofiles/{profileId}/userRoles",
+     "httpMethod": "PUT",
+     "description": "Updates an existing user role.",
+     "parameters": {
+      "profileId": {
+       "type": "string",
+       "description": "User profile ID associated with this request.",
+       "required": true,
+       "format": "int64",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "profileId"
+     ],
+     "request": {
+      "$ref": "UserRole"
+     },
+     "response": {
+      "$ref": "UserRole"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/dfatrafficking"
+     ]
+    }
+   }
+  }
+ }
+}
diff --git a/dfareporting/v2.4/dfareporting-gen.go b/dfareporting/v2.4/dfareporting-gen.go
new file mode 100644
index 0000000..0428eb8
--- /dev/null
+++ b/dfareporting/v2.4/dfareporting-gen.go
@@ -0,0 +1,42059 @@
+// Package dfareporting provides access to the DCM/DFA Reporting And Trafficking API.
+//
+// See https://developers.google.com/doubleclick-advertisers/reporting/
+//
+// Usage example:
+//
+//   import "google.golang.org/api/dfareporting/v2.4"
+//   ...
+//   dfareportingService, err := dfareporting.New(oauthHttpClient)
+package dfareporting // import "google.golang.org/api/dfareporting/v2.4"
+
+import (
+	"bytes"
+	"encoding/json"
+	"errors"
+	"fmt"
+	context "golang.org/x/net/context"
+	ctxhttp "golang.org/x/net/context/ctxhttp"
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+var _ = ctxhttp.Do
+
+const apiId = "dfareporting:v2.4"
+const apiName = "dfareporting"
+const apiVersion = "v2.4"
+const basePath = "https://www.googleapis.com/dfareporting/v2.4/"
+
+// OAuth2 scopes used by this API.
+const (
+	// View and manage DoubleClick for Advertisers reports
+	DfareportingScope = "https://www.googleapis.com/auth/dfareporting"
+
+	// View and manage your DoubleClick Campaign Manager's (DCM) display ad
+	// campaigns
+	DfatraffickingScope = "https://www.googleapis.com/auth/dfatrafficking"
+)
+
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.AccountActiveAdSummaries = NewAccountActiveAdSummariesService(s)
+	s.AccountPermissionGroups = NewAccountPermissionGroupsService(s)
+	s.AccountPermissions = NewAccountPermissionsService(s)
+	s.AccountUserProfiles = NewAccountUserProfilesService(s)
+	s.Accounts = NewAccountsService(s)
+	s.Ads = NewAdsService(s)
+	s.AdvertiserGroups = NewAdvertiserGroupsService(s)
+	s.Advertisers = NewAdvertisersService(s)
+	s.Browsers = NewBrowsersService(s)
+	s.CampaignCreativeAssociations = NewCampaignCreativeAssociationsService(s)
+	s.Campaigns = NewCampaignsService(s)
+	s.ChangeLogs = NewChangeLogsService(s)
+	s.Cities = NewCitiesService(s)
+	s.ConnectionTypes = NewConnectionTypesService(s)
+	s.ContentCategories = NewContentCategoriesService(s)
+	s.Countries = NewCountriesService(s)
+	s.CreativeAssets = NewCreativeAssetsService(s)
+	s.CreativeFieldValues = NewCreativeFieldValuesService(s)
+	s.CreativeFields = NewCreativeFieldsService(s)
+	s.CreativeGroups = NewCreativeGroupsService(s)
+	s.Creatives = NewCreativesService(s)
+	s.DimensionValues = NewDimensionValuesService(s)
+	s.DirectorySiteContacts = NewDirectorySiteContactsService(s)
+	s.DirectorySites = NewDirectorySitesService(s)
+	s.EventTags = NewEventTagsService(s)
+	s.Files = NewFilesService(s)
+	s.FloodlightActivities = NewFloodlightActivitiesService(s)
+	s.FloodlightActivityGroups = NewFloodlightActivityGroupsService(s)
+	s.FloodlightConfigurations = NewFloodlightConfigurationsService(s)
+	s.InventoryItems = NewInventoryItemsService(s)
+	s.LandingPages = NewLandingPagesService(s)
+	s.Metros = NewMetrosService(s)
+	s.MobileCarriers = NewMobileCarriersService(s)
+	s.OperatingSystemVersions = NewOperatingSystemVersionsService(s)
+	s.OperatingSystems = NewOperatingSystemsService(s)
+	s.OrderDocuments = NewOrderDocumentsService(s)
+	s.Orders = NewOrdersService(s)
+	s.PlacementGroups = NewPlacementGroupsService(s)
+	s.PlacementStrategies = NewPlacementStrategiesService(s)
+	s.Placements = NewPlacementsService(s)
+	s.PlatformTypes = NewPlatformTypesService(s)
+	s.PostalCodes = NewPostalCodesService(s)
+	s.Projects = NewProjectsService(s)
+	s.Regions = NewRegionsService(s)
+	s.RemarketingListShares = NewRemarketingListSharesService(s)
+	s.RemarketingLists = NewRemarketingListsService(s)
+	s.Reports = NewReportsService(s)
+	s.Sites = NewSitesService(s)
+	s.Sizes = NewSizesService(s)
+	s.Subaccounts = NewSubaccountsService(s)
+	s.TargetableRemarketingLists = NewTargetableRemarketingListsService(s)
+	s.UserProfiles = NewUserProfilesService(s)
+	s.UserRolePermissionGroups = NewUserRolePermissionGroupsService(s)
+	s.UserRolePermissions = NewUserRolePermissionsService(s)
+	s.UserRoles = NewUserRolesService(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	AccountActiveAdSummaries *AccountActiveAdSummariesService
+
+	AccountPermissionGroups *AccountPermissionGroupsService
+
+	AccountPermissions *AccountPermissionsService
+
+	AccountUserProfiles *AccountUserProfilesService
+
+	Accounts *AccountsService
+
+	Ads *AdsService
+
+	AdvertiserGroups *AdvertiserGroupsService
+
+	Advertisers *AdvertisersService
+
+	Browsers *BrowsersService
+
+	CampaignCreativeAssociations *CampaignCreativeAssociationsService
+
+	Campaigns *CampaignsService
+
+	ChangeLogs *ChangeLogsService
+
+	Cities *CitiesService
+
+	ConnectionTypes *ConnectionTypesService
+
+	ContentCategories *ContentCategoriesService
+
+	Countries *CountriesService
+
+	CreativeAssets *CreativeAssetsService
+
+	CreativeFieldValues *CreativeFieldValuesService
+
+	CreativeFields *CreativeFieldsService
+
+	CreativeGroups *CreativeGroupsService
+
+	Creatives *CreativesService
+
+	DimensionValues *DimensionValuesService
+
+	DirectorySiteContacts *DirectorySiteContactsService
+
+	DirectorySites *DirectorySitesService
+
+	EventTags *EventTagsService
+
+	Files *FilesService
+
+	FloodlightActivities *FloodlightActivitiesService
+
+	FloodlightActivityGroups *FloodlightActivityGroupsService
+
+	FloodlightConfigurations *FloodlightConfigurationsService
+
+	InventoryItems *InventoryItemsService
+
+	LandingPages *LandingPagesService
+
+	Metros *MetrosService
+
+	MobileCarriers *MobileCarriersService
+
+	OperatingSystemVersions *OperatingSystemVersionsService
+
+	OperatingSystems *OperatingSystemsService
+
+	OrderDocuments *OrderDocumentsService
+
+	Orders *OrdersService
+
+	PlacementGroups *PlacementGroupsService
+
+	PlacementStrategies *PlacementStrategiesService
+
+	Placements *PlacementsService
+
+	PlatformTypes *PlatformTypesService
+
+	PostalCodes *PostalCodesService
+
+	Projects *ProjectsService
+
+	Regions *RegionsService
+
+	RemarketingListShares *RemarketingListSharesService
+
+	RemarketingLists *RemarketingListsService
+
+	Reports *ReportsService
+
+	Sites *SitesService
+
+	Sizes *SizesService
+
+	Subaccounts *SubaccountsService
+
+	TargetableRemarketingLists *TargetableRemarketingListsService
+
+	UserProfiles *UserProfilesService
+
+	UserRolePermissionGroups *UserRolePermissionGroupsService
+
+	UserRolePermissions *UserRolePermissionsService
+
+	UserRoles *UserRolesService
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewAccountActiveAdSummariesService(s *Service) *AccountActiveAdSummariesService {
+	rs := &AccountActiveAdSummariesService{s: s}
+	return rs
+}
+
+type AccountActiveAdSummariesService struct {
+	s *Service
+}
+
+func NewAccountPermissionGroupsService(s *Service) *AccountPermissionGroupsService {
+	rs := &AccountPermissionGroupsService{s: s}
+	return rs
+}
+
+type AccountPermissionGroupsService struct {
+	s *Service
+}
+
+func NewAccountPermissionsService(s *Service) *AccountPermissionsService {
+	rs := &AccountPermissionsService{s: s}
+	return rs
+}
+
+type AccountPermissionsService struct {
+	s *Service
+}
+
+func NewAccountUserProfilesService(s *Service) *AccountUserProfilesService {
+	rs := &AccountUserProfilesService{s: s}
+	return rs
+}
+
+type AccountUserProfilesService struct {
+	s *Service
+}
+
+func NewAccountsService(s *Service) *AccountsService {
+	rs := &AccountsService{s: s}
+	return rs
+}
+
+type AccountsService struct {
+	s *Service
+}
+
+func NewAdsService(s *Service) *AdsService {
+	rs := &AdsService{s: s}
+	return rs
+}
+
+type AdsService struct {
+	s *Service
+}
+
+func NewAdvertiserGroupsService(s *Service) *AdvertiserGroupsService {
+	rs := &AdvertiserGroupsService{s: s}
+	return rs
+}
+
+type AdvertiserGroupsService struct {
+	s *Service
+}
+
+func NewAdvertisersService(s *Service) *AdvertisersService {
+	rs := &AdvertisersService{s: s}
+	return rs
+}
+
+type AdvertisersService struct {
+	s *Service
+}
+
+func NewBrowsersService(s *Service) *BrowsersService {
+	rs := &BrowsersService{s: s}
+	return rs
+}
+
+type BrowsersService struct {
+	s *Service
+}
+
+func NewCampaignCreativeAssociationsService(s *Service) *CampaignCreativeAssociationsService {
+	rs := &CampaignCreativeAssociationsService{s: s}
+	return rs
+}
+
+type CampaignCreativeAssociationsService struct {
+	s *Service
+}
+
+func NewCampaignsService(s *Service) *CampaignsService {
+	rs := &CampaignsService{s: s}
+	return rs
+}
+
+type CampaignsService struct {
+	s *Service
+}
+
+func NewChangeLogsService(s *Service) *ChangeLogsService {
+	rs := &ChangeLogsService{s: s}
+	return rs
+}
+
+type ChangeLogsService struct {
+	s *Service
+}
+
+func NewCitiesService(s *Service) *CitiesService {
+	rs := &CitiesService{s: s}
+	return rs
+}
+
+type CitiesService struct {
+	s *Service
+}
+
+func NewConnectionTypesService(s *Service) *ConnectionTypesService {
+	rs := &ConnectionTypesService{s: s}
+	return rs
+}
+
+type ConnectionTypesService struct {
+	s *Service
+}
+
+func NewContentCategoriesService(s *Service) *ContentCategoriesService {
+	rs := &ContentCategoriesService{s: s}
+	return rs
+}
+
+type ContentCategoriesService struct {
+	s *Service
+}
+
+func NewCountriesService(s *Service) *CountriesService {
+	rs := &CountriesService{s: s}
+	return rs
+}
+
+type CountriesService struct {
+	s *Service
+}
+
+func NewCreativeAssetsService(s *Service) *CreativeAssetsService {
+	rs := &CreativeAssetsService{s: s}
+	return rs
+}
+
+type CreativeAssetsService struct {
+	s *Service
+}
+
+func NewCreativeFieldValuesService(s *Service) *CreativeFieldValuesService {
+	rs := &CreativeFieldValuesService{s: s}
+	return rs
+}
+
+type CreativeFieldValuesService struct {
+	s *Service
+}
+
+func NewCreativeFieldsService(s *Service) *CreativeFieldsService {
+	rs := &CreativeFieldsService{s: s}
+	return rs
+}
+
+type CreativeFieldsService struct {
+	s *Service
+}
+
+func NewCreativeGroupsService(s *Service) *CreativeGroupsService {
+	rs := &CreativeGroupsService{s: s}
+	return rs
+}
+
+type CreativeGroupsService struct {
+	s *Service
+}
+
+func NewCreativesService(s *Service) *CreativesService {
+	rs := &CreativesService{s: s}
+	return rs
+}
+
+type CreativesService struct {
+	s *Service
+}
+
+func NewDimensionValuesService(s *Service) *DimensionValuesService {
+	rs := &DimensionValuesService{s: s}
+	return rs
+}
+
+type DimensionValuesService struct {
+	s *Service
+}
+
+func NewDirectorySiteContactsService(s *Service) *DirectorySiteContactsService {
+	rs := &DirectorySiteContactsService{s: s}
+	return rs
+}
+
+type DirectorySiteContactsService struct {
+	s *Service
+}
+
+func NewDirectorySitesService(s *Service) *DirectorySitesService {
+	rs := &DirectorySitesService{s: s}
+	return rs
+}
+
+type DirectorySitesService struct {
+	s *Service
+}
+
+func NewEventTagsService(s *Service) *EventTagsService {
+	rs := &EventTagsService{s: s}
+	return rs
+}
+
+type EventTagsService struct {
+	s *Service
+}
+
+func NewFilesService(s *Service) *FilesService {
+	rs := &FilesService{s: s}
+	return rs
+}
+
+type FilesService struct {
+	s *Service
+}
+
+func NewFloodlightActivitiesService(s *Service) *FloodlightActivitiesService {
+	rs := &FloodlightActivitiesService{s: s}
+	return rs
+}
+
+type FloodlightActivitiesService struct {
+	s *Service
+}
+
+func NewFloodlightActivityGroupsService(s *Service) *FloodlightActivityGroupsService {
+	rs := &FloodlightActivityGroupsService{s: s}
+	return rs
+}
+
+type FloodlightActivityGroupsService struct {
+	s *Service
+}
+
+func NewFloodlightConfigurationsService(s *Service) *FloodlightConfigurationsService {
+	rs := &FloodlightConfigurationsService{s: s}
+	return rs
+}
+
+type FloodlightConfigurationsService struct {
+	s *Service
+}
+
+func NewInventoryItemsService(s *Service) *InventoryItemsService {
+	rs := &InventoryItemsService{s: s}
+	return rs
+}
+
+type InventoryItemsService struct {
+	s *Service
+}
+
+func NewLandingPagesService(s *Service) *LandingPagesService {
+	rs := &LandingPagesService{s: s}
+	return rs
+}
+
+type LandingPagesService struct {
+	s *Service
+}
+
+func NewMetrosService(s *Service) *MetrosService {
+	rs := &MetrosService{s: s}
+	return rs
+}
+
+type MetrosService struct {
+	s *Service
+}
+
+func NewMobileCarriersService(s *Service) *MobileCarriersService {
+	rs := &MobileCarriersService{s: s}
+	return rs
+}
+
+type MobileCarriersService struct {
+	s *Service
+}
+
+func NewOperatingSystemVersionsService(s *Service) *OperatingSystemVersionsService {
+	rs := &OperatingSystemVersionsService{s: s}
+	return rs
+}
+
+type OperatingSystemVersionsService struct {
+	s *Service
+}
+
+func NewOperatingSystemsService(s *Service) *OperatingSystemsService {
+	rs := &OperatingSystemsService{s: s}
+	return rs
+}
+
+type OperatingSystemsService struct {
+	s *Service
+}
+
+func NewOrderDocumentsService(s *Service) *OrderDocumentsService {
+	rs := &OrderDocumentsService{s: s}
+	return rs
+}
+
+type OrderDocumentsService struct {
+	s *Service
+}
+
+func NewOrdersService(s *Service) *OrdersService {
+	rs := &OrdersService{s: s}
+	return rs
+}
+
+type OrdersService struct {
+	s *Service
+}
+
+func NewPlacementGroupsService(s *Service) *PlacementGroupsService {
+	rs := &PlacementGroupsService{s: s}
+	return rs
+}
+
+type PlacementGroupsService struct {
+	s *Service
+}
+
+func NewPlacementStrategiesService(s *Service) *PlacementStrategiesService {
+	rs := &PlacementStrategiesService{s: s}
+	return rs
+}
+
+type PlacementStrategiesService struct {
+	s *Service
+}
+
+func NewPlacementsService(s *Service) *PlacementsService {
+	rs := &PlacementsService{s: s}
+	return rs
+}
+
+type PlacementsService struct {
+	s *Service
+}
+
+func NewPlatformTypesService(s *Service) *PlatformTypesService {
+	rs := &PlatformTypesService{s: s}
+	return rs
+}
+
+type PlatformTypesService struct {
+	s *Service
+}
+
+func NewPostalCodesService(s *Service) *PostalCodesService {
+	rs := &PostalCodesService{s: s}
+	return rs
+}
+
+type PostalCodesService struct {
+	s *Service
+}
+
+func NewProjectsService(s *Service) *ProjectsService {
+	rs := &ProjectsService{s: s}
+	return rs
+}
+
+type ProjectsService struct {
+	s *Service
+}
+
+func NewRegionsService(s *Service) *RegionsService {
+	rs := &RegionsService{s: s}
+	return rs
+}
+
+type RegionsService struct {
+	s *Service
+}
+
+func NewRemarketingListSharesService(s *Service) *RemarketingListSharesService {
+	rs := &RemarketingListSharesService{s: s}
+	return rs
+}
+
+type RemarketingListSharesService struct {
+	s *Service
+}
+
+func NewRemarketingListsService(s *Service) *RemarketingListsService {
+	rs := &RemarketingListsService{s: s}
+	return rs
+}
+
+type RemarketingListsService struct {
+	s *Service
+}
+
+func NewReportsService(s *Service) *ReportsService {
+	rs := &ReportsService{s: s}
+	rs.CompatibleFields = NewReportsCompatibleFieldsService(s)
+	rs.Files = NewReportsFilesService(s)
+	return rs
+}
+
+type ReportsService struct {
+	s *Service
+
+	CompatibleFields *ReportsCompatibleFieldsService
+
+	Files *ReportsFilesService
+}
+
+func NewReportsCompatibleFieldsService(s *Service) *ReportsCompatibleFieldsService {
+	rs := &ReportsCompatibleFieldsService{s: s}
+	return rs
+}
+
+type ReportsCompatibleFieldsService struct {
+	s *Service
+}
+
+func NewReportsFilesService(s *Service) *ReportsFilesService {
+	rs := &ReportsFilesService{s: s}
+	return rs
+}
+
+type ReportsFilesService struct {
+	s *Service
+}
+
+func NewSitesService(s *Service) *SitesService {
+	rs := &SitesService{s: s}
+	return rs
+}
+
+type SitesService struct {
+	s *Service
+}
+
+func NewSizesService(s *Service) *SizesService {
+	rs := &SizesService{s: s}
+	return rs
+}
+
+type SizesService struct {
+	s *Service
+}
+
+func NewSubaccountsService(s *Service) *SubaccountsService {
+	rs := &SubaccountsService{s: s}
+	return rs
+}
+
+type SubaccountsService struct {
+	s *Service
+}
+
+func NewTargetableRemarketingListsService(s *Service) *TargetableRemarketingListsService {
+	rs := &TargetableRemarketingListsService{s: s}
+	return rs
+}
+
+type TargetableRemarketingListsService struct {
+	s *Service
+}
+
+func NewUserProfilesService(s *Service) *UserProfilesService {
+	rs := &UserProfilesService{s: s}
+	return rs
+}
+
+type UserProfilesService struct {
+	s *Service
+}
+
+func NewUserRolePermissionGroupsService(s *Service) *UserRolePermissionGroupsService {
+	rs := &UserRolePermissionGroupsService{s: s}
+	return rs
+}
+
+type UserRolePermissionGroupsService struct {
+	s *Service
+}
+
+func NewUserRolePermissionsService(s *Service) *UserRolePermissionsService {
+	rs := &UserRolePermissionsService{s: s}
+	return rs
+}
+
+type UserRolePermissionsService struct {
+	s *Service
+}
+
+func NewUserRolesService(s *Service) *UserRolesService {
+	rs := &UserRolesService{s: s}
+	return rs
+}
+
+type UserRolesService struct {
+	s *Service
+}
+
+// Account: Contains properties of a DCM account.
+type Account struct {
+	// AccountPermissionIds: Account permissions assigned to this account.
+	AccountPermissionIds googleapi.Int64s `json:"accountPermissionIds,omitempty"`
+
+	// AccountProfile: Profile for this account. This is a read-only field
+	// that can be left blank.
+	//
+	// Possible values:
+	//   "ACCOUNT_PROFILE_BASIC"
+	//   "ACCOUNT_PROFILE_STANDARD"
+	AccountProfile string `json:"accountProfile,omitempty"`
+
+	// Active: Whether this account is active.
+	Active bool `json:"active,omitempty"`
+
+	// ActiveAdsLimitTier: Maximum number of active ads allowed for this
+	// account.
+	//
+	// Possible values:
+	//   "ACTIVE_ADS_TIER_100K"
+	//   "ACTIVE_ADS_TIER_200K"
+	//   "ACTIVE_ADS_TIER_300K"
+	//   "ACTIVE_ADS_TIER_40K"
+	//   "ACTIVE_ADS_TIER_75K"
+	ActiveAdsLimitTier string `json:"activeAdsLimitTier,omitempty"`
+
+	// ActiveViewOptOut: Whether to serve creatives with Active View tags.
+	// If disabled, viewability data will not be available for any
+	// impressions.
+	ActiveViewOptOut bool `json:"activeViewOptOut,omitempty"`
+
+	// AvailablePermissionIds: User role permissions available to the user
+	// roles of this account.
+	AvailablePermissionIds googleapi.Int64s `json:"availablePermissionIds,omitempty"`
+
+	// ComscoreVceEnabled: Whether campaigns created in this account will be
+	// enabled for comScore vCE by default.
+	ComscoreVceEnabled bool `json:"comscoreVceEnabled,omitempty"`
+
+	// CountryId: ID of the country associated with this account.
+	CountryId int64 `json:"countryId,omitempty,string"`
+
+	// CurrencyId: ID of currency associated with this account. This is a
+	// required field.
+	// Acceptable values are:
+	// - "1" for USD
+	// - "2" for GBP
+	// - "3" for ESP
+	// - "4" for SEK
+	// - "5" for CAD
+	// - "6" for JPY
+	// - "7" for DEM
+	// - "8" for AUD
+	// - "9" for FRF
+	// - "10" for ITL
+	// - "11" for DKK
+	// - "12" for NOK
+	// - "13" for FIM
+	// - "14" for ZAR
+	// - "15" for IEP
+	// - "16" for NLG
+	// - "17" for EUR
+	// - "18" for KRW
+	// - "19" for TWD
+	// - "20" for SGD
+	// - "21" for CNY
+	// - "22" for HKD
+	// - "23" for NZD
+	// - "24" for MYR
+	// - "25" for BRL
+	// - "26" for PTE
+	// - "27" for MXP
+	// - "28" for CLP
+	// - "29" for TRY
+	// - "30" for ARS
+	// - "31" for PEN
+	// - "32" for ILS
+	// - "33" for CHF
+	// - "34" for VEF
+	// - "35" for COP
+	// - "36" for GTQ
+	// - "37" for PLN
+	// - "39" for INR
+	// - "40" for THB
+	// - "41" for IDR
+	// - "42" for CZK
+	// - "43" for RON
+	// - "44" for HUF
+	// - "45" for RUB
+	// - "46" for AED
+	// - "47" for BGN
+	// - "48" for HRK
+	CurrencyId int64 `json:"currencyId,omitempty,string"`
+
+	// DefaultCreativeSizeId: Default placement dimensions for this account.
+	DefaultCreativeSizeId int64 `json:"defaultCreativeSizeId,omitempty,string"`
+
+	// Description: Description of this account.
+	Description string `json:"description,omitempty"`
+
+	// Id: ID of this account. This is a read-only, auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#account".
+	Kind string `json:"kind,omitempty"`
+
+	// Locale: Locale of this account.
+	// Acceptable values are:
+	// - "cs" (Czech)
+	// - "de" (German)
+	// - "en" (English)
+	// - "en-GB" (English United Kingdom)
+	// - "es" (Spanish)
+	// - "fr" (French)
+	// - "it" (Italian)
+	// - "ja" (Japanese)
+	// - "ko" (Korean)
+	// - "pl" (Polish)
+	// - "pt-BR" (Portuguese Brazil)
+	// - "ru" (Russian)
+	// - "sv" (Swedish)
+	// - "tr" (Turkish)
+	// - "zh-CN" (Chinese Simplified)
+	// - "zh-TW" (Chinese Traditional)
+	Locale string `json:"locale,omitempty"`
+
+	// MaximumImageSize: Maximum image size allowed for this account.
+	MaximumImageSize int64 `json:"maximumImageSize,omitempty,string"`
+
+	// Name: Name of this account. This is a required field, and must be
+	// less than 128 characters long and be globally unique.
+	Name string `json:"name,omitempty"`
+
+	// NielsenOcrEnabled: Whether campaigns created in this account will be
+	// enabled for Nielsen OCR reach ratings by default.
+	NielsenOcrEnabled bool `json:"nielsenOcrEnabled,omitempty"`
+
+	// ReportsConfiguration: Reporting configuration of this account.
+	ReportsConfiguration *ReportsConfiguration `json:"reportsConfiguration,omitempty"`
+
+	// TeaserSizeLimit: File size limit in kilobytes of Rich Media teaser
+	// creatives. Must be between 1 and 10240.
+	TeaserSizeLimit int64 `json:"teaserSizeLimit,omitempty,string"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "AccountPermissionIds") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Account) MarshalJSON() ([]byte, error) {
+	type noMethod Account
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AccountActiveAdSummary: Gets a summary of active ads in an account.
+type AccountActiveAdSummary struct {
+	// AccountId: ID of the account.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// ActiveAds: Ads that have been activated for the account
+	ActiveAds int64 `json:"activeAds,omitempty,string"`
+
+	// ActiveAdsLimitTier: Maximum number of active ads allowed for the
+	// account.
+	//
+	// Possible values:
+	//   "ACTIVE_ADS_TIER_100K"
+	//   "ACTIVE_ADS_TIER_200K"
+	//   "ACTIVE_ADS_TIER_300K"
+	//   "ACTIVE_ADS_TIER_40K"
+	//   "ACTIVE_ADS_TIER_75K"
+	ActiveAdsLimitTier string `json:"activeAdsLimitTier,omitempty"`
+
+	// AvailableAds: Ads that can be activated for the account.
+	AvailableAds int64 `json:"availableAds,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#accountActiveAdSummary".
+	Kind string `json:"kind,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AccountActiveAdSummary) MarshalJSON() ([]byte, error) {
+	type noMethod AccountActiveAdSummary
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AccountPermission: AccountPermissions contains information about a
+// particular account permission. Some features of DCM require an
+// account permission to be present in the account.
+type AccountPermission struct {
+	// AccountProfiles: Account profiles associated with this account
+	// permission.
+	//
+	// Possible values are:
+	// - "ACCOUNT_PROFILE_BASIC"
+	// - "ACCOUNT_PROFILE_STANDARD"
+	//
+	// Possible values:
+	//   "ACCOUNT_PROFILE_BASIC"
+	//   "ACCOUNT_PROFILE_STANDARD"
+	AccountProfiles []string `json:"accountProfiles,omitempty"`
+
+	// Id: ID of this account permission.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#accountPermission".
+	Kind string `json:"kind,omitempty"`
+
+	// Level: Administrative level required to enable this account
+	// permission.
+	//
+	// Possible values:
+	//   "ADMINISTRATOR"
+	//   "USER"
+	Level string `json:"level,omitempty"`
+
+	// Name: Name of this account permission.
+	Name string `json:"name,omitempty"`
+
+	// PermissionGroupId: Permission group of this account permission.
+	PermissionGroupId int64 `json:"permissionGroupId,omitempty,string"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountProfiles") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AccountPermission) MarshalJSON() ([]byte, error) {
+	type noMethod AccountPermission
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AccountPermissionGroup: AccountPermissionGroups contains a mapping of
+// permission group IDs to names. A permission group is a grouping of
+// account permissions.
+type AccountPermissionGroup struct {
+	// Id: ID of this account permission group.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#accountPermissionGroup".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this account permission group.
+	Name string `json:"name,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AccountPermissionGroup) MarshalJSON() ([]byte, error) {
+	type noMethod AccountPermissionGroup
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AccountPermissionGroupsListResponse: Account Permission Group List
+// Response
+type AccountPermissionGroupsListResponse struct {
+	// AccountPermissionGroups: Account permission group collection.
+	AccountPermissionGroups []*AccountPermissionGroup `json:"accountPermissionGroups,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#accountPermissionGroupsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "AccountPermissionGroups") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AccountPermissionGroupsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod AccountPermissionGroupsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AccountPermissionsListResponse: Account Permission List Response
+type AccountPermissionsListResponse struct {
+	// AccountPermissions: Account permission collection.
+	AccountPermissions []*AccountPermission `json:"accountPermissions,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#accountPermissionsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountPermissions")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AccountPermissionsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod AccountPermissionsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AccountUserProfile: AccountUserProfiles contains properties of a DCM
+// user profile. This resource is specifically for managing user
+// profiles, whereas UserProfiles is for accessing the API.
+type AccountUserProfile struct {
+	// AccountId: Account ID of the user profile. This is a read-only field
+	// that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// Active: Whether this user profile is active. This defaults to false,
+	// and must be set true on insert for the user profile to be usable.
+	Active bool `json:"active,omitempty"`
+
+	// AdvertiserFilter: Filter that describes which advertisers are visible
+	// to the user profile.
+	AdvertiserFilter *ObjectFilter `json:"advertiserFilter,omitempty"`
+
+	// CampaignFilter: Filter that describes which campaigns are visible to
+	// the user profile.
+	CampaignFilter *ObjectFilter `json:"campaignFilter,omitempty"`
+
+	// Comments: Comments for this user profile.
+	Comments string `json:"comments,omitempty"`
+
+	// Email: Email of the user profile. The email addresss must be linked
+	// to a Google Account. This field is required on insertion and is
+	// read-only after insertion.
+	Email string `json:"email,omitempty"`
+
+	// Id: ID of the user profile. This is a read-only, auto-generated
+	// field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#accountUserProfile".
+	Kind string `json:"kind,omitempty"`
+
+	// Locale: Locale of the user profile. This is a required
+	// field.
+	// Acceptable values are:
+	// - "cs" (Czech)
+	// - "de" (German)
+	// - "en" (English)
+	// - "en-GB" (English United Kingdom)
+	// - "es" (Spanish)
+	// - "fr" (French)
+	// - "it" (Italian)
+	// - "ja" (Japanese)
+	// - "ko" (Korean)
+	// - "pl" (Polish)
+	// - "pt-BR" (Portuguese Brazil)
+	// - "ru" (Russian)
+	// - "sv" (Swedish)
+	// - "tr" (Turkish)
+	// - "zh-CN" (Chinese Simplified)
+	// - "zh-TW" (Chinese Traditional)
+	Locale string `json:"locale,omitempty"`
+
+	// Name: Name of the user profile. This is a required field. Must be
+	// less than 64 characters long, must be globally unique, and cannot
+	// contain whitespace or any of the following characters: "&;"#%,".
+	Name string `json:"name,omitempty"`
+
+	// SiteFilter: Filter that describes which sites are visible to the user
+	// profile.
+	SiteFilter *ObjectFilter `json:"siteFilter,omitempty"`
+
+	// SubaccountId: Subaccount ID of the user profile. This is a read-only
+	// field that can be left blank.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// TraffickerType: Trafficker type of this user profile.
+	//
+	// Possible values:
+	//   "EXTERNAL_TRAFFICKER"
+	//   "INTERNAL_NON_TRAFFICKER"
+	//   "INTERNAL_TRAFFICKER"
+	TraffickerType string `json:"traffickerType,omitempty"`
+
+	// UserAccessType: User type of the user profile. This is a read-only
+	// field that can be left blank.
+	//
+	// Possible values:
+	//   "INTERNAL_ADMINISTRATOR"
+	//   "NORMAL_USER"
+	//   "SUPER_USER"
+	UserAccessType string `json:"userAccessType,omitempty"`
+
+	// UserRoleFilter: Filter that describes which user roles are visible to
+	// the user profile.
+	UserRoleFilter *ObjectFilter `json:"userRoleFilter,omitempty"`
+
+	// UserRoleId: User role ID of the user profile. This is a required
+	// field.
+	UserRoleId int64 `json:"userRoleId,omitempty,string"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AccountUserProfile) MarshalJSON() ([]byte, error) {
+	type noMethod AccountUserProfile
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AccountUserProfilesListResponse: Account User Profile List Response
+type AccountUserProfilesListResponse struct {
+	// AccountUserProfiles: Account user profile collection.
+	AccountUserProfiles []*AccountUserProfile `json:"accountUserProfiles,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#accountUserProfilesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountUserProfiles")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AccountUserProfilesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod AccountUserProfilesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AccountsListResponse: Account List Response
+type AccountsListResponse struct {
+	// Accounts: Account collection.
+	Accounts []*Account `json:"accounts,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#accountsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Accounts") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AccountsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod AccountsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Activities: Represents an activity group.
+type Activities struct {
+	// Filters: List of activity filters. The dimension values need to be
+	// all either of type "dfa:activity" or "dfa:activityGroup".
+	Filters []*DimensionValue `json:"filters,omitempty"`
+
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#activities.
+	Kind string `json:"kind,omitempty"`
+
+	// MetricNames: List of names of floodlight activity metrics.
+	MetricNames []string `json:"metricNames,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Filters") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Activities) MarshalJSON() ([]byte, error) {
+	type noMethod Activities
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Ad: Contains properties of a DCM ad.
+type Ad struct {
+	// AccountId: Account ID of this ad. This is a read-only field that can
+	// be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// Active: Whether this ad is active.
+	Active bool `json:"active,omitempty"`
+
+	// AdvertiserId: Advertiser ID of this ad. This is a required field on
+	// insertion.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AdvertiserIdDimensionValue: Dimension value for the ID of the
+	// advertiser. This is a read-only, auto-generated field.
+	AdvertiserIdDimensionValue *DimensionValue `json:"advertiserIdDimensionValue,omitempty"`
+
+	// Archived: Whether this ad is archived.
+	Archived bool `json:"archived,omitempty"`
+
+	// AudienceSegmentId: Audience segment ID that is being targeted for
+	// this ad. Applicable when type is AD_SERVING_STANDARD_AD.
+	AudienceSegmentId int64 `json:"audienceSegmentId,omitempty,string"`
+
+	// CampaignId: Campaign ID of this ad. This is a required field on
+	// insertion.
+	CampaignId int64 `json:"campaignId,omitempty,string"`
+
+	// CampaignIdDimensionValue: Dimension value for the ID of the campaign.
+	// This is a read-only, auto-generated field.
+	CampaignIdDimensionValue *DimensionValue `json:"campaignIdDimensionValue,omitempty"`
+
+	// ClickThroughUrl: Click-through URL for this ad. This is a required
+	// field on insertion. Applicable when type is AD_SERVING_CLICK_TRACKER.
+	ClickThroughUrl *ClickThroughUrl `json:"clickThroughUrl,omitempty"`
+
+	// ClickThroughUrlSuffixProperties: Click-through URL suffix properties
+	// for this ad. Applies to the URL in the ad or (if overriding ad
+	// properties) the URL in the creative.
+	ClickThroughUrlSuffixProperties *ClickThroughUrlSuffixProperties `json:"clickThroughUrlSuffixProperties,omitempty"`
+
+	// Comments: Comments for this ad.
+	Comments string `json:"comments,omitempty"`
+
+	// Compatibility: Compatibility of this ad. Applicable when type is
+	// AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to
+	// either rendering on desktop or on mobile devices or in mobile apps
+	// for regular or interstitial ads, respectively. APP and
+	// APP_INTERSTITIAL are only used for existing default ads. New mobile
+	// placements must be assigned DISPLAY or  DISPLAY_INTERSTITIAL and
+	// default ads created for those placements will be limited to those
+	// compatibility types. IN_STREAM_VIDEO refers to rendering in-stream
+	// video ads developed with the VAST standard.
+	//
+	// Possible values:
+	//   "APP"
+	//   "APP_INTERSTITIAL"
+	//   "DISPLAY"
+	//   "DISPLAY_INTERSTITIAL"
+	//   "IN_STREAM_VIDEO"
+	Compatibility string `json:"compatibility,omitempty"`
+
+	// CreateInfo: Information about the creation of this ad.This is a
+	// read-only field.
+	CreateInfo *LastModifiedInfo `json:"createInfo,omitempty"`
+
+	// CreativeGroupAssignments: Creative group assignments for this ad.
+	// Applicable when type is AD_SERVING_CLICK_TRACKER. Only one assignment
+	// per creative group number is allowed for a maximum of two
+	// assignments.
+	CreativeGroupAssignments []*CreativeGroupAssignment `json:"creativeGroupAssignments,omitempty"`
+
+	// CreativeRotation: Creative rotation for this ad. Applicable when type
+	// is AD_SERVING_DEFAULT_AD, AD_SERVING_STANDARD_AD, or
+	// AD_SERVING_TRACKING. When type is AD_SERVING_DEFAULT_AD, this field
+	// should have exactly one creativeAssignment.
+	CreativeRotation *CreativeRotation `json:"creativeRotation,omitempty"`
+
+	// DayPartTargeting: Time and day targeting information for this ad.
+	// Applicable when type is AD_SERVING_STANDARD_AD.
+	DayPartTargeting *DayPartTargeting `json:"dayPartTargeting,omitempty"`
+
+	// DefaultClickThroughEventTagProperties: Default click-through event
+	// tag properties for this ad.
+	DefaultClickThroughEventTagProperties *DefaultClickThroughEventTagProperties `json:"defaultClickThroughEventTagProperties,omitempty"`
+
+	// DeliverySchedule: Delivery schedule information for this ad.
+	// Applicable when type is AD_SERVING_STANDARD_AD or
+	// AD_SERVING_TRACKING. This field along with subfields priority and
+	// impressionRatio are required on insertion when type is
+	// AD_SERVING_STANDARD_AD.
+	DeliverySchedule *DeliverySchedule `json:"deliverySchedule,omitempty"`
+
+	// DynamicClickTracker: Whether this ad is a dynamic click tracker.
+	// Applicable when type is AD_SERVING_CLICK_TRACKER. This is a required
+	// field on insert, and is read-only after insert.
+	DynamicClickTracker bool `json:"dynamicClickTracker,omitempty"`
+
+	// EndTime: Date and time that this ad should stop serving. Must be
+	// later than the start time. This is a required field on insertion.
+	EndTime string `json:"endTime,omitempty"`
+
+	// EventTagOverrides: Event tag overrides for this ad.
+	EventTagOverrides []*EventTagOverride `json:"eventTagOverrides,omitempty"`
+
+	// GeoTargeting: Geographical targeting information for this
+	// ad.Applicable when type is AD_SERVING_STANDARD_AD.
+	GeoTargeting *GeoTargeting `json:"geoTargeting,omitempty"`
+
+	// Id: ID of this ad. This is a read-only, auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// IdDimensionValue: Dimension value for the ID of this ad. This is a
+	// read-only, auto-generated field.
+	IdDimensionValue *DimensionValue `json:"idDimensionValue,omitempty"`
+
+	// KeyValueTargetingExpression: Key-value targeting information for this
+	// ad. Applicable when type is AD_SERVING_STANDARD_AD.
+	KeyValueTargetingExpression *KeyValueTargetingExpression `json:"keyValueTargetingExpression,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#ad".
+	Kind string `json:"kind,omitempty"`
+
+	// LastModifiedInfo: Information about the most recent modification of
+	// this ad. This is a read-only field.
+	LastModifiedInfo *LastModifiedInfo `json:"lastModifiedInfo,omitempty"`
+
+	// Name: Name of this ad. This is a required field and must be less than
+	// 256 characters long.
+	Name string `json:"name,omitempty"`
+
+	// PlacementAssignments: Placement assignments for this ad.
+	PlacementAssignments []*PlacementAssignment `json:"placementAssignments,omitempty"`
+
+	// RemarketingListExpression: Applicable when type is
+	// AD_SERVING_STANDARD_AD. Remarketing list targeting expression for
+	// this ad.
+	RemarketingListExpression *ListTargetingExpression `json:"remarketingListExpression,omitempty"`
+
+	// Size: Size of this ad. Applicable when type is AD_SERVING_DEFAULT_AD.
+	Size *Size `json:"size,omitempty"`
+
+	// SslCompliant: Whether this ad is ssl compliant. This is a read-only
+	// field that is auto-generated when the ad is inserted or updated.
+	SslCompliant bool `json:"sslCompliant,omitempty"`
+
+	// SslRequired: Whether this ad requires ssl. This is a read-only field
+	// that is auto-generated when the ad is inserted or updated.
+	SslRequired bool `json:"sslRequired,omitempty"`
+
+	// StartTime: Date and time that this ad should start serving. If
+	// creating an ad, this field must be a time in the future. This is a
+	// required field on insertion.
+	StartTime string `json:"startTime,omitempty"`
+
+	// SubaccountId: Subaccount ID of this ad. This is a read-only field
+	// that can be left blank.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// TechnologyTargeting: Technology platform targeting information for
+	// this ad. Applicable when type is AD_SERVING_STANDARD_AD.
+	TechnologyTargeting *TechnologyTargeting `json:"technologyTargeting,omitempty"`
+
+	// Type: Type of ad. This is a required field on insertion. Note that
+	// default ads (AD_SERVING_DEFAULT_AD) cannot be created directly (see
+	// Creative resource).
+	//
+	// Possible values:
+	//   "AD_SERVING_CLICK_TRACKER"
+	//   "AD_SERVING_DEFAULT_AD"
+	//   "AD_SERVING_STANDARD_AD"
+	//   "AD_SERVING_TRACKING"
+	Type string `json:"type,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Ad) MarshalJSON() ([]byte, error) {
+	type noMethod Ad
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AdSlot: Ad Slot
+type AdSlot struct {
+	// Comment: Comment for this ad slot.
+	Comment string `json:"comment,omitempty"`
+
+	// Compatibility: Ad slot compatibility. DISPLAY and
+	// DISPLAY_INTERSTITIAL refer to rendering either on desktop, mobile
+	// devices or in mobile apps for regular or interstitial ads
+	// respectively. APP and APP_INTERSTITIAL are for rendering in mobile
+	// apps. IN_STREAM_VIDEO refers to rendering in in-stream video ads
+	// developed with the VAST standard.
+	//
+	// Possible values:
+	//   "APP"
+	//   "APP_INTERSTITIAL"
+	//   "DISPLAY"
+	//   "DISPLAY_INTERSTITIAL"
+	//   "IN_STREAM_VIDEO"
+	Compatibility string `json:"compatibility,omitempty"`
+
+	// Height: Height of this ad slot.
+	Height int64 `json:"height,omitempty,string"`
+
+	// LinkedPlacementId: ID of the placement from an external platform that
+	// is linked to this ad slot.
+	LinkedPlacementId int64 `json:"linkedPlacementId,omitempty,string"`
+
+	// Name: Name of this ad slot.
+	Name string `json:"name,omitempty"`
+
+	// PaymentSourceType: Payment source type of this ad slot.
+	//
+	// Possible values:
+	//   "PLANNING_PAYMENT_SOURCE_TYPE_AGENCY_PAID"
+	//   "PLANNING_PAYMENT_SOURCE_TYPE_PUBLISHER_PAID"
+	PaymentSourceType string `json:"paymentSourceType,omitempty"`
+
+	// Primary: Primary ad slot of a roadblock inventory item.
+	Primary bool `json:"primary,omitempty"`
+
+	// Width: Width of this ad slot.
+	Width int64 `json:"width,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Comment") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AdSlot) MarshalJSON() ([]byte, error) {
+	type noMethod AdSlot
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AdsListResponse: Ad List Response
+type AdsListResponse struct {
+	// Ads: Ad collection.
+	Ads []*Ad `json:"ads,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#adsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Ads") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AdsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod AdsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Advertiser: Contains properties of a DCM advertiser.
+type Advertiser struct {
+	// AccountId: Account ID of this advertiser.This is a read-only field
+	// that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AdvertiserGroupId: ID of the advertiser group this advertiser belongs
+	// to. You can group advertisers for reporting purposes, allowing you to
+	// see aggregated information for all advertisers in each group.
+	AdvertiserGroupId int64 `json:"advertiserGroupId,omitempty,string"`
+
+	// ClickThroughUrlSuffix: Suffix added to click-through URL of ad
+	// creative associations under this advertiser. Must be less than 129
+	// characters long.
+	ClickThroughUrlSuffix string `json:"clickThroughUrlSuffix,omitempty"`
+
+	// DefaultClickThroughEventTagId: ID of the click-through event tag to
+	// apply by default to the landing pages of this advertiser's campaigns.
+	DefaultClickThroughEventTagId int64 `json:"defaultClickThroughEventTagId,omitempty,string"`
+
+	// DefaultEmail: Default email address used in sender field for tag
+	// emails.
+	DefaultEmail string `json:"defaultEmail,omitempty"`
+
+	// FloodlightConfigurationId: Floodlight configuration ID of this
+	// advertiser. The floodlight configuration ID will be created
+	// automatically, so on insert this field should be left blank. This
+	// field can be set to another advertiser's floodlight configuration ID
+	// in order to share that advertiser's floodlight configuration with
+	// this advertiser, so long as:
+	// - This advertiser's original floodlight configuration is not already
+	// associated with floodlight activities or floodlight activity groups.
+	//
+	// - This advertiser's original floodlight configuration is not already
+	// shared with another advertiser.
+	FloodlightConfigurationId int64 `json:"floodlightConfigurationId,omitempty,string"`
+
+	// FloodlightConfigurationIdDimensionValue: Dimension value for the ID
+	// of the floodlight configuration. This is a read-only, auto-generated
+	// field.
+	FloodlightConfigurationIdDimensionValue *DimensionValue `json:"floodlightConfigurationIdDimensionValue,omitempty"`
+
+	// Id: ID of this advertiser. This is a read-only, auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// IdDimensionValue: Dimension value for the ID of this advertiser. This
+	// is a read-only, auto-generated field.
+	IdDimensionValue *DimensionValue `json:"idDimensionValue,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#advertiser".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this advertiser. This is a required field and must be
+	// less than 256 characters long and unique among advertisers of the
+	// same account.
+	Name string `json:"name,omitempty"`
+
+	// OriginalFloodlightConfigurationId: Original floodlight configuration
+	// before any sharing occurred. Set the floodlightConfigurationId of
+	// this advertiser to originalFloodlightConfigurationId to unshare the
+	// advertiser's current floodlight configuration. You cannot unshare an
+	// advertiser's floodlight configuration if the shared configuration has
+	// activities associated with any campaign or placement.
+	OriginalFloodlightConfigurationId int64 `json:"originalFloodlightConfigurationId,omitempty,string"`
+
+	// Status: Status of this advertiser.
+	//
+	// Possible values:
+	//   "APPROVED"
+	//   "ON_HOLD"
+	Status string `json:"status,omitempty"`
+
+	// SubaccountId: Subaccount ID of this advertiser.This is a read-only
+	// field that can be left blank.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// Suspended: Suspension status of this advertiser.
+	Suspended bool `json:"suspended,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Advertiser) MarshalJSON() ([]byte, error) {
+	type noMethod Advertiser
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AdvertiserGroup: Groups advertisers together so that reports can be
+// generated for the entire group at once.
+type AdvertiserGroup struct {
+	// AccountId: Account ID of this advertiser group. This is a read-only
+	// field that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// Id: ID of this advertiser group. This is a read-only, auto-generated
+	// field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#advertiserGroup".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this advertiser group. This is a required field and
+	// must be less than 256 characters long and unique among advertiser
+	// groups of the same account.
+	Name string `json:"name,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AdvertiserGroup) MarshalJSON() ([]byte, error) {
+	type noMethod AdvertiserGroup
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AdvertiserGroupsListResponse: Advertiser Group List Response
+type AdvertiserGroupsListResponse struct {
+	// AdvertiserGroups: Advertiser group collection.
+	AdvertiserGroups []*AdvertiserGroup `json:"advertiserGroups,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#advertiserGroupsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AdvertiserGroups") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AdvertiserGroupsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod AdvertiserGroupsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AdvertisersListResponse: Advertiser List Response
+type AdvertisersListResponse struct {
+	// Advertisers: Advertiser collection.
+	Advertisers []*Advertiser `json:"advertisers,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#advertisersListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Advertisers") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AdvertisersListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod AdvertisersListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AudienceSegment: Audience Segment.
+type AudienceSegment struct {
+	// Allocation: Weight allocated to this segment. Must be between 1 and
+	// 1000. The weight assigned will be understood in proportion to the
+	// weights assigned to other segments in the same segment group.
+	Allocation int64 `json:"allocation,omitempty"`
+
+	// Id: ID of this audience segment. This is a read-only, auto-generated
+	// field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Name: Name of this audience segment. This is a required field and
+	// must be less than 65 characters long.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Allocation") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AudienceSegment) MarshalJSON() ([]byte, error) {
+	type noMethod AudienceSegment
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AudienceSegmentGroup: Audience Segment Group.
+type AudienceSegmentGroup struct {
+	// AudienceSegments: Audience segments assigned to this group. The
+	// number of segments must be between 2 and 100.
+	AudienceSegments []*AudienceSegment `json:"audienceSegments,omitempty"`
+
+	// Id: ID of this audience segment group. This is a read-only,
+	// auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Name: Name of this audience segment group. This is a required field
+	// and must be less than 65 characters long.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AudienceSegments") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AudienceSegmentGroup) MarshalJSON() ([]byte, error) {
+	type noMethod AudienceSegmentGroup
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Browser: Contains information about a browser that can be targeted by
+// ads.
+type Browser struct {
+	// BrowserVersionId: ID referring to this grouping of browser and
+	// version numbers. This is the ID used for targeting.
+	BrowserVersionId int64 `json:"browserVersionId,omitempty,string"`
+
+	// DartId: DART ID of this browser. This is the ID used when generating
+	// reports.
+	DartId int64 `json:"dartId,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#browser".
+	Kind string `json:"kind,omitempty"`
+
+	// MajorVersion: Major version number (leftmost number) of this browser.
+	// For example, for Chrome 5.0.376.86 beta, this field should be set to
+	// 5. An asterisk (*) may be used to target any version number, and a
+	// question mark (?) may be used to target cases where the version
+	// number cannot be identified. For example, Chrome *.* targets any
+	// version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets
+	// Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad
+	// server knows the browser is Firefox but can't tell which version it
+	// is.
+	MajorVersion string `json:"majorVersion,omitempty"`
+
+	// MinorVersion: Minor version number (number after first dot on left)
+	// of this browser. For example, for Chrome 5.0.375.86 beta, this field
+	// should be set to 0. An asterisk (*) may be used to target any version
+	// number, and a question mark (?) may be used to target cases where the
+	// version number cannot be identified. For example, Chrome *.* targets
+	// any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets
+	// Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad
+	// server knows the browser is Firefox but can't tell which version it
+	// is.
+	MinorVersion string `json:"minorVersion,omitempty"`
+
+	// Name: Name of this browser.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BrowserVersionId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Browser) MarshalJSON() ([]byte, error) {
+	type noMethod Browser
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// BrowsersListResponse: Browser List Response
+type BrowsersListResponse struct {
+	// Browsers: Browser collection.
+	Browsers []*Browser `json:"browsers,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#browsersListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Browsers") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *BrowsersListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod BrowsersListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Campaign: Contains properties of a DCM campaign.
+type Campaign struct {
+	// AccountId: Account ID of this campaign. This is a read-only field
+	// that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AdditionalCreativeOptimizationConfigurations: Additional creative
+	// optimization configurations for the campaign.
+	AdditionalCreativeOptimizationConfigurations []*CreativeOptimizationConfiguration `json:"additionalCreativeOptimizationConfigurations,omitempty"`
+
+	// AdvertiserGroupId: Advertiser group ID of the associated advertiser.
+	AdvertiserGroupId int64 `json:"advertiserGroupId,omitempty,string"`
+
+	// AdvertiserId: Advertiser ID of this campaign. This is a required
+	// field.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AdvertiserIdDimensionValue: Dimension value for the advertiser ID of
+	// this campaign. This is a read-only, auto-generated field.
+	AdvertiserIdDimensionValue *DimensionValue `json:"advertiserIdDimensionValue,omitempty"`
+
+	// Archived: Whether this campaign has been archived.
+	Archived bool `json:"archived,omitempty"`
+
+	// AudienceSegmentGroups: Audience segment groups assigned to this
+	// campaign. Cannot have more than 300 segment groups.
+	AudienceSegmentGroups []*AudienceSegmentGroup `json:"audienceSegmentGroups,omitempty"`
+
+	// BillingInvoiceCode: Billing invoice code included in the DCM client
+	// billing invoices associated with the campaign.
+	BillingInvoiceCode string `json:"billingInvoiceCode,omitempty"`
+
+	// ClickThroughUrlSuffixProperties: Click-through URL suffix override
+	// properties for this campaign.
+	ClickThroughUrlSuffixProperties *ClickThroughUrlSuffixProperties `json:"clickThroughUrlSuffixProperties,omitempty"`
+
+	// Comment: Arbitrary comments about this campaign. Must be less than
+	// 256 characters long.
+	Comment string `json:"comment,omitempty"`
+
+	// ComscoreVceEnabled: Whether comScore vCE reports are enabled for this
+	// campaign.
+	ComscoreVceEnabled bool `json:"comscoreVceEnabled,omitempty"`
+
+	// CreateInfo: Information about the creation of this campaign. This is
+	// a read-only field.
+	CreateInfo *LastModifiedInfo `json:"createInfo,omitempty"`
+
+	// CreativeGroupIds: List of creative group IDs that are assigned to the
+	// campaign.
+	CreativeGroupIds googleapi.Int64s `json:"creativeGroupIds,omitempty"`
+
+	// CreativeOptimizationConfiguration: Creative optimization
+	// configuration for the campaign.
+	CreativeOptimizationConfiguration *CreativeOptimizationConfiguration `json:"creativeOptimizationConfiguration,omitempty"`
+
+	// DefaultClickThroughEventTagProperties: Click-through event tag ID
+	// override properties for this campaign.
+	DefaultClickThroughEventTagProperties *DefaultClickThroughEventTagProperties `json:"defaultClickThroughEventTagProperties,omitempty"`
+
+	// EndDate: Date on which the campaign will stop running. On insert, the
+	// end date must be today or a future date. The end date must be later
+	// than or be the same as the start date. If, for example, you set
+	// 6/25/2015 as both the start and end dates, the effective campaign run
+	// date is just that day only, 6/25/2015. The hours, minutes, and
+	// seconds of the end date should not be set, as doing so will result in
+	// an error. This is a required field.
+	EndDate string `json:"endDate,omitempty"`
+
+	// EventTagOverrides: Overrides that can be used to activate or
+	// deactivate advertiser event tags.
+	EventTagOverrides []*EventTagOverride `json:"eventTagOverrides,omitempty"`
+
+	// ExternalId: External ID for this campaign.
+	ExternalId string `json:"externalId,omitempty"`
+
+	// Id: ID of this campaign. This is a read-only auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// IdDimensionValue: Dimension value for the ID of this campaign. This
+	// is a read-only, auto-generated field.
+	IdDimensionValue *DimensionValue `json:"idDimensionValue,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#campaign".
+	Kind string `json:"kind,omitempty"`
+
+	// LastModifiedInfo: Information about the most recent modification of
+	// this campaign. This is a read-only field.
+	LastModifiedInfo *LastModifiedInfo `json:"lastModifiedInfo,omitempty"`
+
+	// LookbackConfiguration: Lookback window settings for the campaign.
+	LookbackConfiguration *LookbackConfiguration `json:"lookbackConfiguration,omitempty"`
+
+	// Name: Name of this campaign. This is a required field and must be
+	// less than 256 characters long and unique among campaigns of the same
+	// advertiser.
+	Name string `json:"name,omitempty"`
+
+	// NielsenOcrEnabled: Whether Nielsen reports are enabled for this
+	// campaign.
+	NielsenOcrEnabled bool `json:"nielsenOcrEnabled,omitempty"`
+
+	// StartDate: Date on which the campaign starts running. The start date
+	// can be any date. The hours, minutes, and seconds of the start date
+	// should not be set, as doing so will result in an error. This is a
+	// required field.
+	StartDate string `json:"startDate,omitempty"`
+
+	// SubaccountId: Subaccount ID of this campaign. This is a read-only
+	// field that can be left blank.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// TraffickerEmails: Campaign trafficker contact emails.
+	TraffickerEmails []string `json:"traffickerEmails,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Campaign) MarshalJSON() ([]byte, error) {
+	type noMethod Campaign
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CampaignCreativeAssociation: Identifies a creative which has been
+// associated with a given campaign.
+type CampaignCreativeAssociation struct {
+	// CreativeId: ID of the creative associated with the campaign. This is
+	// a required field.
+	CreativeId int64 `json:"creativeId,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#campaignCreativeAssociation".
+	Kind string `json:"kind,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CreativeId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CampaignCreativeAssociation) MarshalJSON() ([]byte, error) {
+	type noMethod CampaignCreativeAssociation
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CampaignCreativeAssociationsListResponse: Campaign Creative
+// Association List Response
+type CampaignCreativeAssociationsListResponse struct {
+	// CampaignCreativeAssociations: Campaign creative association
+	// collection
+	CampaignCreativeAssociations []*CampaignCreativeAssociation `json:"campaignCreativeAssociations,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#campaignCreativeAssociationsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "CampaignCreativeAssociations") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CampaignCreativeAssociationsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod CampaignCreativeAssociationsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CampaignsListResponse: Campaign List Response
+type CampaignsListResponse struct {
+	// Campaigns: Campaign collection.
+	Campaigns []*Campaign `json:"campaigns,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#campaignsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Campaigns") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CampaignsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod CampaignsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ChangeLog: Describes a change that a user has made to a resource.
+type ChangeLog struct {
+	// AccountId: Account ID of the modified object.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// Action: Action which caused the change.
+	Action string `json:"action,omitempty"`
+
+	// ChangeTime: Time when the object was modified.
+	ChangeTime string `json:"changeTime,omitempty"`
+
+	// FieldName: Field name of the object which changed.
+	FieldName string `json:"fieldName,omitempty"`
+
+	// Id: ID of this change log.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#changeLog".
+	Kind string `json:"kind,omitempty"`
+
+	// NewValue: New value of the object field.
+	NewValue string `json:"newValue,omitempty"`
+
+	// ObjectId: ID of the object of this change log. The object could be a
+	// campaign, placement, ad, or other type.
+	ObjectId int64 `json:"objectId,omitempty,string"`
+
+	// ObjectType: Object type of the change log.
+	ObjectType string `json:"objectType,omitempty"`
+
+	// OldValue: Old value of the object field.
+	OldValue string `json:"oldValue,omitempty"`
+
+	// SubaccountId: Subaccount ID of the modified object.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// TransactionId: Transaction ID of this change log. When a single API
+	// call results in many changes, each change will have a separate ID in
+	// the change log but will share the same transactionId.
+	TransactionId int64 `json:"transactionId,omitempty,string"`
+
+	// UserProfileId: ID of the user who modified the object.
+	UserProfileId int64 `json:"userProfileId,omitempty,string"`
+
+	// UserProfileName: User profile name of the user who modified the
+	// object.
+	UserProfileName string `json:"userProfileName,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ChangeLog) MarshalJSON() ([]byte, error) {
+	type noMethod ChangeLog
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ChangeLogsListResponse: Change Log List Response
+type ChangeLogsListResponse struct {
+	// ChangeLogs: Change log collection.
+	ChangeLogs []*ChangeLog `json:"changeLogs,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#changeLogsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "ChangeLogs") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ChangeLogsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod ChangeLogsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CitiesListResponse: City List Response
+type CitiesListResponse struct {
+	// Cities: City collection.
+	Cities []*City `json:"cities,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#citiesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Cities") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CitiesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod CitiesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// City: Contains information about a city that can be targeted by ads.
+type City struct {
+	// CountryCode: Country code of the country to which this city belongs.
+	CountryCode string `json:"countryCode,omitempty"`
+
+	// CountryDartId: DART ID of the country to which this city belongs.
+	CountryDartId int64 `json:"countryDartId,omitempty,string"`
+
+	// DartId: DART ID of this city. This is the ID used for targeting and
+	// generating reports.
+	DartId int64 `json:"dartId,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#city".
+	Kind string `json:"kind,omitempty"`
+
+	// MetroCode: Metro region code of the metro region (DMA) to which this
+	// city belongs.
+	MetroCode string `json:"metroCode,omitempty"`
+
+	// MetroDmaId: ID of the metro region (DMA) to which this city belongs.
+	MetroDmaId int64 `json:"metroDmaId,omitempty,string"`
+
+	// Name: Name of this city.
+	Name string `json:"name,omitempty"`
+
+	// RegionCode: Region code of the region to which this city belongs.
+	RegionCode string `json:"regionCode,omitempty"`
+
+	// RegionDartId: DART ID of the region to which this city belongs.
+	RegionDartId int64 `json:"regionDartId,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "CountryCode") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *City) MarshalJSON() ([]byte, error) {
+	type noMethod City
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ClickTag: Creative Click Tag.
+type ClickTag struct {
+	// EventName: Advertiser event name associated with the click tag. This
+	// field is used by ENHANCED_BANNER, ENHANCED_IMAGE, and HTML5_BANNER
+	// creatives.
+	EventName string `json:"eventName,omitempty"`
+
+	// Name: Parameter name for the specified click tag. For ENHANCED_IMAGE
+	// creative assets, this field must match the value of the creative
+	// asset's creativeAssetId.name field.
+	Name string `json:"name,omitempty"`
+
+	// Value: Parameter value for the specified click tag. This field
+	// contains a click-through url.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "EventName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ClickTag) MarshalJSON() ([]byte, error) {
+	type noMethod ClickTag
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ClickThroughUrl: Click-through URL
+type ClickThroughUrl struct {
+	// ComputedClickThroughUrl: Read-only convenience field representing the
+	// actual URL that will be used for this click-through. The URL is
+	// computed as follows:
+	// - If defaultLandingPage is enabled then the campaign's default
+	// landing page URL is assigned to this field.
+	// - If defaultLandingPage is not enabled and a landingPageId is
+	// specified then that landing page's URL is assigned to this field.
+	// - If neither of the above cases apply, then the customClickThroughUrl
+	// is assigned to this field.
+	ComputedClickThroughUrl string `json:"computedClickThroughUrl,omitempty"`
+
+	// CustomClickThroughUrl: Custom click-through URL. Applicable if the
+	// defaultLandingPage field is set to false and the landingPageId field
+	// is left unset.
+	CustomClickThroughUrl string `json:"customClickThroughUrl,omitempty"`
+
+	// DefaultLandingPage: Whether the campaign default landing page is
+	// used.
+	DefaultLandingPage bool `json:"defaultLandingPage,omitempty"`
+
+	// LandingPageId: ID of the landing page for the click-through URL.
+	// Applicable if the defaultLandingPage field is set to false.
+	LandingPageId int64 `json:"landingPageId,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "ComputedClickThroughUrl") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ClickThroughUrl) MarshalJSON() ([]byte, error) {
+	type noMethod ClickThroughUrl
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ClickThroughUrlSuffixProperties: Click Through URL Suffix settings.
+type ClickThroughUrlSuffixProperties struct {
+	// ClickThroughUrlSuffix: Click-through URL suffix to apply to all ads
+	// in this entity's scope. Must be less than 128 characters long.
+	ClickThroughUrlSuffix string `json:"clickThroughUrlSuffix,omitempty"`
+
+	// OverrideInheritedSuffix: Whether this entity should override the
+	// inherited click-through URL suffix with its own defined value.
+	OverrideInheritedSuffix bool `json:"overrideInheritedSuffix,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "ClickThroughUrlSuffix") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ClickThroughUrlSuffixProperties) MarshalJSON() ([]byte, error) {
+	type noMethod ClickThroughUrlSuffixProperties
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CompanionClickThroughOverride: Companion Click-through override.
+type CompanionClickThroughOverride struct {
+	// ClickThroughUrl: Click-through URL of this companion click-through
+	// override.
+	ClickThroughUrl *ClickThroughUrl `json:"clickThroughUrl,omitempty"`
+
+	// CreativeId: ID of the creative for this companion click-through
+	// override.
+	CreativeId int64 `json:"creativeId,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "ClickThroughUrl") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CompanionClickThroughOverride) MarshalJSON() ([]byte, error) {
+	type noMethod CompanionClickThroughOverride
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CompatibleFields: Represents a response to the queryCompatibleFields
+// method.
+type CompatibleFields struct {
+	// CrossDimensionReachReportCompatibleFields: Contains items that are
+	// compatible to be selected for a report of type
+	// "CROSS_DIMENSION_REACH".
+	CrossDimensionReachReportCompatibleFields *CrossDimensionReachReportCompatibleFields `json:"crossDimensionReachReportCompatibleFields,omitempty"`
+
+	// FloodlightReportCompatibleFields: Contains items that are compatible
+	// to be selected for a report of type "FLOODLIGHT".
+	FloodlightReportCompatibleFields *FloodlightReportCompatibleFields `json:"floodlightReportCompatibleFields,omitempty"`
+
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#compatibleFields.
+	Kind string `json:"kind,omitempty"`
+
+	// PathToConversionReportCompatibleFields: Contains items that are
+	// compatible to be selected for a report of type "PATH_TO_CONVERSION".
+	PathToConversionReportCompatibleFields *PathToConversionReportCompatibleFields `json:"pathToConversionReportCompatibleFields,omitempty"`
+
+	// ReachReportCompatibleFields: Contains items that are compatible to be
+	// selected for a report of type "REACH".
+	ReachReportCompatibleFields *ReachReportCompatibleFields `json:"reachReportCompatibleFields,omitempty"`
+
+	// ReportCompatibleFields: Contains items that are compatible to be
+	// selected for a report of type "STANDARD".
+	ReportCompatibleFields *ReportCompatibleFields `json:"reportCompatibleFields,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "CrossDimensionReachReportCompatibleFields") to unconditionally
+	// include in API requests. By default, fields with empty values are
+	// omitted from API requests. However, any non-pointer, non-interface
+	// field appearing in ForceSendFields will be sent to the server
+	// regardless of whether the field is empty or not. This may be used to
+	// include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CompatibleFields) MarshalJSON() ([]byte, error) {
+	type noMethod CompatibleFields
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ConnectionType: Contains information about an internet connection
+// type that can be targeted by ads. Clients can use the connection type
+// to target mobile vs. broadband users.
+type ConnectionType struct {
+	// Id: ID of this connection type.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#connectionType".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this connection type.
+	Name string `json:"name,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ConnectionType) MarshalJSON() ([]byte, error) {
+	type noMethod ConnectionType
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ConnectionTypesListResponse: Connection Type List Response
+type ConnectionTypesListResponse struct {
+	// ConnectionTypes: Collection of connection types such as broadband and
+	// mobile.
+	ConnectionTypes []*ConnectionType `json:"connectionTypes,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#connectionTypesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "ConnectionTypes") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ConnectionTypesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod ConnectionTypesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ContentCategoriesListResponse: Content Category List Response
+type ContentCategoriesListResponse struct {
+	// ContentCategories: Content category collection.
+	ContentCategories []*ContentCategory `json:"contentCategories,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#contentCategoriesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "ContentCategories")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ContentCategoriesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod ContentCategoriesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ContentCategory: Organizes placements according to the contents of
+// their associated webpages.
+type ContentCategory struct {
+	// AccountId: Account ID of this content category. This is a read-only
+	// field that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// Id: ID of this content category. This is a read-only, auto-generated
+	// field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#contentCategory".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this content category. This is a required field and
+	// must be less than 256 characters long and unique among content
+	// categories of the same account.
+	Name string `json:"name,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ContentCategory) MarshalJSON() ([]byte, error) {
+	type noMethod ContentCategory
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CountriesListResponse: Country List Response
+type CountriesListResponse struct {
+	// Countries: Country collection.
+	Countries []*Country `json:"countries,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#countriesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Countries") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CountriesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod CountriesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Country: Contains information about a country that can be targeted by
+// ads.
+type Country struct {
+	// CountryCode: Country code.
+	CountryCode string `json:"countryCode,omitempty"`
+
+	// DartId: DART ID of this country. This is the ID used for targeting
+	// and generating reports.
+	DartId int64 `json:"dartId,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#country".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this country.
+	Name string `json:"name,omitempty"`
+
+	// SslEnabled: Whether ad serving supports secure servers in this
+	// country.
+	SslEnabled bool `json:"sslEnabled,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CountryCode") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Country) MarshalJSON() ([]byte, error) {
+	type noMethod Country
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Creative: Contains properties of a Creative.
+type Creative struct {
+	// AccountId: Account ID of this creative. This field, if left unset,
+	// will be auto-generated for both insert and update operations.
+	// Applicable to all creative types.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// Active: Whether the creative is active. Applicable to all creative
+	// types.
+	Active bool `json:"active,omitempty"`
+
+	// AdParameters: Ad parameters user for VPAID creative. This is a
+	// read-only field. Applicable to the following creative types: all
+	// VPAID.
+	AdParameters string `json:"adParameters,omitempty"`
+
+	// AdTagKeys: Keywords for a Rich Media creative. Keywords let you
+	// customize the creative settings of a Rich Media ad running on your
+	// site without having to contact the advertiser. You can use keywords
+	// to dynamically change the look or functionality of a creative.
+	// Applicable to the following creative types: all RICH_MEDIA, and all
+	// VPAID.
+	AdTagKeys []string `json:"adTagKeys,omitempty"`
+
+	// AdvertiserId: Advertiser ID of this creative. This is a required
+	// field. Applicable to all creative types.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AllowScriptAccess: Whether script access is allowed for this
+	// creative. This is a read-only and deprecated field which will
+	// automatically be set to true on update. Applicable to the following
+	// creative types: FLASH_INPAGE.
+	AllowScriptAccess bool `json:"allowScriptAccess,omitempty"`
+
+	// Archived: Whether the creative is archived. Applicable to all
+	// creative types.
+	Archived bool `json:"archived,omitempty"`
+
+	// ArtworkType: Type of artwork used for the creative. This is a
+	// read-only field. Applicable to the following creative types: all
+	// RICH_MEDIA, and all VPAID.
+	//
+	// Possible values:
+	//   "ARTWORK_TYPE_FLASH"
+	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
+	//   "ARTWORK_TYPE_MIXED"
+	ArtworkType string `json:"artworkType,omitempty"`
+
+	// AuthoringSource: Source application where creative was authored.
+	// Presently, only DBM authored creatives will have this field set.
+	// Applicable to all creative types.
+	//
+	// Possible values:
+	//   "CREATIVE_AUTHORING_SOURCE_DBM"
+	//   "CREATIVE_AUTHORING_SOURCE_DCM"
+	//   "CREATIVE_AUTHORING_SOURCE_STUDIO"
+	AuthoringSource string `json:"authoringSource,omitempty"`
+
+	// AuthoringTool: Authoring tool for HTML5 banner creatives. This is a
+	// read-only field. Applicable to the following creative types:
+	// HTML5_BANNER.
+	//
+	// Possible values:
+	//   "NINJA"
+	//   "SWIFFY"
+	AuthoringTool string `json:"authoringTool,omitempty"`
+
+	// AutoAdvanceImages: Whether images are automatically advanced for
+	// enhanced image creatives. Applicable to the following creative types:
+	// ENHANCED_IMAGE.
+	AutoAdvanceImages bool `json:"auto_advance_images,omitempty"`
+
+	// BackgroundColor: The 6-character HTML color code, beginning with #,
+	// for the background of the window area where the Flash file is
+	// displayed. Default is white. Applicable to the following creative
+	// types: FLASH_INPAGE.
+	BackgroundColor string `json:"backgroundColor,omitempty"`
+
+	// BackupImageClickThroughUrl: Click-through URL for backup image.
+	// Applicable to the following creative types: ENHANCED_BANNER,
+	// FLASH_INPAGE, and HTML5_BANNER.
+	BackupImageClickThroughUrl string `json:"backupImageClickThroughUrl,omitempty"`
+
+	// BackupImageFeatures: List of feature dependencies that will cause a
+	// backup image to be served if the browser that serves the ad does not
+	// support them. Feature dependencies are features that a browser must
+	// be able to support in order to render your HTML5 creative asset
+	// correctly. This field is initially auto-generated to contain all
+	// features detected by DCM for all the assets of this creative and can
+	// then be modified by the client. To reset this field, copy over all
+	// the creativeAssets' detected features. Applicable to the following
+	// creative types: ENHANCED_BANNER and HTML5_BANNER.
+	//
+	// Possible values:
+	//   "APPLICATION_CACHE"
+	//   "AUDIO"
+	//   "CANVAS"
+	//   "CANVAS_TEXT"
+	//   "CSS_ANIMATIONS"
+	//   "CSS_BACKGROUND_SIZE"
+	//   "CSS_BORDER_IMAGE"
+	//   "CSS_BORDER_RADIUS"
+	//   "CSS_BOX_SHADOW"
+	//   "CSS_COLUMNS"
+	//   "CSS_FLEX_BOX"
+	//   "CSS_FONT_FACE"
+	//   "CSS_GENERATED_CONTENT"
+	//   "CSS_GRADIENTS"
+	//   "CSS_HSLA"
+	//   "CSS_MULTIPLE_BGS"
+	//   "CSS_OPACITY"
+	//   "CSS_REFLECTIONS"
+	//   "CSS_RGBA"
+	//   "CSS_TEXT_SHADOW"
+	//   "CSS_TRANSFORMS"
+	//   "CSS_TRANSFORMS3D"
+	//   "CSS_TRANSITIONS"
+	//   "DRAG_AND_DROP"
+	//   "GEO_LOCATION"
+	//   "HASH_CHANGE"
+	//   "HISTORY"
+	//   "INDEXED_DB"
+	//   "INLINE_SVG"
+	//   "INPUT_ATTR_AUTOCOMPLETE"
+	//   "INPUT_ATTR_AUTOFOCUS"
+	//   "INPUT_ATTR_LIST"
+	//   "INPUT_ATTR_MAX"
+	//   "INPUT_ATTR_MIN"
+	//   "INPUT_ATTR_MULTIPLE"
+	//   "INPUT_ATTR_PATTERN"
+	//   "INPUT_ATTR_PLACEHOLDER"
+	//   "INPUT_ATTR_REQUIRED"
+	//   "INPUT_ATTR_STEP"
+	//   "INPUT_TYPE_COLOR"
+	//   "INPUT_TYPE_DATE"
+	//   "INPUT_TYPE_DATETIME"
+	//   "INPUT_TYPE_DATETIME_LOCAL"
+	//   "INPUT_TYPE_EMAIL"
+	//   "INPUT_TYPE_MONTH"
+	//   "INPUT_TYPE_NUMBER"
+	//   "INPUT_TYPE_RANGE"
+	//   "INPUT_TYPE_SEARCH"
+	//   "INPUT_TYPE_TEL"
+	//   "INPUT_TYPE_TIME"
+	//   "INPUT_TYPE_URL"
+	//   "INPUT_TYPE_WEEK"
+	//   "LOCAL_STORAGE"
+	//   "POST_MESSAGE"
+	//   "SESSION_STORAGE"
+	//   "SMIL"
+	//   "SVG_CLIP_PATHS"
+	//   "SVG_FE_IMAGE"
+	//   "SVG_FILTERS"
+	//   "SVG_HREF"
+	//   "TOUCH"
+	//   "VIDEO"
+	//   "WEBGL"
+	//   "WEB_SOCKETS"
+	//   "WEB_SQL_DATABASE"
+	//   "WEB_WORKERS"
+	BackupImageFeatures []string `json:"backupImageFeatures,omitempty"`
+
+	// BackupImageReportingLabel: Reporting label used for HTML5 banner
+	// backup image. Applicable to the following creative types:
+	// ENHANCED_BANNER.
+	BackupImageReportingLabel string `json:"backupImageReportingLabel,omitempty"`
+
+	// BackupImageTargetWindow: Target window for backup image. Applicable
+	// to the following creative types: ENHANCED_BANNER, FLASH_INPAGE, and
+	// HTML5_BANNER.
+	BackupImageTargetWindow *TargetWindow `json:"backupImageTargetWindow,omitempty"`
+
+	// ClickTags: Click tags of the creative. For ENHANCED_BANNER,
+	// FLASH_INPAGE, and HTML5_BANNER creatives, this is a subset of
+	// detected click tags for the assets associated with this creative.
+	// After creating a flash asset, detected click tags will be returned in
+	// the creativeAssetMetadata. When inserting the creative, populate the
+	// creative clickTags field using the creativeAssetMetadata.clickTags
+	// field. For ENHANCED_IMAGE creatives, there should be exactly one
+	// entry in this list for each image creative asset. A click tag is
+	// matched with a corresponding creative asset by matching the
+	// clickTag.name field with the creativeAsset.assetIdentifier.name
+	// field. Applicable to the following creative types: ENHANCED_BANNER,
+	// ENHANCED_IMAGE, FLASH_INPAGE, HTML5_BANNER.
+	ClickTags []*ClickTag `json:"clickTags,omitempty"`
+
+	// CommercialId: Industry standard ID assigned to creative for reach and
+	// frequency. Applicable to the following creative types: all
+	// INSTREAM_VIDEO and all VPAID.
+	CommercialId string `json:"commercialId,omitempty"`
+
+	// CompanionCreatives: List of companion creatives assigned to an
+	// in-Stream videocreative. Acceptable values include IDs of existing
+	// flash and image creatives. Applicable to the following creative
+	// types: all INSTREAM_VIDEO and all VPAID.
+	CompanionCreatives googleapi.Int64s `json:"companionCreatives,omitempty"`
+
+	// Compatibility: Compatibilities associated with this creative. This is
+	// a read-only field. DISPLAY and DISPLAY_INTERSTITIAL refer to
+	// rendering either on desktop or on mobile devices or in mobile apps
+	// for regular or interstitial ads, respectively. APP and
+	// APP_INTERSTITIAL  are for rendering in mobile apps. Only pre-existing
+	// creatives may have these compatibilities since new creatives will
+	// either be assigned DISPLAY or DISPLAY_INTERSTITIAL instead.
+	// IN_STREAM_VIDEO refers to rendering in in-stream video ads developed
+	// with the VAST standard. Applicable to all creative types.
+	//
+	// Acceptable values are:
+	// - "APP"
+	// - "APP_INTERSTITIAL"
+	// - "IN_STREAM_VIDEO"
+	// - "DISPLAY"
+	// - "DISPLAY_INTERSTITIAL"
+	//
+	// Possible values:
+	//   "APP"
+	//   "APP_INTERSTITIAL"
+	//   "DISPLAY"
+	//   "DISPLAY_INTERSTITIAL"
+	//   "IN_STREAM_VIDEO"
+	Compatibility []string `json:"compatibility,omitempty"`
+
+	// ConvertFlashToHtml5: Whether Flash assets associated with the
+	// creative need to be automatically converted to HTML5. This flag is
+	// enabled by default and users can choose to disable it if they don't
+	// want the system to generate and use HTML5 asset for this creative.
+	// Applicable to the following creative types: ENHANCED_BANNER and
+	// FLASH_INPAGE.
+	ConvertFlashToHtml5 bool `json:"convertFlashToHtml5,omitempty"`
+
+	// CounterCustomEvents: List of counter events configured for the
+	// creative. For ENHANCED_IMAGE creatives, these are read-only and
+	// auto-generated from clickTags. Applicable to the following creative
+	// types: ENHANCED_IMAGE, all RICH_MEDIA, and all VPAID.
+	CounterCustomEvents []*CreativeCustomEvent `json:"counterCustomEvents,omitempty"`
+
+	// CreativeAssets: Assets associated with a creative. Applicable to all
+	// but the following creative types: INTERNAL_REDIRECT,
+	// INTERSTITIAL_INTERNAL_REDIRECT, and REDIRECT
+	CreativeAssets []*CreativeAsset `json:"creativeAssets,omitempty"`
+
+	// CreativeFieldAssignments: Creative field assignments for this
+	// creative. Applicable to all creative types.
+	CreativeFieldAssignments []*CreativeFieldAssignment `json:"creativeFieldAssignments,omitempty"`
+
+	// CustomKeyValues: Custom key-values for a Rich Media creative.
+	// Key-values let you customize the creative settings of a Rich Media ad
+	// running on your site without having to contact the advertiser. You
+	// can use key-values to dynamically change the look or functionality of
+	// a creative. Applicable to the following creative types: all
+	// RICH_MEDIA, and all VPAID.
+	CustomKeyValues []string `json:"customKeyValues,omitempty"`
+
+	// ExitCustomEvents: List of exit events configured for the creative.
+	// For ENHANCED_BANNER and ENHANCED_IMAGE creatives, these are read-only
+	// and auto-generated from clickTags, For ENHANCED_BANNER, an event is
+	// also created from the backupImageReportingLabel. Applicable to the
+	// following creative types: ENHANCED_BANNER, ENHANCED_IMAGE, all
+	// RICH_MEDIA, and all VPAID.
+	ExitCustomEvents []*CreativeCustomEvent `json:"exitCustomEvents,omitempty"`
+
+	// FsCommand: OpenWindow FSCommand of this creative. This lets the SWF
+	// file communicate with either Flash Player or the program hosting
+	// Flash Player, such as a web browser. This is only triggered if
+	// allowScriptAccess field is true. Applicable to the following creative
+	// types: FLASH_INPAGE.
+	FsCommand *FsCommand `json:"fsCommand,omitempty"`
+
+	// HtmlCode: HTML code for the creative. This is a required field when
+	// applicable. This field is ignored if htmlCodeLocked is false.
+	// Applicable to the following creative types: all CUSTOM, FLASH_INPAGE,
+	// and HTML5_BANNER, and all RICH_MEDIA.
+	HtmlCode string `json:"htmlCode,omitempty"`
+
+	// HtmlCodeLocked: Whether HTML code is DCM-generated or manually
+	// entered. Set to true to ignore changes to htmlCode. Applicable to the
+	// following creative types: FLASH_INPAGE and HTML5_BANNER.
+	HtmlCodeLocked bool `json:"htmlCodeLocked,omitempty"`
+
+	// Id: ID of this creative. This is a read-only, auto-generated field.
+	// Applicable to all creative types.
+	Id int64 `json:"id,omitempty,string"`
+
+	// IdDimensionValue: Dimension value for the ID of this creative. This
+	// is a read-only field. Applicable to all creative types.
+	IdDimensionValue *DimensionValue `json:"idDimensionValue,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#creative".
+	Kind string `json:"kind,omitempty"`
+
+	// LastModifiedInfo: Creative last modification information. This is a
+	// read-only field. Applicable to all creative types.
+	LastModifiedInfo *LastModifiedInfo `json:"lastModifiedInfo,omitempty"`
+
+	// LatestTraffickedCreativeId: Latest Studio trafficked creative ID
+	// associated with rich media and VPAID creatives. This is a read-only
+	// field. Applicable to the following creative types: all RICH_MEDIA,
+	// and all VPAID.
+	LatestTraffickedCreativeId int64 `json:"latestTraffickedCreativeId,omitempty,string"`
+
+	// Name: Name of the creative. This is a required field and must be less
+	// than 256 characters long. Applicable to all creative types.
+	Name string `json:"name,omitempty"`
+
+	// OverrideCss: Override CSS value for rich media creatives. Applicable
+	// to the following creative types: all RICH_MEDIA.
+	OverrideCss string `json:"overrideCss,omitempty"`
+
+	// RedirectUrl: URL of hosted image or hosted video or another ad tag.
+	// For INSTREAM_VIDEO_REDIRECT creatives this is the in-stream video
+	// redirect URL. The standard for a VAST (Video Ad Serving Template) ad
+	// response allows for a redirect link to another VAST 2.0 or 3.0 call.
+	// This is a required field when applicable. Applicable to the following
+	// creative types: INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT,
+	// REDIRECT, and INSTREAM_VIDEO_REDIRECT
+	RedirectUrl string `json:"redirectUrl,omitempty"`
+
+	// RenderingId: ID of current rendering version. This is a read-only
+	// field. Applicable to all creative types.
+	RenderingId int64 `json:"renderingId,omitempty,string"`
+
+	// RenderingIdDimensionValue: Dimension value for the rendering ID of
+	// this creative. This is a read-only field. Applicable to all creative
+	// types.
+	RenderingIdDimensionValue *DimensionValue `json:"renderingIdDimensionValue,omitempty"`
+
+	// RequiredFlashPluginVersion: The minimum required Flash plugin version
+	// for this creative. For example, 11.2.202.235. This is a read-only
+	// field. Applicable to the following creative types: all RICH_MEDIA,
+	// and all VPAID.
+	RequiredFlashPluginVersion string `json:"requiredFlashPluginVersion,omitempty"`
+
+	// RequiredFlashVersion: The internal Flash version for this creative as
+	// calculated by DoubleClick Studio. This is a read-only field.
+	// Applicable to the following creative types: FLASH_INPAGE,
+	// ENHANCED_BANNER, all RICH_MEDIA, and all VPAID.
+	RequiredFlashVersion int64 `json:"requiredFlashVersion,omitempty"`
+
+	// Size: Size associated with this creative. When inserting or updating
+	// a creative either the size ID field or size width and height fields
+	// can be used. This is a required field when applicable; however for
+	// IMAGE and FLASH_INPAGE creatives, if left blank, this field will be
+	// automatically set using the actual size of the associated image
+	// assets. Applicable to the following creative types: ENHANCED_BANNER,
+	// ENHANCED_IMAGE, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all
+	// RICH_MEDIA.
+	Size *Size `json:"size,omitempty"`
+
+	// Skippable: Whether the user can choose to skip the creative.
+	// Applicable to the following creative types: all INSTREAM_VIDEO and
+	// all VPAID.
+	Skippable bool `json:"skippable,omitempty"`
+
+	// SslCompliant: Whether the creative is SSL-compliant. This is a
+	// read-only field. Applicable to all creative types.
+	SslCompliant bool `json:"sslCompliant,omitempty"`
+
+	// SslOverride: Whether creative should be treated as SSL compliant even
+	// if the system scan shows it's not. Applicable to all creative types.
+	SslOverride bool `json:"sslOverride,omitempty"`
+
+	// StudioAdvertiserId: Studio advertiser ID associated with rich media
+	// and VPAID creatives. This is a read-only field. Applicable to the
+	// following creative types: all RICH_MEDIA, and all VPAID.
+	StudioAdvertiserId int64 `json:"studioAdvertiserId,omitempty,string"`
+
+	// StudioCreativeId: Studio creative ID associated with rich media and
+	// VPAID creatives. This is a read-only field. Applicable to the
+	// following creative types: all RICH_MEDIA, and all VPAID.
+	StudioCreativeId int64 `json:"studioCreativeId,omitempty,string"`
+
+	// StudioTraffickedCreativeId: Studio trafficked creative ID associated
+	// with rich media and VPAID creatives. This is a read-only field.
+	// Applicable to the following creative types: all RICH_MEDIA, and all
+	// VPAID.
+	StudioTraffickedCreativeId int64 `json:"studioTraffickedCreativeId,omitempty,string"`
+
+	// SubaccountId: Subaccount ID of this creative. This field, if left
+	// unset, will be auto-generated for both insert and update operations.
+	// Applicable to all creative types.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// ThirdPartyBackupImageImpressionsUrl: Third-party URL used to record
+	// backup image impressions. Applicable to the following creative types:
+	// all RICH_MEDIA
+	ThirdPartyBackupImageImpressionsUrl string `json:"thirdPartyBackupImageImpressionsUrl,omitempty"`
+
+	// ThirdPartyRichMediaImpressionsUrl: Third-party URL used to record
+	// rich media impressions. Applicable to the following creative types:
+	// all RICH_MEDIA
+	ThirdPartyRichMediaImpressionsUrl string `json:"thirdPartyRichMediaImpressionsUrl,omitempty"`
+
+	// ThirdPartyUrls: Third-party URLs for tracking in-stream video
+	// creative events. Applicable to the following creative types: all
+	// INSTREAM_VIDEO and all VPAID.
+	ThirdPartyUrls []*ThirdPartyTrackingUrl `json:"thirdPartyUrls,omitempty"`
+
+	// TimerCustomEvents: List of timer events configured for the creative.
+	// For ENHANCED_IMAGE creatives, these are read-only and auto-generated
+	// from clickTags. Applicable to the following creative types:
+	// ENHANCED_IMAGE, all RICH_MEDIA, and all VPAID.
+	TimerCustomEvents []*CreativeCustomEvent `json:"timerCustomEvents,omitempty"`
+
+	// TotalFileSize: Combined size of all creative assets. This is a
+	// read-only field. Applicable to the following creative types: all
+	// RICH_MEDIA, and all VPAID.
+	TotalFileSize int64 `json:"totalFileSize,omitempty,string"`
+
+	// Type: Type of this creative.This is a required field. Applicable to
+	// all creative types.
+	//
+	// Possible values:
+	//   "BRAND_SAFE_DEFAULT_INSTREAM_VIDEO"
+	//   "CUSTOM_INPAGE"
+	//   "CUSTOM_INTERSTITIAL"
+	//   "ENHANCED_BANNER"
+	//   "ENHANCED_IMAGE"
+	//   "FLASH_INPAGE"
+	//   "HTML5_BANNER"
+	//   "IMAGE"
+	//   "INSTREAM_VIDEO"
+	//   "INSTREAM_VIDEO_REDIRECT"
+	//   "INTERNAL_REDIRECT"
+	//   "INTERSTITIAL_INTERNAL_REDIRECT"
+	//   "REDIRECT"
+	//   "RICH_MEDIA_EXPANDING"
+	//   "RICH_MEDIA_IM_EXPAND"
+	//   "RICH_MEDIA_INPAGE"
+	//   "RICH_MEDIA_INPAGE_FLOATING"
+	//   "RICH_MEDIA_INTERSTITIAL_FLOAT"
+	//   "RICH_MEDIA_MOBILE_IN_APP"
+	//   "RICH_MEDIA_MULTI_FLOATING"
+	//   "RICH_MEDIA_PEEL_DOWN"
+	//   "TRACKING_TEXT"
+	//   "VPAID_LINEAR"
+	//   "VPAID_NON_LINEAR"
+	Type string `json:"type,omitempty"`
+
+	// Version: The version number helps you keep track of multiple versions
+	// of your creative in your reports. The version number will always be
+	// auto-generated during insert operations to start at 1. For tracking
+	// creatives the version cannot be incremented and will always remain at
+	// 1. For all other creative types the version can be incremented only
+	// by 1 during update operations. In addition, the version will be
+	// automatically incremented by 1 when undergoing Rich Media creative
+	// merging. Applicable to all creative types.
+	Version int64 `json:"version,omitempty"`
+
+	// VideoDescription: Description of the video ad. Applicable to the
+	// following creative types: all INSTREAM_VIDEO and all VPAID.
+	VideoDescription string `json:"videoDescription,omitempty"`
+
+	// VideoDuration: Creative video duration in seconds. This is a
+	// read-only field. Applicable to the following creative types:
+	// INSTREAM_VIDEO, all RICH_MEDIA, and all VPAID.
+	VideoDuration float64 `json:"videoDuration,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Creative) MarshalJSON() ([]byte, error) {
+	type noMethod Creative
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeAsset: Creative Asset.
+type CreativeAsset struct {
+	// ActionScript3: Whether ActionScript3 is enabled for the flash asset.
+	// This is a read-only field. Applicable to the following creative
+	// types: FLASH_INPAGE and ENHANCED_BANNER.
+	ActionScript3 bool `json:"actionScript3,omitempty"`
+
+	// Active: Whether the video asset is active. This is a read-only field
+	// for VPAID_NON_LINEAR assets. Applicable to the following creative
+	// types: INSTREAM_VIDEO and all VPAID.
+	Active bool `json:"active,omitempty"`
+
+	// Alignment: Possible alignments for an asset. This is a read-only
+	// field. Applicable to the following creative types:
+	// RICH_MEDIA_MULTI_FLOATING.
+	//
+	// Possible values:
+	//   "ALIGNMENT_BOTTOM"
+	//   "ALIGNMENT_LEFT"
+	//   "ALIGNMENT_RIGHT"
+	//   "ALIGNMENT_TOP"
+	Alignment string `json:"alignment,omitempty"`
+
+	// ArtworkType: Artwork type of rich media creative. This is a read-only
+	// field. Applicable to the following creative types: all RICH_MEDIA.
+	//
+	// Possible values:
+	//   "ARTWORK_TYPE_FLASH"
+	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
+	//   "ARTWORK_TYPE_MIXED"
+	ArtworkType string `json:"artworkType,omitempty"`
+
+	// AssetIdentifier: Identifier of this asset. This is the same
+	// identifier returned during creative asset insert operation. This is a
+	// required field. Applicable to all but the following creative types:
+	// all REDIRECT and TRACKING_TEXT.
+	AssetIdentifier *CreativeAssetId `json:"assetIdentifier,omitempty"`
+
+	// BackupImageExit: Exit event configured for the backup image.
+	// Applicable to the following creative types: all RICH_MEDIA.
+	BackupImageExit *CreativeCustomEvent `json:"backupImageExit,omitempty"`
+
+	// BitRate: Detected bit-rate for video asset. This is a read-only
+	// field. Applicable to the following creative types: INSTREAM_VIDEO and
+	// all VPAID.
+	BitRate int64 `json:"bitRate,omitempty"`
+
+	// ChildAssetType: Rich media child asset type. This is a read-only
+	// field. Applicable to the following creative types: all VPAID.
+	//
+	// Possible values:
+	//   "CHILD_ASSET_TYPE_DATA"
+	//   "CHILD_ASSET_TYPE_FLASH"
+	//   "CHILD_ASSET_TYPE_IMAGE"
+	//   "CHILD_ASSET_TYPE_VIDEO"
+	ChildAssetType string `json:"childAssetType,omitempty"`
+
+	// CollapsedSize: Size of an asset when collapsed. This is a read-only
+	// field. Applicable to the following creative types: all RICH_MEDIA and
+	// all VPAID. Additionally, applicable to assets whose displayType is
+	// ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+	CollapsedSize *Size `json:"collapsedSize,omitempty"`
+
+	// CustomStartTimeValue: Custom start time in seconds for making the
+	// asset visible. Applicable to the following creative types: all
+	// RICH_MEDIA.
+	CustomStartTimeValue int64 `json:"customStartTimeValue,omitempty"`
+
+	// DetectedFeatures: List of feature dependencies for the creative asset
+	// that are detected by DCM. Feature dependencies are features that a
+	// browser must be able to support in order to render your HTML5
+	// creative correctly. This is a read-only, auto-generated field.
+	// Applicable to the following creative types: ENHANCED_BANNER and
+	// HTML5_BANNER.
+	//
+	// Possible values:
+	//   "APPLICATION_CACHE"
+	//   "AUDIO"
+	//   "CANVAS"
+	//   "CANVAS_TEXT"
+	//   "CSS_ANIMATIONS"
+	//   "CSS_BACKGROUND_SIZE"
+	//   "CSS_BORDER_IMAGE"
+	//   "CSS_BORDER_RADIUS"
+	//   "CSS_BOX_SHADOW"
+	//   "CSS_COLUMNS"
+	//   "CSS_FLEX_BOX"
+	//   "CSS_FONT_FACE"
+	//   "CSS_GENERATED_CONTENT"
+	//   "CSS_GRADIENTS"
+	//   "CSS_HSLA"
+	//   "CSS_MULTIPLE_BGS"
+	//   "CSS_OPACITY"
+	//   "CSS_REFLECTIONS"
+	//   "CSS_RGBA"
+	//   "CSS_TEXT_SHADOW"
+	//   "CSS_TRANSFORMS"
+	//   "CSS_TRANSFORMS3D"
+	//   "CSS_TRANSITIONS"
+	//   "DRAG_AND_DROP"
+	//   "GEO_LOCATION"
+	//   "HASH_CHANGE"
+	//   "HISTORY"
+	//   "INDEXED_DB"
+	//   "INLINE_SVG"
+	//   "INPUT_ATTR_AUTOCOMPLETE"
+	//   "INPUT_ATTR_AUTOFOCUS"
+	//   "INPUT_ATTR_LIST"
+	//   "INPUT_ATTR_MAX"
+	//   "INPUT_ATTR_MIN"
+	//   "INPUT_ATTR_MULTIPLE"
+	//   "INPUT_ATTR_PATTERN"
+	//   "INPUT_ATTR_PLACEHOLDER"
+	//   "INPUT_ATTR_REQUIRED"
+	//   "INPUT_ATTR_STEP"
+	//   "INPUT_TYPE_COLOR"
+	//   "INPUT_TYPE_DATE"
+	//   "INPUT_TYPE_DATETIME"
+	//   "INPUT_TYPE_DATETIME_LOCAL"
+	//   "INPUT_TYPE_EMAIL"
+	//   "INPUT_TYPE_MONTH"
+	//   "INPUT_TYPE_NUMBER"
+	//   "INPUT_TYPE_RANGE"
+	//   "INPUT_TYPE_SEARCH"
+	//   "INPUT_TYPE_TEL"
+	//   "INPUT_TYPE_TIME"
+	//   "INPUT_TYPE_URL"
+	//   "INPUT_TYPE_WEEK"
+	//   "LOCAL_STORAGE"
+	//   "POST_MESSAGE"
+	//   "SESSION_STORAGE"
+	//   "SMIL"
+	//   "SVG_CLIP_PATHS"
+	//   "SVG_FE_IMAGE"
+	//   "SVG_FILTERS"
+	//   "SVG_HREF"
+	//   "TOUCH"
+	//   "VIDEO"
+	//   "WEBGL"
+	//   "WEB_SOCKETS"
+	//   "WEB_SQL_DATABASE"
+	//   "WEB_WORKERS"
+	DetectedFeatures []string `json:"detectedFeatures,omitempty"`
+
+	// DisplayType: Type of rich media asset. This is a read-only field.
+	// Applicable to the following creative types: all RICH_MEDIA.
+	//
+	// Possible values:
+	//   "ASSET_DISPLAY_TYPE_EXPANDING"
+	//   "ASSET_DISPLAY_TYPE_FLASH_IN_FLASH"
+	//   "ASSET_DISPLAY_TYPE_FLASH_IN_FLASH_EXPANDING"
+	//   "ASSET_DISPLAY_TYPE_FLOATING"
+	//   "ASSET_DISPLAY_TYPE_INPAGE"
+	//   "ASSET_DISPLAY_TYPE_OVERLAY"
+	//   "ASSET_DISPLAY_TYPE_PEEL_DOWN"
+	//   "ASSET_DISPLAY_TYPE_VPAID_LINEAR"
+	//   "ASSET_DISPLAY_TYPE_VPAID_NON_LINEAR"
+	DisplayType string `json:"displayType,omitempty"`
+
+	// Duration: Duration in seconds for which an asset will be displayed.
+	// Applicable to the following creative types: INSTREAM_VIDEO and
+	// VPAID_LINEAR.
+	Duration int64 `json:"duration,omitempty"`
+
+	// DurationType: Duration type for which an asset will be displayed.
+	// Applicable to the following creative types: all RICH_MEDIA.
+	//
+	// Possible values:
+	//   "ASSET_DURATION_TYPE_AUTO"
+	//   "ASSET_DURATION_TYPE_CUSTOM"
+	//   "ASSET_DURATION_TYPE_NONE"
+	DurationType string `json:"durationType,omitempty"`
+
+	// ExpandedDimension: Detected expanded dimension for video asset. This
+	// is a read-only field. Applicable to the following creative types:
+	// INSTREAM_VIDEO and all VPAID.
+	ExpandedDimension *Size `json:"expandedDimension,omitempty"`
+
+	// FileSize: File size associated with this creative asset. This is a
+	// read-only field. Applicable to all but the following creative types:
+	// all REDIRECT and TRACKING_TEXT.
+	FileSize int64 `json:"fileSize,omitempty,string"`
+
+	// FlashVersion: Flash version of the asset. This is a read-only field.
+	// Applicable to the following creative types: FLASH_INPAGE,
+	// ENHANCED_BANNER, all RICH_MEDIA, and all VPAID.
+	FlashVersion int64 `json:"flashVersion,omitempty"`
+
+	// HideFlashObjects: Whether to hide Flash objects flag for an asset.
+	// Applicable to the following creative types: all RICH_MEDIA.
+	HideFlashObjects bool `json:"hideFlashObjects,omitempty"`
+
+	// HideSelectionBoxes: Whether to hide selection boxes flag for an
+	// asset. Applicable to the following creative types: all RICH_MEDIA.
+	HideSelectionBoxes bool `json:"hideSelectionBoxes,omitempty"`
+
+	// HorizontallyLocked: Whether the asset is horizontally locked. This is
+	// a read-only field. Applicable to the following creative types: all
+	// RICH_MEDIA.
+	HorizontallyLocked bool `json:"horizontallyLocked,omitempty"`
+
+	// Id: Numeric ID of this creative asset. This is a required field and
+	// should not be modified. Applicable to all but the following creative
+	// types: all REDIRECT and TRACKING_TEXT.
+	Id int64 `json:"id,omitempty,string"`
+
+	// MimeType: Detected MIME type for video asset. This is a read-only
+	// field. Applicable to the following creative types: INSTREAM_VIDEO and
+	// all VPAID.
+	MimeType string `json:"mimeType,omitempty"`
+
+	// Offset: Offset position for an asset in collapsed mode. This is a
+	// read-only field. Applicable to the following creative types: all
+	// RICH_MEDIA and all VPAID. Additionally, only applicable to assets
+	// whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or
+	// ASSET_DISPLAY_TYPE_PEEL_DOWN.
+	Offset *OffsetPosition `json:"offset,omitempty"`
+
+	// OriginalBackup: Whether the backup asset is original or changed by
+	// the user in DCM. Applicable to the following creative types: all
+	// RICH_MEDIA.
+	OriginalBackup bool `json:"originalBackup,omitempty"`
+
+	// Position: Offset position for an asset. Applicable to the following
+	// creative types: all RICH_MEDIA.
+	Position *OffsetPosition `json:"position,omitempty"`
+
+	// PositionLeftUnit: Offset left unit for an asset. This is a read-only
+	// field. Applicable to the following creative types: all RICH_MEDIA.
+	//
+	// Possible values:
+	//   "OFFSET_UNIT_PERCENT"
+	//   "OFFSET_UNIT_PIXEL"
+	//   "OFFSET_UNIT_PIXEL_FROM_CENTER"
+	PositionLeftUnit string `json:"positionLeftUnit,omitempty"`
+
+	// PositionTopUnit: Offset top unit for an asset. This is a read-only
+	// field if the asset displayType is ASSET_DISPLAY_TYPE_OVERLAY.
+	// Applicable to the following creative types: all RICH_MEDIA.
+	//
+	// Possible values:
+	//   "OFFSET_UNIT_PERCENT"
+	//   "OFFSET_UNIT_PIXEL"
+	//   "OFFSET_UNIT_PIXEL_FROM_CENTER"
+	PositionTopUnit string `json:"positionTopUnit,omitempty"`
+
+	// ProgressiveServingUrl: Progressive URL for video asset. This is a
+	// read-only field. Applicable to the following creative types:
+	// INSTREAM_VIDEO and all VPAID.
+	ProgressiveServingUrl string `json:"progressiveServingUrl,omitempty"`
+
+	// Pushdown: Whether the asset pushes down other content. Applicable to
+	// the following creative types: all RICH_MEDIA. Additionally, only
+	// applicable when the asset offsets are 0, the collapsedSize.width
+	// matches size.width, and the collapsedSize.height is less than
+	// size.height.
+	Pushdown bool `json:"pushdown,omitempty"`
+
+	// PushdownDuration: Pushdown duration in seconds for an asset. Must be
+	// between 0 and 9.99. Applicable to the following creative types: all
+	// RICH_MEDIA.Additionally, only applicable when the asset pushdown
+	// field is true, the offsets are 0, the collapsedSize.width matches
+	// size.width, and the collapsedSize.height is less than size.height.
+	PushdownDuration float64 `json:"pushdownDuration,omitempty"`
+
+	// Role: Role of the asset in relation to creative. Applicable to all
+	// but the following creative types: all REDIRECT and TRACKING_TEXT.
+	// This is a required field.
+	// PRIMARY applies to ENHANCED_BANNER, FLASH_INPAGE, HTML5_BANNER,
+	// IMAGE, IMAGE_GALLERY, all RICH_MEDIA (which may contain multiple
+	// primary assets), and all VPAID creatives.
+	// BACKUP_IMAGE applies to ENHANCED_BANNER, FLASH_INPAGE, HTML5_BANNER,
+	// all RICH_MEDIA, and all VPAID creatives.
+	// ADDITIONAL_IMAGE and ADDITIONAL_FLASH apply to FLASH_INPAGE
+	// creatives.
+	// OTHER refers to assets from sources other than DCM, such as Studio
+	// uploaded assets, applicable to all RICH_MEDIA and all VPAID
+	// creatives.
+	// PARENT_VIDEO refers to videos uploaded by the user in DCM and is
+	// applicable to INSTREAM_VIDEO and VPAID_LINEAR
+	// creatives.
+	// TRANSCODED_VIDEO refers to videos transcoded by DCM from PARENT_VIDEO
+	// assets and is applicable to INSTREAM_VIDEO and VPAID_LINEAR
+	// creatives.
+	// ALTERNATE_VIDEO refers to the DCM representation of child asset
+	// videos from Studio, and is applicable to VPAID_LINEAR creatives.
+	// These cannot be added or removed within DCM.
+	// For VPAID_LINEAR creatives, PARENT_VIDEO, TRANSCODED_VIDEO and
+	// ALTERNATE_VIDEO assets that are marked active serve as backup in case
+	// the VPAID creative cannot be served. Only PARENT_VIDEO assets can be
+	// added or removed for an INSTREAM_VIDEO or VPAID_LINEAR creative.
+	//
+	// Possible values:
+	//   "ADDITIONAL_FLASH"
+	//   "ADDITIONAL_IMAGE"
+	//   "ALTERNATE_VIDEO"
+	//   "BACKUP_IMAGE"
+	//   "OTHER"
+	//   "PARENT_VIDEO"
+	//   "PRIMARY"
+	//   "TRANSCODED_VIDEO"
+	Role string `json:"role,omitempty"`
+
+	// Size: Size associated with this creative asset. This is a required
+	// field when applicable; however for IMAGE and FLASH_INPAGE creatives,
+	// if left blank, this field will be automatically set using the actual
+	// size of the associated image asset. Applicable to the following
+	// creative types: ENHANCED_BANNER, ENHANCED_IMAGE, FLASH_INPAGE,
+	// HTML5_BANNER, IMAGE, and all RICH_MEDIA.
+	Size *Size `json:"size,omitempty"`
+
+	// SslCompliant: Whether the asset is SSL-compliant. This is a read-only
+	// field. Applicable to all but the following creative types: all
+	// REDIRECT and TRACKING_TEXT.
+	SslCompliant bool `json:"sslCompliant,omitempty"`
+
+	// StartTimeType: Initial wait time type before making the asset
+	// visible. Applicable to the following creative types: all RICH_MEDIA.
+	//
+	// Possible values:
+	//   "ASSET_START_TIME_TYPE_CUSTOM"
+	//   "ASSET_START_TIME_TYPE_NONE"
+	StartTimeType string `json:"startTimeType,omitempty"`
+
+	// StreamingServingUrl: Streaming URL for video asset. This is a
+	// read-only field. Applicable to the following creative types:
+	// INSTREAM_VIDEO and all VPAID.
+	StreamingServingUrl string `json:"streamingServingUrl,omitempty"`
+
+	// Transparency: Whether the asset is transparent. Applicable to the
+	// following creative types: all RICH_MEDIA. Additionally, only
+	// applicable to HTML5 assets.
+	Transparency bool `json:"transparency,omitempty"`
+
+	// VerticallyLocked: Whether the asset is vertically locked. This is a
+	// read-only field. Applicable to the following creative types: all
+	// RICH_MEDIA.
+	VerticallyLocked bool `json:"verticallyLocked,omitempty"`
+
+	// VideoDuration: Detected video duration for video asset. This is a
+	// read-only field. Applicable to the following creative types:
+	// INSTREAM_VIDEO and all VPAID.
+	VideoDuration float64 `json:"videoDuration,omitempty"`
+
+	// WindowMode: Window mode options for flash assets. Applicable to the
+	// following creative types: FLASH_INPAGE, RICH_MEDIA_EXPANDING,
+	// RICH_MEDIA_IM_EXPAND, RICH_MEDIA_INPAGE, and
+	// RICH_MEDIA_INPAGE_FLOATING.
+	//
+	// Possible values:
+	//   "OPAQUE"
+	//   "TRANSPARENT"
+	//   "WINDOW"
+	WindowMode string `json:"windowMode,omitempty"`
+
+	// ZIndex: zIndex value of an asset. This is a read-only field.
+	// Applicable to the following creative types: all
+	// RICH_MEDIA.Additionally, only applicable to assets whose displayType
+	// is NOT one of the following types: ASSET_DISPLAY_TYPE_INPAGE or
+	// ASSET_DISPLAY_TYPE_OVERLAY.
+	ZIndex int64 `json:"zIndex,omitempty"`
+
+	// ZipFilename: File name of zip file. This is a read-only field.
+	// Applicable to the following creative types: HTML5_BANNER.
+	ZipFilename string `json:"zipFilename,omitempty"`
+
+	// ZipFilesize: Size of zip file. This is a read-only field. Applicable
+	// to the following creative types: HTML5_BANNER.
+	ZipFilesize string `json:"zipFilesize,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionScript3") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeAsset) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeAsset
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeAssetId: Creative Asset ID.
+type CreativeAssetId struct {
+	// Name: Name of the creative asset. This is a required field while
+	// inserting an asset. After insertion, this assetIdentifier is used to
+	// identify the uploaded asset. Characters in the name must be
+	// alphanumeric or one of the following: ".-_ ". Spaces are allowed.
+	Name string `json:"name,omitempty"`
+
+	// Type: Type of asset to upload. This is a required field. IMAGE is
+	// solely used for IMAGE creatives. Other image assets should use
+	// HTML_IMAGE.
+	//
+	// Possible values:
+	//   "FLASH"
+	//   "HTML"
+	//   "HTML_IMAGE"
+	//   "IMAGE"
+	//   "VIDEO"
+	Type string `json:"type,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Name") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeAssetId) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeAssetId
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeAssetMetadata: CreativeAssets contains properties of a
+// creative asset file which will be uploaded or has already been
+// uploaded. Refer to the creative sample code for how to upload assets
+// and insert a creative.
+type CreativeAssetMetadata struct {
+	// AssetIdentifier: ID of the creative asset. This is a required field.
+	AssetIdentifier *CreativeAssetId `json:"assetIdentifier,omitempty"`
+
+	// ClickTags: List of detected click tags for assets. This is a
+	// read-only auto-generated field.
+	ClickTags []*ClickTag `json:"clickTags,omitempty"`
+
+	// DetectedFeatures: List of feature dependencies for the creative asset
+	// that are detected by DCM. Feature dependencies are features that a
+	// browser must be able to support in order to render your HTML5
+	// creative correctly. This is a read-only, auto-generated field.
+	//
+	// Possible values:
+	//   "APPLICATION_CACHE"
+	//   "AUDIO"
+	//   "CANVAS"
+	//   "CANVAS_TEXT"
+	//   "CSS_ANIMATIONS"
+	//   "CSS_BACKGROUND_SIZE"
+	//   "CSS_BORDER_IMAGE"
+	//   "CSS_BORDER_RADIUS"
+	//   "CSS_BOX_SHADOW"
+	//   "CSS_COLUMNS"
+	//   "CSS_FLEX_BOX"
+	//   "CSS_FONT_FACE"
+	//   "CSS_GENERATED_CONTENT"
+	//   "CSS_GRADIENTS"
+	//   "CSS_HSLA"
+	//   "CSS_MULTIPLE_BGS"
+	//   "CSS_OPACITY"
+	//   "CSS_REFLECTIONS"
+	//   "CSS_RGBA"
+	//   "CSS_TEXT_SHADOW"
+	//   "CSS_TRANSFORMS"
+	//   "CSS_TRANSFORMS3D"
+	//   "CSS_TRANSITIONS"
+	//   "DRAG_AND_DROP"
+	//   "GEO_LOCATION"
+	//   "HASH_CHANGE"
+	//   "HISTORY"
+	//   "INDEXED_DB"
+	//   "INLINE_SVG"
+	//   "INPUT_ATTR_AUTOCOMPLETE"
+	//   "INPUT_ATTR_AUTOFOCUS"
+	//   "INPUT_ATTR_LIST"
+	//   "INPUT_ATTR_MAX"
+	//   "INPUT_ATTR_MIN"
+	//   "INPUT_ATTR_MULTIPLE"
+	//   "INPUT_ATTR_PATTERN"
+	//   "INPUT_ATTR_PLACEHOLDER"
+	//   "INPUT_ATTR_REQUIRED"
+	//   "INPUT_ATTR_STEP"
+	//   "INPUT_TYPE_COLOR"
+	//   "INPUT_TYPE_DATE"
+	//   "INPUT_TYPE_DATETIME"
+	//   "INPUT_TYPE_DATETIME_LOCAL"
+	//   "INPUT_TYPE_EMAIL"
+	//   "INPUT_TYPE_MONTH"
+	//   "INPUT_TYPE_NUMBER"
+	//   "INPUT_TYPE_RANGE"
+	//   "INPUT_TYPE_SEARCH"
+	//   "INPUT_TYPE_TEL"
+	//   "INPUT_TYPE_TIME"
+	//   "INPUT_TYPE_URL"
+	//   "INPUT_TYPE_WEEK"
+	//   "LOCAL_STORAGE"
+	//   "POST_MESSAGE"
+	//   "SESSION_STORAGE"
+	//   "SMIL"
+	//   "SVG_CLIP_PATHS"
+	//   "SVG_FE_IMAGE"
+	//   "SVG_FILTERS"
+	//   "SVG_HREF"
+	//   "TOUCH"
+	//   "VIDEO"
+	//   "WEBGL"
+	//   "WEB_SOCKETS"
+	//   "WEB_SQL_DATABASE"
+	//   "WEB_WORKERS"
+	DetectedFeatures []string `json:"detectedFeatures,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#creativeAssetMetadata".
+	Kind string `json:"kind,omitempty"`
+
+	// WarnedValidationRules: Rules validated during code generation that
+	// generated a warning. This is a read-only, auto-generated
+	// field.
+	//
+	// Possible values are:
+	// - "CLICK_TAG_NON_TOP_LEVEL"
+	// - "CLICK_TAG_MISSING"
+	// - "CLICK_TAG_MORE_THAN_ONE"
+	// - "CLICK_TAG_INVALID"
+	// - "ORPHANED_ASSET"
+	// - "PRIMARY_HTML_MISSING"
+	// - "EXTERNAL_FILE_REFERENCED"
+	// - "MRAID_REFERENCED"
+	// - "ADMOB_REFERENCED"
+	// - "FILE_TYPE_INVALID"
+	// - "ZIP_INVALID"
+	// - "LINKED_FILE_NOT_FOUND"
+	// - "MAX_FLASH_VERSION_11"
+	// - "NOT_SSL_COMPLIANT"
+	// - "FILE_DETAIL_EMPTY"
+	// - "ASSET_INVALID"
+	// - "GWD_PROPERTIES_INVALID"
+	// - "ENABLER_UNSUPPORTED_METHOD_DCM"
+	// - "ASSET_FORMAT_UNSUPPORTED_DCM"
+	// - "COMPONENT_UNSUPPORTED_DCM"
+	// - "HTML5_FEATURE_UNSUPPORTED' "
+	//
+	// Possible values:
+	//   "ADMOB_REFERENCED"
+	//   "ASSET_FORMAT_UNSUPPORTED_DCM"
+	//   "ASSET_INVALID"
+	//   "CLICK_TAG_HARD_CODED"
+	//   "CLICK_TAG_INVALID"
+	//   "CLICK_TAG_IN_GWD"
+	//   "CLICK_TAG_MISSING"
+	//   "CLICK_TAG_MORE_THAN_ONE"
+	//   "CLICK_TAG_NON_TOP_LEVEL"
+	//   "COMPONENT_UNSUPPORTED_DCM"
+	//   "ENABLER_UNSUPPORTED_METHOD_DCM"
+	//   "EXTERNAL_FILE_REFERENCED"
+	//   "FILE_DETAIL_EMPTY"
+	//   "FILE_TYPE_INVALID"
+	//   "GWD_PROPERTIES_INVALID"
+	//   "HTML5_FEATURE_UNSUPPORTED"
+	//   "LINKED_FILE_NOT_FOUND"
+	//   "MAX_FLASH_VERSION_11"
+	//   "MRAID_REFERENCED"
+	//   "NOT_SSL_COMPLIANT"
+	//   "ORPHANED_ASSET"
+	//   "PRIMARY_HTML_MISSING"
+	//   "ZIP_INVALID"
+	WarnedValidationRules []string `json:"warnedValidationRules,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AssetIdentifier") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeAssetMetadata) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeAssetMetadata
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeAssignment: Creative Assignment.
+type CreativeAssignment struct {
+	// Active: Whether this creative assignment is active. When true, the
+	// creative will be included in the ad's rotation.
+	Active bool `json:"active,omitempty"`
+
+	// ApplyEventTags: Whether applicable event tags should fire when this
+	// creative assignment is rendered. If this value is unset when the ad
+	// is inserted or updated, it will default to true for all creative
+	// types EXCEPT for INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT,
+	// and INSTREAM_VIDEO.
+	ApplyEventTags bool `json:"applyEventTags,omitempty"`
+
+	// ClickThroughUrl: Click-through URL of the creative assignment.
+	ClickThroughUrl *ClickThroughUrl `json:"clickThroughUrl,omitempty"`
+
+	// CompanionCreativeOverrides: Companion creative overrides for this
+	// creative assignment. Applicable to video ads.
+	CompanionCreativeOverrides []*CompanionClickThroughOverride `json:"companionCreativeOverrides,omitempty"`
+
+	// CreativeGroupAssignments: Creative group assignments for this
+	// creative assignment. Only one assignment per creative group number is
+	// allowed for a maximum of two assignments.
+	CreativeGroupAssignments []*CreativeGroupAssignment `json:"creativeGroupAssignments,omitempty"`
+
+	// CreativeId: ID of the creative to be assigned. This is a required
+	// field.
+	CreativeId int64 `json:"creativeId,omitempty,string"`
+
+	// CreativeIdDimensionValue: Dimension value for the ID of the creative.
+	// This is a read-only, auto-generated field.
+	CreativeIdDimensionValue *DimensionValue `json:"creativeIdDimensionValue,omitempty"`
+
+	// EndTime: Date and time that the assigned creative should stop
+	// serving. Must be later than the start time.
+	EndTime string `json:"endTime,omitempty"`
+
+	// RichMediaExitOverrides: Rich media exit overrides for this creative
+	// assignment.
+	// Applicable when the creative type is any of the following:
+	// - RICH_MEDIA_INPAGE
+	// - RICH_MEDIA_INPAGE_FLOATING
+	// - RICH_MEDIA_IM_EXPAND
+	// - RICH_MEDIA_EXPANDING
+	// - RICH_MEDIA_INTERSTITIAL_FLOAT
+	// - RICH_MEDIA_MOBILE_IN_APP
+	// - RICH_MEDIA_MULTI_FLOATING
+	// - RICH_MEDIA_PEEL_DOWN
+	// - ADVANCED_BANNER
+	// - VPAID_LINEAR
+	// - VPAID_NON_LINEAR
+	RichMediaExitOverrides []*RichMediaExitOverride `json:"richMediaExitOverrides,omitempty"`
+
+	// Sequence: Sequence number of the creative assignment, applicable when
+	// the rotation type is CREATIVE_ROTATION_TYPE_SEQUENTIAL.
+	Sequence int64 `json:"sequence,omitempty"`
+
+	// SslCompliant: Whether the creative to be assigned is SSL-compliant.
+	// This is a read-only field that is auto-generated when the ad is
+	// inserted or updated.
+	SslCompliant bool `json:"sslCompliant,omitempty"`
+
+	// StartTime: Date and time that the assigned creative should start
+	// serving.
+	StartTime string `json:"startTime,omitempty"`
+
+	// Weight: Weight of the creative assignment, applicable when the
+	// rotation type is CREATIVE_ROTATION_TYPE_RANDOM.
+	Weight int64 `json:"weight,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Active") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeAssignment) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeAssignment
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeCustomEvent: Creative Custom Event.
+type CreativeCustomEvent struct {
+	// AdvertiserCustomEventId: Unique ID of this event used by DDM
+	// Reporting and Data Transfer. This is a read-only field.
+	AdvertiserCustomEventId int64 `json:"advertiserCustomEventId,omitempty,string"`
+
+	// AdvertiserCustomEventName: User-entered name for the event.
+	AdvertiserCustomEventName string `json:"advertiserCustomEventName,omitempty"`
+
+	// AdvertiserCustomEventType: Type of the event. This is a read-only
+	// field.
+	//
+	// Possible values:
+	//   "ADVERTISER_EVENT_COUNTER"
+	//   "ADVERTISER_EVENT_EXIT"
+	//   "ADVERTISER_EVENT_TIMER"
+	AdvertiserCustomEventType string `json:"advertiserCustomEventType,omitempty"`
+
+	// ArtworkLabel: Artwork label column, used to link events in DCM back
+	// to events in Studio. This is a required field and should not be
+	// modified after insertion.
+	ArtworkLabel string `json:"artworkLabel,omitempty"`
+
+	// ArtworkType: Artwork type used by the creative.This is a read-only
+	// field.
+	//
+	// Possible values:
+	//   "ARTWORK_TYPE_FLASH"
+	//   "ARTWORK_TYPE_HTML5"
+	//   "ARTWORK_TYPE_IMAGE"
+	//   "ARTWORK_TYPE_MIXED"
+	ArtworkType string `json:"artworkType,omitempty"`
+
+	// ExitUrl: Exit URL of the event. This field is used only for exit
+	// events.
+	ExitUrl string `json:"exitUrl,omitempty"`
+
+	// Id: ID of this event. This is a required field and should not be
+	// modified after insertion.
+	Id int64 `json:"id,omitempty,string"`
+
+	// PopupWindowProperties: Properties for rich media popup windows. This
+	// field is used only for exit events.
+	PopupWindowProperties *PopupWindowProperties `json:"popupWindowProperties,omitempty"`
+
+	// TargetType: Target type used by the event.
+	//
+	// Possible values:
+	//   "TARGET_BLANK"
+	//   "TARGET_PARENT"
+	//   "TARGET_POPUP"
+	//   "TARGET_SELF"
+	//   "TARGET_TOP"
+	TargetType string `json:"targetType,omitempty"`
+
+	// VideoReportingId: Video reporting ID, used to differentiate multiple
+	// videos in a single creative. This is a read-only field.
+	VideoReportingId string `json:"videoReportingId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "AdvertiserCustomEventId") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeCustomEvent) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeCustomEvent
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeField: Contains properties of a creative field.
+type CreativeField struct {
+	// AccountId: Account ID of this creative field. This is a read-only
+	// field that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AdvertiserId: Advertiser ID of this creative field. This is a
+	// required field on insertion.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AdvertiserIdDimensionValue: Dimension value for the ID of the
+	// advertiser. This is a read-only, auto-generated field.
+	AdvertiserIdDimensionValue *DimensionValue `json:"advertiserIdDimensionValue,omitempty"`
+
+	// Id: ID of this creative field. This is a read-only, auto-generated
+	// field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#creativeField".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this creative field. This is a required field and must
+	// be less than 256 characters long and unique among creative fields of
+	// the same advertiser.
+	Name string `json:"name,omitempty"`
+
+	// SubaccountId: Subaccount ID of this creative field. This is a
+	// read-only field that can be left blank.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeField) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeField
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeFieldAssignment: Creative Field Assignment.
+type CreativeFieldAssignment struct {
+	// CreativeFieldId: ID of the creative field.
+	CreativeFieldId int64 `json:"creativeFieldId,omitempty,string"`
+
+	// CreativeFieldValueId: ID of the creative field value.
+	CreativeFieldValueId int64 `json:"creativeFieldValueId,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "CreativeFieldId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeFieldAssignment) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeFieldAssignment
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeFieldValue: Contains properties of a creative field value.
+type CreativeFieldValue struct {
+	// Id: ID of this creative field value. This is a read-only,
+	// auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#creativeFieldValue".
+	Kind string `json:"kind,omitempty"`
+
+	// Value: Value of this creative field value. It needs to be less than
+	// 256 characters in length and unique per creative field.
+	Value string `json:"value,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeFieldValue) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeFieldValue
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeFieldValuesListResponse: Creative Field Value List Response
+type CreativeFieldValuesListResponse struct {
+	// CreativeFieldValues: Creative field value collection.
+	CreativeFieldValues []*CreativeFieldValue `json:"creativeFieldValues,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#creativeFieldValuesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CreativeFieldValues")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeFieldValuesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeFieldValuesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeFieldsListResponse: Creative Field List Response
+type CreativeFieldsListResponse struct {
+	// CreativeFields: Creative field collection.
+	CreativeFields []*CreativeField `json:"creativeFields,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#creativeFieldsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CreativeFields") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeFieldsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeFieldsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeGroup: Contains properties of a creative group.
+type CreativeGroup struct {
+	// AccountId: Account ID of this creative group. This is a read-only
+	// field that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AdvertiserId: Advertiser ID of this creative group. This is a
+	// required field on insertion.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AdvertiserIdDimensionValue: Dimension value for the ID of the
+	// advertiser. This is a read-only, auto-generated field.
+	AdvertiserIdDimensionValue *DimensionValue `json:"advertiserIdDimensionValue,omitempty"`
+
+	// GroupNumber: Subgroup of the creative group. Assign your creative
+	// groups to one of the following subgroups in order to filter or manage
+	// them more easily. This field is required on insertion and is
+	// read-only after insertion.
+	// Acceptable values are:
+	// - 1
+	// - 2
+	GroupNumber int64 `json:"groupNumber,omitempty"`
+
+	// Id: ID of this creative group. This is a read-only, auto-generated
+	// field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#creativeGroup".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this creative group. This is a required field and must
+	// be less than 256 characters long and unique among creative groups of
+	// the same advertiser.
+	Name string `json:"name,omitempty"`
+
+	// SubaccountId: Subaccount ID of this creative group. This is a
+	// read-only field that can be left blank.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeGroup) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeGroup
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeGroupAssignment: Creative Group Assignment.
+type CreativeGroupAssignment struct {
+	// CreativeGroupId: ID of the creative group to be assigned.
+	CreativeGroupId int64 `json:"creativeGroupId,omitempty,string"`
+
+	// CreativeGroupNumber: Creative group number of the creative group
+	// assignment.
+	//
+	// Possible values:
+	//   "CREATIVE_GROUP_ONE"
+	//   "CREATIVE_GROUP_TWO"
+	CreativeGroupNumber string `json:"creativeGroupNumber,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CreativeGroupId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeGroupAssignment) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeGroupAssignment
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeGroupsListResponse: Creative Group List Response
+type CreativeGroupsListResponse struct {
+	// CreativeGroups: Creative group collection.
+	CreativeGroups []*CreativeGroup `json:"creativeGroups,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#creativeGroupsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CreativeGroups") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeGroupsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeGroupsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeOptimizationConfiguration: Creative optimization settings.
+type CreativeOptimizationConfiguration struct {
+	// Id: ID of this creative optimization config. This field is
+	// auto-generated when the campaign is inserted or updated. It can be
+	// null for existing campaigns.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Name: Name of this creative optimization config. This is a required
+	// field and must be less than 129 characters long.
+	Name string `json:"name,omitempty"`
+
+	// OptimizationActivitys: List of optimization activities associated
+	// with this configuration.
+	OptimizationActivitys []*OptimizationActivity `json:"optimizationActivitys,omitempty"`
+
+	// OptimizationModel: Optimization model for this configuration.
+	//
+	// Possible values:
+	//   "CLICK"
+	//   "POST_CLICK"
+	//   "POST_CLICK_AND_IMPRESSION"
+	//   "POST_IMPRESSION"
+	//   "VIDEO_COMPLETION"
+	OptimizationModel string `json:"optimizationModel,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeOptimizationConfiguration) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeOptimizationConfiguration
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeRotation: Creative Rotation.
+type CreativeRotation struct {
+	// CreativeAssignments: Creative assignments in this creative rotation.
+	CreativeAssignments []*CreativeAssignment `json:"creativeAssignments,omitempty"`
+
+	// CreativeOptimizationConfigurationId: Creative optimization
+	// configuration that is used by this ad. It should refer to one of the
+	// existing optimization configurations in the ad's campaign. If it is
+	// unset or set to 0, then the campaign's default optimization
+	// configuration will be used for this ad.
+	CreativeOptimizationConfigurationId int64 `json:"creativeOptimizationConfigurationId,omitempty,string"`
+
+	// Type: Type of creative rotation. Can be used to specify whether to
+	// use sequential or random rotation.
+	//
+	// Possible values:
+	//   "CREATIVE_ROTATION_TYPE_RANDOM"
+	//   "CREATIVE_ROTATION_TYPE_SEQUENTIAL"
+	Type string `json:"type,omitempty"`
+
+	// WeightCalculationStrategy: Strategy for calculating weights. Used
+	// with CREATIVE_ROTATION_TYPE_RANDOM.
+	//
+	// Possible values:
+	//   "WEIGHT_STRATEGY_CUSTOM"
+	//   "WEIGHT_STRATEGY_EQUAL"
+	//   "WEIGHT_STRATEGY_HIGHEST_CTR"
+	//   "WEIGHT_STRATEGY_OPTIMIZED"
+	WeightCalculationStrategy string `json:"weightCalculationStrategy,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CreativeAssignments")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeRotation) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeRotation
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativeSettings: Creative Settings
+type CreativeSettings struct {
+	// IFrameFooter: Header text for iFrames for this site. Must be less
+	// than or equal to 2000 characters long.
+	IFrameFooter string `json:"iFrameFooter,omitempty"`
+
+	// IFrameHeader: Header text for iFrames for this site. Must be less
+	// than or equal to 2000 characters long.
+	IFrameHeader string `json:"iFrameHeader,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "IFrameFooter") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativeSettings) MarshalJSON() ([]byte, error) {
+	type noMethod CreativeSettings
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreativesListResponse: Creative List Response
+type CreativesListResponse struct {
+	// Creatives: Creative collection.
+	Creatives []*Creative `json:"creatives,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#creativesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Creatives") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreativesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod CreativesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CrossDimensionReachReportCompatibleFields: Represents fields that are
+// compatible to be selected for a report of type
+// "CROSS_DIMENSION_REACH".
+type CrossDimensionReachReportCompatibleFields struct {
+	// Breakdown: Dimensions which are compatible to be selected in the
+	// "breakdown" section of the report.
+	Breakdown []*Dimension `json:"breakdown,omitempty"`
+
+	// DimensionFilters: Dimensions which are compatible to be selected in
+	// the "dimensionFilters" section of the report.
+	DimensionFilters []*Dimension `json:"dimensionFilters,omitempty"`
+
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#crossDimensionReachReportCompatibleFields.
+	Kind string `json:"kind,omitempty"`
+
+	// Metrics: Metrics which are compatible to be selected in the
+	// "metricNames" section of the report.
+	Metrics []*Metric `json:"metrics,omitempty"`
+
+	// OverlapMetrics: Metrics which are compatible to be selected in the
+	// "overlapMetricNames" section of the report.
+	OverlapMetrics []*Metric `json:"overlapMetrics,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Breakdown") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CrossDimensionReachReportCompatibleFields) MarshalJSON() ([]byte, error) {
+	type noMethod CrossDimensionReachReportCompatibleFields
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CustomRichMediaEvents: Represents a Custom Rich Media Events group.
+type CustomRichMediaEvents struct {
+	// FilteredEventIds: List of custom rich media event IDs. Dimension
+	// values must be all of type dfa:richMediaEventTypeIdAndName.
+	FilteredEventIds []*DimensionValue `json:"filteredEventIds,omitempty"`
+
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#customRichMediaEvents.
+	Kind string `json:"kind,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FilteredEventIds") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CustomRichMediaEvents) MarshalJSON() ([]byte, error) {
+	type noMethod CustomRichMediaEvents
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DateRange: Represents a date range.
+type DateRange struct {
+	// EndDate: The end date of the date range, inclusive. A string of the
+	// format: "yyyy-MM-dd".
+	EndDate string `json:"endDate,omitempty"`
+
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#dateRange.
+	Kind string `json:"kind,omitempty"`
+
+	// RelativeDateRange: The date range relative to the date of when the
+	// report is run.
+	//
+	// Possible values:
+	//   "LAST_24_MONTHS"
+	//   "LAST_30_DAYS"
+	//   "LAST_365_DAYS"
+	//   "LAST_7_DAYS"
+	//   "LAST_90_DAYS"
+	//   "MONTH_TO_DATE"
+	//   "PREVIOUS_MONTH"
+	//   "PREVIOUS_QUARTER"
+	//   "PREVIOUS_WEEK"
+	//   "PREVIOUS_YEAR"
+	//   "QUARTER_TO_DATE"
+	//   "TODAY"
+	//   "WEEK_TO_DATE"
+	//   "YEAR_TO_DATE"
+	//   "YESTERDAY"
+	RelativeDateRange string `json:"relativeDateRange,omitempty"`
+
+	// StartDate: The start date of the date range, inclusive. A string of
+	// the format: "yyyy-MM-dd".
+	StartDate string `json:"startDate,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "EndDate") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DateRange) MarshalJSON() ([]byte, error) {
+	type noMethod DateRange
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DayPartTargeting: Day Part Targeting.
+type DayPartTargeting struct {
+	// DaysOfWeek: Days of the week when the ad will serve.
+	//
+	// Acceptable values are:
+	// - "SUNDAY"
+	// - "MONDAY"
+	// - "TUESDAY"
+	// - "WEDNESDAY"
+	// - "THURSDAY"
+	// - "FRIDAY"
+	// - "SATURDAY"
+	//
+	// Possible values:
+	//   "FRIDAY"
+	//   "MONDAY"
+	//   "SATURDAY"
+	//   "SUNDAY"
+	//   "THURSDAY"
+	//   "TUESDAY"
+	//   "WEDNESDAY"
+	DaysOfWeek []string `json:"daysOfWeek,omitempty"`
+
+	// HoursOfDay: Hours of the day when the ad will serve. Must be an
+	// integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM,
+	// and 23 is 11 PM to midnight. Can be specified with days of week, in
+	// which case the ad would serve during these hours on the specified
+	// days. For example, if Monday, Wednesday, Friday are the days of week
+	// specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the
+	// ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+	HoursOfDay []int64 `json:"hoursOfDay,omitempty"`
+
+	// UserLocalTime: Whether or not to use the user's local time. If false,
+	// the America/New York time zone applies.
+	UserLocalTime bool `json:"userLocalTime,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DaysOfWeek") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DayPartTargeting) MarshalJSON() ([]byte, error) {
+	type noMethod DayPartTargeting
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DefaultClickThroughEventTagProperties: Properties of inheriting and
+// overriding the default click-through event tag. A campaign may
+// override the event tag defined at the advertiser level, and an ad may
+// also override the campaign's setting further.
+type DefaultClickThroughEventTagProperties struct {
+	// DefaultClickThroughEventTagId: ID of the click-through event tag to
+	// apply to all ads in this entity's scope.
+	DefaultClickThroughEventTagId int64 `json:"defaultClickThroughEventTagId,omitempty,string"`
+
+	// OverrideInheritedEventTag: Whether this entity should override the
+	// inherited default click-through event tag with its own defined value.
+	OverrideInheritedEventTag bool `json:"overrideInheritedEventTag,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "DefaultClickThroughEventTagId") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DefaultClickThroughEventTagProperties) MarshalJSON() ([]byte, error) {
+	type noMethod DefaultClickThroughEventTagProperties
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DeliverySchedule: Delivery Schedule.
+type DeliverySchedule struct {
+	// FrequencyCap: Limit on the number of times an individual user can be
+	// served the ad within a specified period of time.
+	FrequencyCap *FrequencyCap `json:"frequencyCap,omitempty"`
+
+	// HardCutoff: Whether or not hard cutoff is enabled. If true, the ad
+	// will not serve after the end date and time. Otherwise the ad will
+	// continue to be served until it has reached its delivery goals.
+	HardCutoff bool `json:"hardCutoff,omitempty"`
+
+	// ImpressionRatio: Impression ratio for this ad. This ratio determines
+	// how often each ad is served relative to the others. For example, if
+	// ad A has an impression ratio of 1 and ad B has an impression ratio of
+	// 3, then DCM will serve ad B three times as often as ad A. Must be
+	// between 1 and 10.
+	ImpressionRatio int64 `json:"impressionRatio,omitempty,string"`
+
+	// Priority: Serving priority of an ad, with respect to other ads. The
+	// lower the priority number, the greater the priority with which it is
+	// served.
+	//
+	// Possible values:
+	//   "AD_PRIORITY_01"
+	//   "AD_PRIORITY_02"
+	//   "AD_PRIORITY_03"
+	//   "AD_PRIORITY_04"
+	//   "AD_PRIORITY_05"
+	//   "AD_PRIORITY_06"
+	//   "AD_PRIORITY_07"
+	//   "AD_PRIORITY_08"
+	//   "AD_PRIORITY_09"
+	//   "AD_PRIORITY_10"
+	//   "AD_PRIORITY_11"
+	//   "AD_PRIORITY_12"
+	//   "AD_PRIORITY_13"
+	//   "AD_PRIORITY_14"
+	//   "AD_PRIORITY_15"
+	//   "AD_PRIORITY_16"
+	Priority string `json:"priority,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FrequencyCap") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DeliverySchedule) MarshalJSON() ([]byte, error) {
+	type noMethod DeliverySchedule
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DfpSettings: DFP Settings
+type DfpSettings struct {
+	// DfpNetworkCode: DFP network code for this directory site.
+	DfpNetworkCode string `json:"dfp_network_code,omitempty"`
+
+	// DfpNetworkName: DFP network name for this directory site.
+	DfpNetworkName string `json:"dfp_network_name,omitempty"`
+
+	// ProgrammaticPlacementAccepted: Whether this directory site accepts
+	// programmatic placements.
+	ProgrammaticPlacementAccepted bool `json:"programmaticPlacementAccepted,omitempty"`
+
+	// PubPaidPlacementAccepted: Whether this directory site accepts
+	// publisher-paid tags.
+	PubPaidPlacementAccepted bool `json:"pubPaidPlacementAccepted,omitempty"`
+
+	// PublisherPortalOnly: Whether this directory site is available only
+	// via DoubleClick Publisher Portal.
+	PublisherPortalOnly bool `json:"publisherPortalOnly,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DfpNetworkCode") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DfpSettings) MarshalJSON() ([]byte, error) {
+	type noMethod DfpSettings
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Dimension: Represents a dimension.
+type Dimension struct {
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#dimension.
+	Kind string `json:"kind,omitempty"`
+
+	// Name: The dimension name, e.g. dfa:advertiser
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Dimension) MarshalJSON() ([]byte, error) {
+	type noMethod Dimension
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DimensionFilter: Represents a dimension filter.
+type DimensionFilter struct {
+	// DimensionName: The name of the dimension to filter.
+	DimensionName string `json:"dimensionName,omitempty"`
+
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#dimensionFilter.
+	Kind string `json:"kind,omitempty"`
+
+	// Value: The value of the dimension to filter.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DimensionName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DimensionFilter) MarshalJSON() ([]byte, error) {
+	type noMethod DimensionFilter
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DimensionValue: Represents a DimensionValue resource.
+type DimensionValue struct {
+	// DimensionName: The name of the dimension.
+	DimensionName string `json:"dimensionName,omitempty"`
+
+	// Etag: The eTag of this response for caching purposes.
+	Etag string `json:"etag,omitempty"`
+
+	// Id: The ID associated with the value if available.
+	Id string `json:"id,omitempty"`
+
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#dimensionValue.
+	Kind string `json:"kind,omitempty"`
+
+	// MatchType: Determines how the 'value' field is matched when
+	// filtering. If not specified, defaults to EXACT. If set to
+	// WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable
+	// length character sequences, and it can be escaped with a backslash.
+	// Note, only paid search dimensions ('dfa:paidSearch*') allow a
+	// matchType other than EXACT.
+	//
+	// Possible values:
+	//   "BEGINS_WITH"
+	//   "CONTAINS"
+	//   "EXACT"
+	//   "WILDCARD_EXPRESSION"
+	MatchType string `json:"matchType,omitempty"`
+
+	// Value: The value of the dimension.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DimensionName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DimensionValue) MarshalJSON() ([]byte, error) {
+	type noMethod DimensionValue
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DimensionValueList: Represents the list of DimensionValue resources.
+type DimensionValueList struct {
+	// Etag: The eTag of this response for caching purposes.
+	Etag string `json:"etag,omitempty"`
+
+	// Items: The dimension values returned in this response.
+	Items []*DimensionValue `json:"items,omitempty"`
+
+	// Kind: The kind of list this is, in this case
+	// dfareporting#dimensionValueList.
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Continuation token used to page through dimension
+	// values. To retrieve the next page of results, set the next request's
+	// "pageToken" to the value of this field. The page token is only valid
+	// for a limited amount of time and should not be persisted.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Etag") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DimensionValueList) MarshalJSON() ([]byte, error) {
+	type noMethod DimensionValueList
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DimensionValueRequest: Represents a DimensionValuesRequest.
+type DimensionValueRequest struct {
+	// DimensionName: The name of the dimension for which values should be
+	// requested.
+	DimensionName string `json:"dimensionName,omitempty"`
+
+	// EndDate: The end date of the date range for which to retrieve
+	// dimension values. A string of the format "yyyy-MM-dd".
+	EndDate string `json:"endDate,omitempty"`
+
+	// Filters: The list of filters by which to filter values. The filters
+	// are ANDed.
+	Filters []*DimensionFilter `json:"filters,omitempty"`
+
+	// Kind: The kind of request this is, in this case
+	// dfareporting#dimensionValueRequest.
+	Kind string `json:"kind,omitempty"`
+
+	// StartDate: The start date of the date range for which to retrieve
+	// dimension values. A string of the format "yyyy-MM-dd".
+	StartDate string `json:"startDate,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DimensionName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DimensionValueRequest) MarshalJSON() ([]byte, error) {
+	type noMethod DimensionValueRequest
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DirectorySite: DirectorySites contains properties of a website from
+// the Site Directory. Sites need to be added to an account via the
+// Sites resource before they can be assigned to a placement.
+type DirectorySite struct {
+	// Active: Whether this directory site is active.
+	Active bool `json:"active,omitempty"`
+
+	// ContactAssignments: Directory site contacts.
+	ContactAssignments []*DirectorySiteContactAssignment `json:"contactAssignments,omitempty"`
+
+	// CountryId: Country ID of this directory site.
+	CountryId int64 `json:"countryId,omitempty,string"`
+
+	// CurrencyId: Currency ID of this directory site.
+	// Possible values are:
+	// - "1" for USD
+	// - "2" for GBP
+	// - "3" for ESP
+	// - "4" for SEK
+	// - "5" for CAD
+	// - "6" for JPY
+	// - "7" for DEM
+	// - "8" for AUD
+	// - "9" for FRF
+	// - "10" for ITL
+	// - "11" for DKK
+	// - "12" for NOK
+	// - "13" for FIM
+	// - "14" for ZAR
+	// - "15" for IEP
+	// - "16" for NLG
+	// - "17" for EUR
+	// - "18" for KRW
+	// - "19" for TWD
+	// - "20" for SGD
+	// - "21" for CNY
+	// - "22" for HKD
+	// - "23" for NZD
+	// - "24" for MYR
+	// - "25" for BRL
+	// - "26" for PTE
+	// - "27" for MXP
+	// - "28" for CLP
+	// - "29" for TRY
+	// - "30" for ARS
+	// - "31" for PEN
+	// - "32" for ILS
+	// - "33" for CHF
+	// - "34" for VEF
+	// - "35" for COP
+	// - "36" for GTQ
+	// - "37" for PLN
+	// - "39" for INR
+	// - "40" for THB
+	// - "41" for IDR
+	// - "42" for CZK
+	// - "43" for RON
+	// - "44" for HUF
+	// - "45" for RUB
+	// - "46" for AED
+	// - "47" for BGN
+	// - "48" for HRK
+	CurrencyId int64 `json:"currencyId,omitempty,string"`
+
+	// Description: Description of this directory site.
+	Description string `json:"description,omitempty"`
+
+	// Id: ID of this directory site. This is a read-only, auto-generated
+	// field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// IdDimensionValue: Dimension value for the ID of this directory site.
+	// This is a read-only, auto-generated field.
+	IdDimensionValue *DimensionValue `json:"idDimensionValue,omitempty"`
+
+	// InpageTagFormats: Tag types for regular placements.
+	//
+	// Acceptable values are:
+	// - "STANDARD"
+	// - "IFRAME_JAVASCRIPT_INPAGE"
+	// - "INTERNAL_REDIRECT_INPAGE"
+	// - "JAVASCRIPT_INPAGE"
+	//
+	// Possible values:
+	//   "IFRAME_JAVASCRIPT_INPAGE"
+	//   "INTERNAL_REDIRECT_INPAGE"
+	//   "JAVASCRIPT_INPAGE"
+	//   "STANDARD"
+	InpageTagFormats []string `json:"inpageTagFormats,omitempty"`
+
+	// InterstitialTagFormats: Tag types for interstitial
+	// placements.
+	//
+	// Acceptable values are:
+	// - "IFRAME_JAVASCRIPT_INTERSTITIAL"
+	// - "INTERNAL_REDIRECT_INTERSTITIAL"
+	// - "JAVASCRIPT_INTERSTITIAL"
+	//
+	// Possible values:
+	//   "IFRAME_JAVASCRIPT_INTERSTITIAL"
+	//   "INTERNAL_REDIRECT_INTERSTITIAL"
+	//   "JAVASCRIPT_INTERSTITIAL"
+	InterstitialTagFormats []string `json:"interstitialTagFormats,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#directorySite".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this directory site.
+	Name string `json:"name,omitempty"`
+
+	// ParentId: Parent directory site ID.
+	ParentId int64 `json:"parentId,omitempty,string"`
+
+	// Settings: Directory site settings.
+	Settings *DirectorySiteSettings `json:"settings,omitempty"`
+
+	// Url: URL of this directory site.
+	Url string `json:"url,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Active") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DirectorySite) MarshalJSON() ([]byte, error) {
+	type noMethod DirectorySite
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DirectorySiteContact: Contains properties of a Site Directory
+// contact.
+type DirectorySiteContact struct {
+	// Address: Address of this directory site contact.
+	Address string `json:"address,omitempty"`
+
+	// Email: Email address of this directory site contact.
+	Email string `json:"email,omitempty"`
+
+	// FirstName: First name of this directory site contact.
+	FirstName string `json:"firstName,omitempty"`
+
+	// Id: ID of this directory site contact. This is a read-only,
+	// auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#directorySiteContact".
+	Kind string `json:"kind,omitempty"`
+
+	// LastName: Last name of this directory site contact.
+	LastName string `json:"lastName,omitempty"`
+
+	// Phone: Phone number of this directory site contact.
+	Phone string `json:"phone,omitempty"`
+
+	// Role: Directory site contact role.
+	//
+	// Possible values:
+	//   "ADMIN"
+	//   "EDIT"
+	//   "VIEW"
+	Role string `json:"role,omitempty"`
+
+	// Title: Title or designation of this directory site contact.
+	Title string `json:"title,omitempty"`
+
+	// Type: Directory site contact type.
+	//
+	// Possible values:
+	//   "BILLING"
+	//   "OTHER"
+	//   "SALES"
+	//   "TECHNICAL"
+	Type string `json:"type,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Address") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DirectorySiteContact) MarshalJSON() ([]byte, error) {
+	type noMethod DirectorySiteContact
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DirectorySiteContactAssignment: Directory Site Contact Assignment
+type DirectorySiteContactAssignment struct {
+	// ContactId: ID of this directory site contact. This is a read-only,
+	// auto-generated field.
+	ContactId int64 `json:"contactId,omitempty,string"`
+
+	// Visibility: Visibility of this directory site contact assignment.
+	// When set to PUBLIC this contact assignment is visible to all account
+	// and agency users; when set to PRIVATE it is visible only to the site.
+	//
+	// Possible values:
+	//   "PRIVATE"
+	//   "PUBLIC"
+	Visibility string `json:"visibility,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ContactId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DirectorySiteContactAssignment) MarshalJSON() ([]byte, error) {
+	type noMethod DirectorySiteContactAssignment
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DirectorySiteContactsListResponse: Directory Site Contact List
+// Response
+type DirectorySiteContactsListResponse struct {
+	// DirectorySiteContacts: Directory site contact collection
+	DirectorySiteContacts []*DirectorySiteContact `json:"directorySiteContacts,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#directorySiteContactsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "DirectorySiteContacts") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DirectorySiteContactsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod DirectorySiteContactsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DirectorySiteSettings: Directory Site Settings
+type DirectorySiteSettings struct {
+	// ActiveViewOptOut: Whether this directory site has disabled active
+	// view creatives.
+	ActiveViewOptOut bool `json:"activeViewOptOut,omitempty"`
+
+	// DfpSettings: Directory site DFP settings.
+	DfpSettings *DfpSettings `json:"dfp_settings,omitempty"`
+
+	// InstreamVideoPlacementAccepted: Whether this site accepts in-stream
+	// video ads.
+	InstreamVideoPlacementAccepted bool `json:"instream_video_placement_accepted,omitempty"`
+
+	// InterstitialPlacementAccepted: Whether this site accepts interstitial
+	// ads.
+	InterstitialPlacementAccepted bool `json:"interstitialPlacementAccepted,omitempty"`
+
+	// NielsenOcrOptOut: Whether this directory site has disabled Nielsen
+	// OCR reach ratings.
+	NielsenOcrOptOut bool `json:"nielsenOcrOptOut,omitempty"`
+
+	// VerificationTagOptOut: Whether this directory site has disabled
+	// generation of Verification ins tags.
+	VerificationTagOptOut bool `json:"verificationTagOptOut,omitempty"`
+
+	// VideoActiveViewOptOut: Whether this directory site has disabled
+	// active view for in-stream video creatives.
+	VideoActiveViewOptOut bool `json:"videoActiveViewOptOut,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActiveViewOptOut") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DirectorySiteSettings) MarshalJSON() ([]byte, error) {
+	type noMethod DirectorySiteSettings
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DirectorySitesListResponse: Directory Site List Response
+type DirectorySitesListResponse struct {
+	// DirectorySites: Directory site collection.
+	DirectorySites []*DirectorySite `json:"directorySites,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#directorySitesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "DirectorySites") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *DirectorySitesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod DirectorySitesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// EventTag: Contains properties of an event tag.
+type EventTag struct {
+	// AccountId: Account ID of this event tag. This is a read-only field
+	// that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AdvertiserId: Advertiser ID of this event tag. This field or the
+	// campaignId field is required on insertion.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AdvertiserIdDimensionValue: Dimension value for the ID of the
+	// advertiser. This is a read-only, auto-generated field.
+	AdvertiserIdDimensionValue *DimensionValue `json:"advertiserIdDimensionValue,omitempty"`
+
+	// CampaignId: Campaign ID of this event tag. This field or the
+	// advertiserId field is required on insertion.
+	CampaignId int64 `json:"campaignId,omitempty,string"`
+
+	// CampaignIdDimensionValue: Dimension value for the ID of the campaign.
+	// This is a read-only, auto-generated field.
+	CampaignIdDimensionValue *DimensionValue `json:"campaignIdDimensionValue,omitempty"`
+
+	// EnabledByDefault: Whether this event tag should be automatically
+	// enabled for all of the advertiser's campaigns and ads.
+	EnabledByDefault bool `json:"enabledByDefault,omitempty"`
+
+	// ExcludeFromAdxRequests: Whether to remove this event tag from ads
+	// that are trafficked through DoubleClick Bid Manager to Ad Exchange.
+	// This may be useful if the event tag uses a pixel that is unapproved
+	// for Ad Exchange bids on one or more networks, such as the Google
+	// Display Network.
+	ExcludeFromAdxRequests bool `json:"excludeFromAdxRequests,omitempty"`
+
+	// Id: ID of this event tag. This is a read-only, auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#eventTag".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this event tag. This is a required field and must be
+	// less than 256 characters long.
+	Name string `json:"name,omitempty"`
+
+	// SiteFilterType: Site filter type for this event tag. If no type is
+	// specified then the event tag will be applied to all sites.
+	//
+	// Possible values:
+	//   "BLACKLIST"
+	//   "WHITELIST"
+	SiteFilterType string `json:"siteFilterType,omitempty"`
+
+	// SiteIds: Filter list of site IDs associated with this event tag. The
+	// siteFilterType determines whether this is a whitelist or blacklist
+	// filter.
+	SiteIds googleapi.Int64s `json:"siteIds,omitempty"`
+
+	// SslCompliant: Whether this tag is SSL-compliant or not. This is a
+	// read-only field.
+	SslCompliant bool `json:"sslCompliant,omitempty"`
+
+	// Status: Status of this event tag. Must be ENABLED for this event tag
+	// to fire. This is a required field.
+	//
+	// Possible values:
+	//   "DISABLED"
+	//   "ENABLED"
+	Status string `json:"status,omitempty"`
+
+	// SubaccountId: Subaccount ID of this event tag. This is a read-only
+	// field that can be left blank.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// Type: Event tag type. Can be used to specify whether to use a
+	// third-party pixel, a third-party JavaScript URL, or a third-party
+	// click-through URL for either impression or click tracking. This is a
+	// required field.
+	//
+	// Possible values:
+	//   "CLICK_THROUGH_EVENT_TAG"
+	//   "IMPRESSION_IMAGE_EVENT_TAG"
+	//   "IMPRESSION_JAVASCRIPT_EVENT_TAG"
+	Type string `json:"type,omitempty"`
+
+	// Url: Payload URL for this event tag. The URL on a click-through event
+	// tag should have a landing page URL appended to the end of it. This
+	// field is required on insertion.
+	Url string `json:"url,omitempty"`
+
+	// UrlEscapeLevels: Number of times the landing page URL should be
+	// URL-escaped before being appended to the click-through event tag URL.
+	// Only applies to click-through event tags as specified by the event
+	// tag type.
+	UrlEscapeLevels int64 `json:"urlEscapeLevels,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *EventTag) MarshalJSON() ([]byte, error) {
+	type noMethod EventTag
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// EventTagOverride: Event tag override information.
+type EventTagOverride struct {
+	// Enabled: Whether this override is enabled.
+	Enabled bool `json:"enabled,omitempty"`
+
+	// Id: ID of this event tag override. This is a read-only,
+	// auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Enabled") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *EventTagOverride) MarshalJSON() ([]byte, error) {
+	type noMethod EventTagOverride
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// EventTagsListResponse: Event Tag List Response
+type EventTagsListResponse struct {
+	// EventTags: Event tag collection.
+	EventTags []*EventTag `json:"eventTags,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#eventTagsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "EventTags") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *EventTagsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod EventTagsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// File: Represents a File resource. A file contains the metadata for a
+// report run. It shows the status of the run and holds the URLs to the
+// generated report data if the run is finished and the status is
+// "REPORT_AVAILABLE".
+type File struct {
+	// DateRange: The date range for which the file has report data. The
+	// date range will always be the absolute date range for which the
+	// report is run.
+	DateRange *DateRange `json:"dateRange,omitempty"`
+
+	// Etag: The eTag of this response for caching purposes.
+	Etag string `json:"etag,omitempty"`
+
+	// FileName: The filename of the file.
+	FileName string `json:"fileName,omitempty"`
+
+	// Format: The output format of the report. Only available once the file
+	// is available.
+	//
+	// Possible values:
+	//   "CSV"
+	//   "EXCEL"
+	Format string `json:"format,omitempty"`
+
+	// Id: The unique ID of this report file.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: The kind of resource this is, in this case dfareporting#file.
+	Kind string `json:"kind,omitempty"`
+
+	// LastModifiedTime: The timestamp in milliseconds since epoch when this
+	// file was last modified.
+	LastModifiedTime int64 `json:"lastModifiedTime,omitempty,string"`
+
+	// ReportId: The ID of the report this file was generated from.
+	ReportId int64 `json:"reportId,omitempty,string"`
+
+	// Status: The status of the report file.
+	//
+	// Possible values:
+	//   "CANCELLED"
+	//   "FAILED"
+	//   "PROCESSING"
+	//   "REPORT_AVAILABLE"
+	Status string `json:"status,omitempty"`
+
+	// Urls: The URLs where the completed report file can be downloaded.
+	Urls *FileUrls `json:"urls,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "DateRange") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *File) MarshalJSON() ([]byte, error) {
+	type noMethod File
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FileUrls: The URLs where the completed report file can be downloaded.
+type FileUrls struct {
+	// ApiUrl: The URL for downloading the report data through the API.
+	ApiUrl string `json:"apiUrl,omitempty"`
+
+	// BrowserUrl: The URL for downloading the report data through a
+	// browser.
+	BrowserUrl string `json:"browserUrl,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ApiUrl") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FileUrls) MarshalJSON() ([]byte, error) {
+	type noMethod FileUrls
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FileList: Represents the list of File resources.
+type FileList struct {
+	// Etag: The eTag of this response for caching purposes.
+	Etag string `json:"etag,omitempty"`
+
+	// Items: The files returned in this response.
+	Items []*File `json:"items,omitempty"`
+
+	// Kind: The kind of list this is, in this case dfareporting#fileList.
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Continuation token used to page through files. To
+	// retrieve the next page of results, set the next request's "pageToken"
+	// to the value of this field. The page token is only valid for a
+	// limited amount of time and should not be persisted.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Etag") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FileList) MarshalJSON() ([]byte, error) {
+	type noMethod FileList
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Flight: Flight
+type Flight struct {
+	// EndDate: Inventory item flight end date.
+	EndDate string `json:"endDate,omitempty"`
+
+	// RateOrCost: Rate or cost of this flight.
+	RateOrCost int64 `json:"rateOrCost,omitempty,string"`
+
+	// StartDate: Inventory item flight start date.
+	StartDate string `json:"startDate,omitempty"`
+
+	// Units: Units of this flight.
+	Units int64 `json:"units,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "EndDate") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Flight) MarshalJSON() ([]byte, error) {
+	type noMethod Flight
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FloodlightActivitiesGenerateTagResponse: Floodlight Activity
+// GenerateTag Response
+type FloodlightActivitiesGenerateTagResponse struct {
+	// FloodlightActivityTag: Generated tag for this floodlight activity.
+	FloodlightActivityTag string `json:"floodlightActivityTag,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#floodlightActivitiesGenerateTagResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "FloodlightActivityTag") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FloodlightActivitiesGenerateTagResponse) MarshalJSON() ([]byte, error) {
+	type noMethod FloodlightActivitiesGenerateTagResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FloodlightActivitiesListResponse: Floodlight Activity List Response
+type FloodlightActivitiesListResponse struct {
+	// FloodlightActivities: Floodlight activity collection.
+	FloodlightActivities []*FloodlightActivity `json:"floodlightActivities,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#floodlightActivitiesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "FloodlightActivities") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FloodlightActivitiesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod FloodlightActivitiesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FloodlightActivity: Contains properties of a Floodlight activity.
+type FloodlightActivity struct {
+	// AccountId: Account ID of this floodlight activity. This is a
+	// read-only field that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AdvertiserId: Advertiser ID of this floodlight activity. If this
+	// field is left blank, the value will be copied over either from the
+	// activity group's advertiser or the existing activity's advertiser.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AdvertiserIdDimensionValue: Dimension value for the ID of the
+	// advertiser. This is a read-only, auto-generated field.
+	AdvertiserIdDimensionValue *DimensionValue `json:"advertiserIdDimensionValue,omitempty"`
+
+	// CacheBustingType: Code type used for cache busting in the generated
+	// tag.
+	//
+	// Possible values:
+	//   "ACTIVE_SERVER_PAGE"
+	//   "COLD_FUSION"
+	//   "JAVASCRIPT"
+	//   "JSP"
+	//   "PHP"
+	CacheBustingType string `json:"cacheBustingType,omitempty"`
+
+	// CountingMethod: Counting method for conversions for this floodlight
+	// activity. This is a required field.
+	//
+	// Possible values:
+	//   "ITEMS_SOLD_COUNTING"
+	//   "SESSION_COUNTING"
+	//   "STANDARD_COUNTING"
+	//   "TRANSACTIONS_COUNTING"
+	//   "UNIQUE_COUNTING"
+	CountingMethod string `json:"countingMethod,omitempty"`
+
+	// DefaultTags: Dynamic floodlight tags.
+	DefaultTags []*FloodlightActivityDynamicTag `json:"defaultTags,omitempty"`
+
+	// ExpectedUrl: URL where this tag will be deployed. If specified, must
+	// be less than 256 characters long.
+	ExpectedUrl string `json:"expectedUrl,omitempty"`
+
+	// FloodlightActivityGroupId: Floodlight activity group ID of this
+	// floodlight activity. This is a required field.
+	FloodlightActivityGroupId int64 `json:"floodlightActivityGroupId,omitempty,string"`
+
+	// FloodlightActivityGroupName: Name of the associated floodlight
+	// activity group. This is a read-only field.
+	FloodlightActivityGroupName string `json:"floodlightActivityGroupName,omitempty"`
+
+	// FloodlightActivityGroupTagString: Tag string of the associated
+	// floodlight activity group. This is a read-only field.
+	FloodlightActivityGroupTagString string `json:"floodlightActivityGroupTagString,omitempty"`
+
+	// FloodlightActivityGroupType: Type of the associated floodlight
+	// activity group. This is a read-only field.
+	//
+	// Possible values:
+	//   "COUNTER"
+	//   "SALE"
+	FloodlightActivityGroupType string `json:"floodlightActivityGroupType,omitempty"`
+
+	// FloodlightConfigurationId: Floodlight configuration ID of this
+	// floodlight activity. If this field is left blank, the value will be
+	// copied over either from the activity group's floodlight configuration
+	// or from the existing activity's floodlight configuration.
+	FloodlightConfigurationId int64 `json:"floodlightConfigurationId,omitempty,string"`
+
+	// FloodlightConfigurationIdDimensionValue: Dimension value for the ID
+	// of the floodlight configuration. This is a read-only, auto-generated
+	// field.
+	FloodlightConfigurationIdDimensionValue *DimensionValue `json:"floodlightConfigurationIdDimensionValue,omitempty"`
+
+	// Hidden: Whether this activity is archived.
+	Hidden bool `json:"hidden,omitempty"`
+
+	// Id: ID of this floodlight activity. This is a read-only,
+	// auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// IdDimensionValue: Dimension value for the ID of this floodlight
+	// activity. This is a read-only, auto-generated field.
+	IdDimensionValue *DimensionValue `json:"idDimensionValue,omitempty"`
+
+	// ImageTagEnabled: Whether the image tag is enabled for this activity.
+	ImageTagEnabled bool `json:"imageTagEnabled,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#floodlightActivity".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this floodlight activity. This is a required field.
+	// Must be less than 129 characters long and cannot contain quotes.
+	Name string `json:"name,omitempty"`
+
+	// Notes: General notes or implementation instructions for the tag.
+	Notes string `json:"notes,omitempty"`
+
+	// PublisherTags: Publisher dynamic floodlight tags.
+	PublisherTags []*FloodlightActivityPublisherDynamicTag `json:"publisherTags,omitempty"`
+
+	// Secure: Whether this tag should use SSL.
+	Secure bool `json:"secure,omitempty"`
+
+	// SslCompliant: Whether the floodlight activity is SSL-compliant. This
+	// is a read-only field, its value detected by the system from the
+	// floodlight tags.
+	SslCompliant bool `json:"sslCompliant,omitempty"`
+
+	// SslRequired: Whether this floodlight activity must be SSL-compliant.
+	SslRequired bool `json:"sslRequired,omitempty"`
+
+	// SubaccountId: Subaccount ID of this floodlight activity. This is a
+	// read-only field that can be left blank.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// TagFormat: Tag format type for the floodlight activity. If left
+	// blank, the tag format will default to HTML.
+	//
+	// Possible values:
+	//   "HTML"
+	//   "XHTML"
+	TagFormat string `json:"tagFormat,omitempty"`
+
+	// TagString: Value of the cat= paramter in the floodlight tag, which
+	// the ad servers use to identify the activity. This is optional: if
+	// empty, a new tag string will be generated for you. This string must
+	// be 1 to 8 characters long, with valid characters being
+	// [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among
+	// activities of the same activity group. This field is read-only after
+	// insertion.
+	TagString string `json:"tagString,omitempty"`
+
+	// UserDefinedVariableTypes: List of the user-defined variables used by
+	// this conversion tag. These map to the "u[1-20]=" in the tags. Each of
+	// these can have a user defined type.
+	// Acceptable values are:
+	// - "U1"
+	// - "U2"
+	// - "U3"
+	// - "U4"
+	// - "U5"
+	// - "U6"
+	// - "U7"
+	// - "U8"
+	// - "U9"
+	// - "U10"
+	// - "U11"
+	// - "U12"
+	// - "U13"
+	// - "U14"
+	// - "U15"
+	// - "U16"
+	// - "U17"
+	// - "U18"
+	// - "U19"
+	// - "U20"
+	//
+	// Possible values:
+	//   "U1"
+	//   "U10"
+	//   "U11"
+	//   "U12"
+	//   "U13"
+	//   "U14"
+	//   "U15"
+	//   "U16"
+	//   "U17"
+	//   "U18"
+	//   "U19"
+	//   "U2"
+	//   "U20"
+	//   "U3"
+	//   "U4"
+	//   "U5"
+	//   "U6"
+	//   "U7"
+	//   "U8"
+	//   "U9"
+	UserDefinedVariableTypes []string `json:"userDefinedVariableTypes,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FloodlightActivity) MarshalJSON() ([]byte, error) {
+	type noMethod FloodlightActivity
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FloodlightActivityDynamicTag: Dynamic Tag
+type FloodlightActivityDynamicTag struct {
+	// Id: ID of this dynamic tag. This is a read-only, auto-generated
+	// field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Name: Name of this tag.
+	Name string `json:"name,omitempty"`
+
+	// Tag: Tag code.
+	Tag string `json:"tag,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FloodlightActivityDynamicTag) MarshalJSON() ([]byte, error) {
+	type noMethod FloodlightActivityDynamicTag
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FloodlightActivityGroup: Contains properties of a Floodlight activity
+// group.
+type FloodlightActivityGroup struct {
+	// AccountId: Account ID of this floodlight activity group. This is a
+	// read-only field that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AdvertiserId: Advertiser ID of this floodlight activity group. If
+	// this field is left blank, the value will be copied over either from
+	// the floodlight configuration's advertiser or from the existing
+	// activity group's advertiser.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AdvertiserIdDimensionValue: Dimension value for the ID of the
+	// advertiser. This is a read-only, auto-generated field.
+	AdvertiserIdDimensionValue *DimensionValue `json:"advertiserIdDimensionValue,omitempty"`
+
+	// FloodlightConfigurationId: Floodlight configuration ID of this
+	// floodlight activity group. This is a required field.
+	FloodlightConfigurationId int64 `json:"floodlightConfigurationId,omitempty,string"`
+
+	// FloodlightConfigurationIdDimensionValue: Dimension value for the ID
+	// of the floodlight configuration. This is a read-only, auto-generated
+	// field.
+	FloodlightConfigurationIdDimensionValue *DimensionValue `json:"floodlightConfigurationIdDimensionValue,omitempty"`
+
+	// Id: ID of this floodlight activity group. This is a read-only,
+	// auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// IdDimensionValue: Dimension value for the ID of this floodlight
+	// activity group. This is a read-only, auto-generated field.
+	IdDimensionValue *DimensionValue `json:"idDimensionValue,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#floodlightActivityGroup".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this floodlight activity group. This is a required
+	// field. Must be less than 65 characters long and cannot contain
+	// quotes.
+	Name string `json:"name,omitempty"`
+
+	// SubaccountId: Subaccount ID of this floodlight activity group. This
+	// is a read-only field that can be left blank.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// TagString: Value of the type= parameter in the floodlight tag, which
+	// the ad servers use to identify the activity group that the activity
+	// belongs to. This is optional: if empty, a new tag string will be
+	// generated for you. This string must be 1 to 8 characters long, with
+	// valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must
+	// also be unique among activity groups of the same floodlight
+	// configuration. This field is read-only after insertion.
+	TagString string `json:"tagString,omitempty"`
+
+	// Type: Type of the floodlight activity group. This is a required field
+	// that is read-only after insertion.
+	//
+	// Possible values:
+	//   "COUNTER"
+	//   "SALE"
+	Type string `json:"type,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FloodlightActivityGroup) MarshalJSON() ([]byte, error) {
+	type noMethod FloodlightActivityGroup
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FloodlightActivityGroupsListResponse: Floodlight Activity Group List
+// Response
+type FloodlightActivityGroupsListResponse struct {
+	// FloodlightActivityGroups: Floodlight activity group collection.
+	FloodlightActivityGroups []*FloodlightActivityGroup `json:"floodlightActivityGroups,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#floodlightActivityGroupsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "FloodlightActivityGroups") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FloodlightActivityGroupsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod FloodlightActivityGroupsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FloodlightActivityPublisherDynamicTag: Publisher Dynamic Tag
+type FloodlightActivityPublisherDynamicTag struct {
+	// ClickThrough: Whether this tag is applicable only for click-throughs.
+	ClickThrough bool `json:"clickThrough,omitempty"`
+
+	// DirectorySiteId: Directory site ID of this dynamic tag. This is a
+	// write-only field that can be used as an alternative to the siteId
+	// field. When this resource is retrieved, only the siteId field will be
+	// populated.
+	DirectorySiteId int64 `json:"directorySiteId,omitempty,string"`
+
+	// DynamicTag: Dynamic floodlight tag.
+	DynamicTag *FloodlightActivityDynamicTag `json:"dynamicTag,omitempty"`
+
+	// SiteId: Site ID of this dynamic tag.
+	SiteId int64 `json:"siteId,omitempty,string"`
+
+	// SiteIdDimensionValue: Dimension value for the ID of the site. This is
+	// a read-only, auto-generated field.
+	SiteIdDimensionValue *DimensionValue `json:"siteIdDimensionValue,omitempty"`
+
+	// ViewThrough: Whether this tag is applicable only for view-throughs.
+	ViewThrough bool `json:"viewThrough,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ClickThrough") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FloodlightActivityPublisherDynamicTag) MarshalJSON() ([]byte, error) {
+	type noMethod FloodlightActivityPublisherDynamicTag
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FloodlightConfiguration: Contains properties of a Floodlight
+// configuration.
+type FloodlightConfiguration struct {
+	// AccountId: Account ID of this floodlight configuration. This is a
+	// read-only field that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AdvertiserId: Advertiser ID of the parent advertiser of this
+	// floodlight configuration.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AdvertiserIdDimensionValue: Dimension value for the ID of the
+	// advertiser. This is a read-only, auto-generated field.
+	AdvertiserIdDimensionValue *DimensionValue `json:"advertiserIdDimensionValue,omitempty"`
+
+	// AnalyticsDataSharingEnabled: Whether advertiser data is shared with
+	// Google Analytics.
+	AnalyticsDataSharingEnabled bool `json:"analyticsDataSharingEnabled,omitempty"`
+
+	// ExposureToConversionEnabled: Whether the exposure-to-conversion
+	// report is enabled. This report shows detailed pathway information on
+	// up to 10 of the most recent ad exposures seen by a user before
+	// converting.
+	ExposureToConversionEnabled bool `json:"exposureToConversionEnabled,omitempty"`
+
+	// FirstDayOfWeek: Day that will be counted as the first day of the week
+	// in reports. This is a required field.
+	//
+	// Possible values:
+	//   "MONDAY"
+	//   "SUNDAY"
+	FirstDayOfWeek string `json:"firstDayOfWeek,omitempty"`
+
+	// Id: ID of this floodlight configuration. This is a read-only,
+	// auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// IdDimensionValue: Dimension value for the ID of this floodlight
+	// configuration. This is a read-only, auto-generated field.
+	IdDimensionValue *DimensionValue `json:"idDimensionValue,omitempty"`
+
+	// InAppAttributionTrackingEnabled: Whether in-app attribution tracking
+	// is enabled.
+	InAppAttributionTrackingEnabled bool `json:"inAppAttributionTrackingEnabled,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#floodlightConfiguration".
+	Kind string `json:"kind,omitempty"`
+
+	// LookbackConfiguration: Lookback window settings for this floodlight
+	// configuration.
+	LookbackConfiguration *LookbackConfiguration `json:"lookbackConfiguration,omitempty"`
+
+	// NaturalSearchConversionAttributionOption: Types of attribution
+	// options for natural search conversions.
+	//
+	// Possible values:
+	//   "EXCLUDE_NATURAL_SEARCH_CONVERSION_ATTRIBUTION"
+	//   "INCLUDE_NATURAL_SEARCH_CONVERSION_ATTRIBUTION"
+	//   "INCLUDE_NATURAL_SEARCH_TIERED_CONVERSION_ATTRIBUTION"
+	NaturalSearchConversionAttributionOption string `json:"naturalSearchConversionAttributionOption,omitempty"`
+
+	// OmnitureSettings: Settings for DCM Omniture integration.
+	OmnitureSettings *OmnitureSettings `json:"omnitureSettings,omitempty"`
+
+	// StandardVariableTypes: List of standard variables enabled for this
+	// configuration.
+	//
+	// Acceptable values are:
+	// - "ORD"
+	// - "NUM"
+	//
+	// Possible values:
+	//   "NUM"
+	//   "ORD"
+	//   "TRAN"
+	//   "U"
+	StandardVariableTypes []string `json:"standardVariableTypes,omitempty"`
+
+	// SubaccountId: Subaccount ID of this floodlight configuration. This is
+	// a read-only field that can be left blank.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// TagSettings: Configuration settings for dynamic and image floodlight
+	// tags.
+	TagSettings *TagSettings `json:"tagSettings,omitempty"`
+
+	// ThirdPartyAuthenticationTokens: List of third-party authentication
+	// tokens enabled for this configuration.
+	ThirdPartyAuthenticationTokens []*ThirdPartyAuthenticationToken `json:"thirdPartyAuthenticationTokens,omitempty"`
+
+	// UserDefinedVariableConfigurations: List of user defined variables
+	// enabled for this configuration.
+	UserDefinedVariableConfigurations []*UserDefinedVariableConfiguration `json:"userDefinedVariableConfigurations,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FloodlightConfiguration) MarshalJSON() ([]byte, error) {
+	type noMethod FloodlightConfiguration
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FloodlightConfigurationsListResponse: Floodlight Configuration List
+// Response
+type FloodlightConfigurationsListResponse struct {
+	// FloodlightConfigurations: Floodlight configuration collection.
+	FloodlightConfigurations []*FloodlightConfiguration `json:"floodlightConfigurations,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#floodlightConfigurationsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "FloodlightConfigurations") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FloodlightConfigurationsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod FloodlightConfigurationsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FloodlightReportCompatibleFields: Represents fields that are
+// compatible to be selected for a report of type "FlOODLIGHT".
+type FloodlightReportCompatibleFields struct {
+	// DimensionFilters: Dimensions which are compatible to be selected in
+	// the "dimensionFilters" section of the report.
+	DimensionFilters []*Dimension `json:"dimensionFilters,omitempty"`
+
+	// Dimensions: Dimensions which are compatible to be selected in the
+	// "dimensions" section of the report.
+	Dimensions []*Dimension `json:"dimensions,omitempty"`
+
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#floodlightReportCompatibleFields.
+	Kind string `json:"kind,omitempty"`
+
+	// Metrics: Metrics which are compatible to be selected in the
+	// "metricNames" section of the report.
+	Metrics []*Metric `json:"metrics,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DimensionFilters") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FloodlightReportCompatibleFields) MarshalJSON() ([]byte, error) {
+	type noMethod FloodlightReportCompatibleFields
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FrequencyCap: Frequency Cap.
+type FrequencyCap struct {
+	// Duration: Duration of time, in seconds, for this frequency cap. The
+	// maximum duration is 90 days in seconds, or 7,776,000.
+	Duration int64 `json:"duration,omitempty,string"`
+
+	// Impressions: Number of times an individual user can be served the ad
+	// within the specified duration. The maximum allowed is 15.
+	Impressions int64 `json:"impressions,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Duration") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FrequencyCap) MarshalJSON() ([]byte, error) {
+	type noMethod FrequencyCap
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FsCommand: FsCommand.
+type FsCommand struct {
+	// Left: Distance from the left of the browser.Applicable when
+	// positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+	Left int64 `json:"left,omitempty"`
+
+	// PositionOption: Position in the browser where the window will open.
+	//
+	// Possible values:
+	//   "CENTERED"
+	//   "DISTANCE_FROM_TOP_LEFT_CORNER"
+	PositionOption string `json:"positionOption,omitempty"`
+
+	// Top: Distance from the top of the browser. Applicable when
+	// positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+	Top int64 `json:"top,omitempty"`
+
+	// WindowHeight: Height of the window.
+	WindowHeight int64 `json:"windowHeight,omitempty"`
+
+	// WindowWidth: Width of the window.
+	WindowWidth int64 `json:"windowWidth,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Left") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FsCommand) MarshalJSON() ([]byte, error) {
+	type noMethod FsCommand
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// GeoTargeting: Geographical Targeting.
+type GeoTargeting struct {
+	// Cities: Cities to be targeted. For each city only dartId is required.
+	// The other fields are populated automatically when the ad is inserted
+	// or updated. If targeting a city, do not target or exclude the country
+	// of the city, and do not target the metro or region of the city.
+	Cities []*City `json:"cities,omitempty"`
+
+	// Countries: Countries to be targeted or excluded from targeting,
+	// depending on the setting of the excludeCountries field. For each
+	// country only dartId is required. The other fields are populated
+	// automatically when the ad is inserted or updated. If targeting or
+	// excluding a country, do not target regions, cities, metros, or postal
+	// codes in the same country.
+	Countries []*Country `json:"countries,omitempty"`
+
+	// ExcludeCountries: Whether or not to exclude the countries in the
+	// countries field from targeting. If false, the countries field refers
+	// to countries which will be targeted by the ad.
+	ExcludeCountries bool `json:"excludeCountries,omitempty"`
+
+	// Metros: Metros to be targeted. For each metro only dmaId is required.
+	// The other fields are populated automatically when the ad is inserted
+	// or updated. If targeting a metro, do not target or exclude the
+	// country of the metro.
+	Metros []*Metro `json:"metros,omitempty"`
+
+	// PostalCodes: Postal codes to be targeted. For each postal code only
+	// id is required. The other fields are populated automatically when the
+	// ad is inserted or updated. If targeting a postal code, do not target
+	// or exclude the country of the postal code.
+	PostalCodes []*PostalCode `json:"postalCodes,omitempty"`
+
+	// Regions: Regions to be targeted. For each region only dartId is
+	// required. The other fields are populated automatically when the ad is
+	// inserted or updated. If targeting a region, do not target or exclude
+	// the country of the region.
+	Regions []*Region `json:"regions,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Cities") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *GeoTargeting) MarshalJSON() ([]byte, error) {
+	type noMethod GeoTargeting
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// InventoryItem: Represents a buy from the DoubleClick Planning
+// inventory store.
+type InventoryItem struct {
+	// AccountId: Account ID of this inventory item.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AdSlots: Ad slots of this inventory item. If this inventory item
+	// represents a standalone placement, there will be exactly one ad slot.
+	// If this inventory item represents a placement group, there will be
+	// more than one ad slot, each representing one child placement in that
+	// placement group.
+	AdSlots []*AdSlot `json:"adSlots,omitempty"`
+
+	// AdvertiserId: Advertiser ID of this inventory item.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// ContentCategoryId: Content category ID of this inventory item.
+	ContentCategoryId int64 `json:"contentCategoryId,omitempty,string"`
+
+	// EstimatedClickThroughRate: Estimated click-through rate of this
+	// inventory item.
+	EstimatedClickThroughRate int64 `json:"estimatedClickThroughRate,omitempty,string"`
+
+	// EstimatedConversionRate: Estimated conversion rate of this inventory
+	// item.
+	EstimatedConversionRate int64 `json:"estimatedConversionRate,omitempty,string"`
+
+	// Id: ID of this inventory item.
+	Id int64 `json:"id,omitempty,string"`
+
+	// InPlan: Whether this inventory item is in plan.
+	InPlan bool `json:"inPlan,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#inventoryItem".
+	Kind string `json:"kind,omitempty"`
+
+	// LastModifiedInfo: Information about the most recent modification of
+	// this inventory item.
+	LastModifiedInfo *LastModifiedInfo `json:"lastModifiedInfo,omitempty"`
+
+	// Name: Name of this inventory item. For standalone inventory items,
+	// this is the same name as that of its only ad slot. For group
+	// inventory items, this can differ from the name of any of its ad
+	// slots.
+	Name string `json:"name,omitempty"`
+
+	// NegotiationChannelId: Negotiation channel ID of this inventory item.
+	NegotiationChannelId int64 `json:"negotiationChannelId,omitempty,string"`
+
+	// OrderId: Order ID of this inventory item.
+	OrderId int64 `json:"orderId,omitempty,string"`
+
+	// PlacementStrategyId: Placement strategy ID of this inventory item.
+	PlacementStrategyId int64 `json:"placementStrategyId,omitempty,string"`
+
+	// Pricing: Pricing of this inventory item.
+	Pricing *Pricing `json:"pricing,omitempty"`
+
+	// ProjectId: Project ID of this inventory item.
+	ProjectId int64 `json:"projectId,omitempty,string"`
+
+	// RfpId: RFP ID of this inventory item.
+	RfpId int64 `json:"rfpId,omitempty,string"`
+
+	// SiteId: ID of the site this inventory item is associated with.
+	SiteId int64 `json:"siteId,omitempty,string"`
+
+	// SubaccountId: Subaccount ID of this inventory item.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// Type: Type of inventory item.
+	//
+	// Possible values:
+	//   "PLANNING_PLACEMENT_TYPE_CREDIT"
+	//   "PLANNING_PLACEMENT_TYPE_REGULAR"
+	Type string `json:"type,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *InventoryItem) MarshalJSON() ([]byte, error) {
+	type noMethod InventoryItem
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// InventoryItemsListResponse: Inventory item List Response
+type InventoryItemsListResponse struct {
+	// InventoryItems: Inventory item collection
+	InventoryItems []*InventoryItem `json:"inventoryItems,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#inventoryItemsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "InventoryItems") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *InventoryItemsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod InventoryItemsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// KeyValueTargetingExpression: Key Value Targeting Expression.
+type KeyValueTargetingExpression struct {
+	// Expression: Keyword expression being targeted by the ad.
+	Expression string `json:"expression,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Expression") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *KeyValueTargetingExpression) MarshalJSON() ([]byte, error) {
+	type noMethod KeyValueTargetingExpression
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// LandingPage: Contains information about where a user's browser is
+// taken after the user clicks an ad.
+type LandingPage struct {
+	// Default: Whether or not this landing page will be assigned to any ads
+	// or creatives that do not have a landing page assigned explicitly.
+	// Only one default landing page is allowed per campaign.
+	Default bool `json:"default,omitempty"`
+
+	// Id: ID of this landing page. This is a read-only, auto-generated
+	// field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#landingPage".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this landing page. This is a required field. It must be
+	// less than 256 characters long, and must be unique among landing pages
+	// of the same campaign.
+	Name string `json:"name,omitempty"`
+
+	// Url: URL of this landing page. This is a required field.
+	Url string `json:"url,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Default") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *LandingPage) MarshalJSON() ([]byte, error) {
+	type noMethod LandingPage
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// LandingPagesListResponse: Landing Page List Response
+type LandingPagesListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#landingPagesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// LandingPages: Landing page collection
+	LandingPages []*LandingPage `json:"landingPages,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *LandingPagesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod LandingPagesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// LastModifiedInfo: Modification timestamp.
+type LastModifiedInfo struct {
+	// Time: Timestamp of the last change in milliseconds since epoch.
+	Time int64 `json:"time,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Time") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *LastModifiedInfo) MarshalJSON() ([]byte, error) {
+	type noMethod LastModifiedInfo
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ListPopulationClause: A group clause made up of list population terms
+// representing constraints joined by ORs.
+type ListPopulationClause struct {
+	// Terms: Terms of this list population clause. Each clause is made up
+	// of list population terms representing constraints and are joined by
+	// ORs.
+	Terms []*ListPopulationTerm `json:"terms,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Terms") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ListPopulationClause) MarshalJSON() ([]byte, error) {
+	type noMethod ListPopulationClause
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ListPopulationRule: Remarketing List Population Rule.
+type ListPopulationRule struct {
+	// FloodlightActivityId: Floodlight activity ID associated with this
+	// rule. This field can be left blank.
+	FloodlightActivityId int64 `json:"floodlightActivityId,omitempty,string"`
+
+	// FloodlightActivityName: Name of floodlight activity associated with
+	// this rule. This is a read-only, auto-generated field.
+	FloodlightActivityName string `json:"floodlightActivityName,omitempty"`
+
+	// ListPopulationClauses: Clauses that make up this list population
+	// rule. Clauses are joined by ANDs, and the clauses themselves are made
+	// up of list population terms which are joined by ORs.
+	ListPopulationClauses []*ListPopulationClause `json:"listPopulationClauses,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "FloodlightActivityId") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ListPopulationRule) MarshalJSON() ([]byte, error) {
+	type noMethod ListPopulationRule
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ListPopulationTerm: Remarketing List Population Rule Term.
+type ListPopulationTerm struct {
+	// Contains: Will be true if the term should check if the user is in the
+	// list and false if the term should check if the user is not in the
+	// list. This field is only relevant when type is set to
+	// LIST_MEMBERSHIP_TERM. False by default.
+	Contains bool `json:"contains,omitempty"`
+
+	// Negation: Whether to negate the comparison result of this term during
+	// rule evaluation. This field is only relevant when type is left unset
+	// or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+	Negation bool `json:"negation,omitempty"`
+
+	// Operator: Comparison operator of this term. This field is only
+	// relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or
+	// REFERRER_TERM.
+	//
+	// Possible values:
+	//   "NUM_EQUALS"
+	//   "NUM_GREATER_THAN"
+	//   "NUM_GREATER_THAN_EQUAL"
+	//   "NUM_LESS_THAN"
+	//   "NUM_LESS_THAN_EQUAL"
+	//   "STRING_CONTAINS"
+	//   "STRING_EQUALS"
+	Operator string `json:"operator,omitempty"`
+
+	// RemarketingListId: ID of the list in question. This field is only
+	// relevant when type is set to LIST_MEMBERSHIP_TERM.
+	RemarketingListId int64 `json:"remarketingListId,omitempty,string"`
+
+	// Type: List population term type determines the applicable fields in
+	// this object. If left unset or set to CUSTOM_VARIABLE_TERM, then
+	// variableName, variableFriendlyName, operator, value, and negation are
+	// applicable. If set to LIST_MEMBERSHIP_TERM then remarketingListId and
+	// contains are applicable. If set to REFERRER_TERM then operator,
+	// value, and negation are applicable.
+	//
+	// Possible values:
+	//   "CUSTOM_VARIABLE_TERM"
+	//   "LIST_MEMBERSHIP_TERM"
+	//   "REFERRER_TERM"
+	Type string `json:"type,omitempty"`
+
+	// Value: Literal to compare the variable to. This field is only
+	// relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or
+	// REFERRER_TERM.
+	Value string `json:"value,omitempty"`
+
+	// VariableFriendlyName: Friendly name of this term's variable. This is
+	// a read-only, auto-generated field. This field is only relevant when
+	// type is left unset or set to CUSTOM_VARIABLE_TERM.
+	VariableFriendlyName string `json:"variableFriendlyName,omitempty"`
+
+	// VariableName: Name of the variable (U1, U2, etc.) being compared in
+	// this term. This field is only relevant when type is set to null,
+	// CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+	VariableName string `json:"variableName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Contains") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ListPopulationTerm) MarshalJSON() ([]byte, error) {
+	type noMethod ListPopulationTerm
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ListTargetingExpression: Remarketing List Targeting Expression.
+type ListTargetingExpression struct {
+	// Expression: Expression describing which lists are being targeted by
+	// the ad.
+	Expression string `json:"expression,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Expression") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ListTargetingExpression) MarshalJSON() ([]byte, error) {
+	type noMethod ListTargetingExpression
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// LookbackConfiguration: Lookback configuration settings.
+type LookbackConfiguration struct {
+	// ClickDuration: Lookback window, in days, from the last time a given
+	// user clicked on one of your ads. If you enter 0, clicks will not be
+	// considered as triggering events for floodlight tracking. If you leave
+	// this field blank, the default value for your account will be used.
+	ClickDuration int64 `json:"clickDuration,omitempty"`
+
+	// PostImpressionActivitiesDuration: Lookback window, in days, from the
+	// last time a given user viewed one of your ads. If you enter 0,
+	// impressions will not be considered as triggering events for
+	// floodlight tracking. If you leave this field blank, the default value
+	// for your account will be used.
+	PostImpressionActivitiesDuration int64 `json:"postImpressionActivitiesDuration,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ClickDuration") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *LookbackConfiguration) MarshalJSON() ([]byte, error) {
+	type noMethod LookbackConfiguration
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Metric: Represents a metric.
+type Metric struct {
+	// Kind: The kind of resource this is, in this case dfareporting#metric.
+	Kind string `json:"kind,omitempty"`
+
+	// Name: The metric name, e.g. dfa:impressions
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Metric) MarshalJSON() ([]byte, error) {
+	type noMethod Metric
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Metro: Contains information about a metro region that can be targeted
+// by ads.
+type Metro struct {
+	// CountryCode: Country code of the country to which this metro region
+	// belongs.
+	CountryCode string `json:"countryCode,omitempty"`
+
+	// CountryDartId: DART ID of the country to which this metro region
+	// belongs.
+	CountryDartId int64 `json:"countryDartId,omitempty,string"`
+
+	// DartId: DART ID of this metro region.
+	DartId int64 `json:"dartId,omitempty,string"`
+
+	// DmaId: DMA ID of this metro region. This is the ID used for targeting
+	// and generating reports, and is equivalent to metro_code.
+	DmaId int64 `json:"dmaId,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#metro".
+	Kind string `json:"kind,omitempty"`
+
+	// MetroCode: Metro code of this metro region. This is equivalent to
+	// dma_id.
+	MetroCode string `json:"metroCode,omitempty"`
+
+	// Name: Name of this metro region.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CountryCode") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Metro) MarshalJSON() ([]byte, error) {
+	type noMethod Metro
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// MetrosListResponse: Metro List Response
+type MetrosListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#metrosListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// Metros: Metro collection.
+	Metros []*Metro `json:"metros,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *MetrosListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod MetrosListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// MobileCarrier: Contains information about a mobile carrier that can
+// be targeted by ads.
+type MobileCarrier struct {
+	// CountryCode: Country code of the country to which this mobile carrier
+	// belongs.
+	CountryCode string `json:"countryCode,omitempty"`
+
+	// CountryDartId: DART ID of the country to which this mobile carrier
+	// belongs.
+	CountryDartId int64 `json:"countryDartId,omitempty,string"`
+
+	// Id: ID of this mobile carrier.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#mobileCarrier".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this mobile carrier.
+	Name string `json:"name,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CountryCode") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *MobileCarrier) MarshalJSON() ([]byte, error) {
+	type noMethod MobileCarrier
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// MobileCarriersListResponse: Mobile Carrier List Response
+type MobileCarriersListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#mobileCarriersListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// MobileCarriers: Mobile carrier collection.
+	MobileCarriers []*MobileCarrier `json:"mobileCarriers,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *MobileCarriersListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod MobileCarriersListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ObjectFilter: Object Filter.
+type ObjectFilter struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#objectFilter".
+	Kind string `json:"kind,omitempty"`
+
+	// ObjectIds: Applicable when status is ASSIGNED. The user has access to
+	// objects with these object IDs.
+	ObjectIds googleapi.Int64s `json:"objectIds,omitempty"`
+
+	// Status: Status of the filter. NONE means the user has access to none
+	// of the objects. ALL means the user has access to all objects.
+	// ASSIGNED means the user has access to the objects with IDs in the
+	// objectIds list.
+	//
+	// Possible values:
+	//   "ALL"
+	//   "ASSIGNED"
+	//   "NONE"
+	Status string `json:"status,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ObjectFilter) MarshalJSON() ([]byte, error) {
+	type noMethod ObjectFilter
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OffsetPosition: Offset Position.
+type OffsetPosition struct {
+	// Left: Offset distance from left side of an asset or a window.
+	Left int64 `json:"left,omitempty"`
+
+	// Top: Offset distance from top side of an asset or a window.
+	Top int64 `json:"top,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Left") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OffsetPosition) MarshalJSON() ([]byte, error) {
+	type noMethod OffsetPosition
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OmnitureSettings: Omniture Integration Settings.
+type OmnitureSettings struct {
+	// OmnitureCostDataEnabled: Whether placement cost data will be sent to
+	// Omniture. This property can be enabled only if
+	// omnitureIntegrationEnabled is true.
+	OmnitureCostDataEnabled bool `json:"omnitureCostDataEnabled,omitempty"`
+
+	// OmnitureIntegrationEnabled: Whether Omniture integration is enabled.
+	// This property can be enabled only when the "Advanced Ad Serving"
+	// account setting is enabled.
+	OmnitureIntegrationEnabled bool `json:"omnitureIntegrationEnabled,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "OmnitureCostDataEnabled") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OmnitureSettings) MarshalJSON() ([]byte, error) {
+	type noMethod OmnitureSettings
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OperatingSystem: Contains information about an operating system that
+// can be targeted by ads.
+type OperatingSystem struct {
+	// DartId: DART ID of this operating system. This is the ID used for
+	// targeting.
+	DartId int64 `json:"dartId,omitempty,string"`
+
+	// Desktop: Whether this operating system is for desktop.
+	Desktop bool `json:"desktop,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#operatingSystem".
+	Kind string `json:"kind,omitempty"`
+
+	// Mobile: Whether this operating system is for mobile.
+	Mobile bool `json:"mobile,omitempty"`
+
+	// Name: Name of this operating system.
+	Name string `json:"name,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "DartId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OperatingSystem) MarshalJSON() ([]byte, error) {
+	type noMethod OperatingSystem
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OperatingSystemVersion: Contains information about a particular
+// version of an operating system that can be targeted by ads.
+type OperatingSystemVersion struct {
+	// Id: ID of this operating system version.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#operatingSystemVersion".
+	Kind string `json:"kind,omitempty"`
+
+	// MajorVersion: Major version (leftmost number) of this operating
+	// system version.
+	MajorVersion string `json:"majorVersion,omitempty"`
+
+	// MinorVersion: Minor version (number after the first dot) of this
+	// operating system version.
+	MinorVersion string `json:"minorVersion,omitempty"`
+
+	// Name: Name of this operating system version.
+	Name string `json:"name,omitempty"`
+
+	// OperatingSystem: Operating system of this operating system version.
+	OperatingSystem *OperatingSystem `json:"operatingSystem,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OperatingSystemVersion) MarshalJSON() ([]byte, error) {
+	type noMethod OperatingSystemVersion
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OperatingSystemVersionsListResponse: Operating System Version List
+// Response
+type OperatingSystemVersionsListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#operatingSystemVersionsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// OperatingSystemVersions: Operating system version collection.
+	OperatingSystemVersions []*OperatingSystemVersion `json:"operatingSystemVersions,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OperatingSystemVersionsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod OperatingSystemVersionsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OperatingSystemsListResponse: Operating System List Response
+type OperatingSystemsListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#operatingSystemsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// OperatingSystems: Operating system collection.
+	OperatingSystems []*OperatingSystem `json:"operatingSystems,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OperatingSystemsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod OperatingSystemsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OptimizationActivity: Creative optimization activity.
+type OptimizationActivity struct {
+	// FloodlightActivityId: Floodlight activity ID of this optimization
+	// activity. This is a required field.
+	FloodlightActivityId int64 `json:"floodlightActivityId,omitempty,string"`
+
+	// FloodlightActivityIdDimensionValue: Dimension value for the ID of the
+	// floodlight activity. This is a read-only, auto-generated field.
+	FloodlightActivityIdDimensionValue *DimensionValue `json:"floodlightActivityIdDimensionValue,omitempty"`
+
+	// Weight: Weight associated with this optimization. Must be greater
+	// than 1. The weight assigned will be understood in proportion to the
+	// weights assigned to the other optimization activities.
+	Weight int64 `json:"weight,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "FloodlightActivityId") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OptimizationActivity) MarshalJSON() ([]byte, error) {
+	type noMethod OptimizationActivity
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Order: Describes properties of a DoubleClick Planning order.
+type Order struct {
+	// AccountId: Account ID of this order.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AdvertiserId: Advertiser ID of this order.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// ApproverUserProfileIds: IDs for users that have to approve documents
+	// created for this order.
+	ApproverUserProfileIds googleapi.Int64s `json:"approverUserProfileIds,omitempty"`
+
+	// BuyerInvoiceId: Buyer invoice ID associated with this order.
+	BuyerInvoiceId string `json:"buyerInvoiceId,omitempty"`
+
+	// BuyerOrganizationName: Name of the buyer organization.
+	BuyerOrganizationName string `json:"buyerOrganizationName,omitempty"`
+
+	// Comments: Comments in this order.
+	Comments string `json:"comments,omitempty"`
+
+	// Contacts: Contacts for this order.
+	Contacts []*OrderContact `json:"contacts,omitempty"`
+
+	// Id: ID of this order. This is a read-only, auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#order".
+	Kind string `json:"kind,omitempty"`
+
+	// LastModifiedInfo: Information about the most recent modification of
+	// this order.
+	LastModifiedInfo *LastModifiedInfo `json:"lastModifiedInfo,omitempty"`
+
+	// Name: Name of this order.
+	Name string `json:"name,omitempty"`
+
+	// Notes: Notes of this order.
+	Notes string `json:"notes,omitempty"`
+
+	// PlanningTermId: ID of the terms and conditions template used in this
+	// order.
+	PlanningTermId int64 `json:"planningTermId,omitempty,string"`
+
+	// ProjectId: Project ID of this order.
+	ProjectId int64 `json:"projectId,omitempty,string"`
+
+	// SellerOrderId: Seller order ID associated with this order.
+	SellerOrderId string `json:"sellerOrderId,omitempty"`
+
+	// SellerOrganizationName: Name of the seller organization.
+	SellerOrganizationName string `json:"sellerOrganizationName,omitempty"`
+
+	// SiteId: Site IDs this order is associated with.
+	SiteId googleapi.Int64s `json:"siteId,omitempty"`
+
+	// SiteNames: Free-form site names this order is associated with.
+	SiteNames []string `json:"siteNames,omitempty"`
+
+	// SubaccountId: Subaccount ID of this order.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// TermsAndConditions: Terms and conditions of this order.
+	TermsAndConditions string `json:"termsAndConditions,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Order) MarshalJSON() ([]byte, error) {
+	type noMethod Order
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OrderContact: Contact of an order.
+type OrderContact struct {
+	// ContactInfo: Free-form information about this contact. It could be
+	// any information related to this contact in addition to type, title,
+	// name, and signature user profile ID.
+	ContactInfo string `json:"contactInfo,omitempty"`
+
+	// ContactName: Name of this contact.
+	ContactName string `json:"contactName,omitempty"`
+
+	// ContactTitle: Title of this contact.
+	ContactTitle string `json:"contactTitle,omitempty"`
+
+	// ContactType: Type of this contact.
+	//
+	// Possible values:
+	//   "PLANNING_ORDER_CONTACT_BUYER_BILLING_CONTACT"
+	//   "PLANNING_ORDER_CONTACT_BUYER_CONTACT"
+	//   "PLANNING_ORDER_CONTACT_SELLER_CONTACT"
+	ContactType string `json:"contactType,omitempty"`
+
+	// SignatureUserProfileId: ID of the user profile containing the
+	// signature that will be embedded into order documents.
+	SignatureUserProfileId int64 `json:"signatureUserProfileId,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "ContactInfo") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OrderContact) MarshalJSON() ([]byte, error) {
+	type noMethod OrderContact
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OrderDocument: Contains properties of a DoubleClick Planning order
+// document.
+type OrderDocument struct {
+	// AccountId: Account ID of this order document.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AdvertiserId: Advertiser ID of this order document.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AmendedOrderDocumentId: The amended order document ID of this order
+	// document. An order document can be created by optionally amending
+	// another order document so that the change history can be preserved.
+	AmendedOrderDocumentId int64 `json:"amendedOrderDocumentId,omitempty,string"`
+
+	// ApprovedByUserProfileIds: IDs of users who have approved this order
+	// document.
+	ApprovedByUserProfileIds googleapi.Int64s `json:"approvedByUserProfileIds,omitempty"`
+
+	// Cancelled: Whether this order document is cancelled.
+	Cancelled bool `json:"cancelled,omitempty"`
+
+	// CreatedInfo: Information about the creation of this order document.
+	CreatedInfo *LastModifiedInfo `json:"createdInfo,omitempty"`
+
+	// EffectiveDate: Effective date of this order document.
+	EffectiveDate string `json:"effectiveDate,omitempty"`
+
+	// Id: ID of this order document.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#orderDocument".
+	Kind string `json:"kind,omitempty"`
+
+	// LastSentRecipients: List of email addresses that received the last
+	// sent document.
+	LastSentRecipients []string `json:"lastSentRecipients,omitempty"`
+
+	// LastSentTime: Timestamp of the last email sent with this order
+	// document.
+	LastSentTime string `json:"lastSentTime,omitempty"`
+
+	// OrderId: ID of the order from which this order document is created.
+	OrderId int64 `json:"orderId,omitempty,string"`
+
+	// ProjectId: Project ID of this order document.
+	ProjectId int64 `json:"projectId,omitempty,string"`
+
+	// Signed: Whether this order document has been signed.
+	Signed bool `json:"signed,omitempty"`
+
+	// SubaccountId: Subaccount ID of this order document.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// Title: Title of this order document.
+	Title string `json:"title,omitempty"`
+
+	// Type: Type of this order document
+	//
+	// Possible values:
+	//   "PLANNING_ORDER_TYPE_CHANGE_ORDER"
+	//   "PLANNING_ORDER_TYPE_INSERTION_ORDER"
+	Type string `json:"type,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OrderDocument) MarshalJSON() ([]byte, error) {
+	type noMethod OrderDocument
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OrderDocumentsListResponse: Order document List Response
+type OrderDocumentsListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#orderDocumentsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// OrderDocuments: Order document collection
+	OrderDocuments []*OrderDocument `json:"orderDocuments,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OrderDocumentsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod OrderDocumentsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OrdersListResponse: Order List Response
+type OrdersListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#ordersListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Orders: Order collection.
+	Orders []*Order `json:"orders,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OrdersListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod OrdersListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PathToConversionReportCompatibleFields: Represents fields that are
+// compatible to be selected for a report of type "PATH_TO_CONVERSION".
+type PathToConversionReportCompatibleFields struct {
+	// ConversionDimensions: Conversion dimensions which are compatible to
+	// be selected in the "conversionDimensions" section of the report.
+	ConversionDimensions []*Dimension `json:"conversionDimensions,omitempty"`
+
+	// CustomFloodlightVariables: Custom floodlight variables which are
+	// compatible to be selected in the "customFloodlightVariables" section
+	// of the report.
+	CustomFloodlightVariables []*Dimension `json:"customFloodlightVariables,omitempty"`
+
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#pathToConversionReportCompatibleFields.
+	Kind string `json:"kind,omitempty"`
+
+	// Metrics: Metrics which are compatible to be selected in the
+	// "metricNames" section of the report.
+	Metrics []*Metric `json:"metrics,omitempty"`
+
+	// PerInteractionDimensions: Per-interaction dimensions which are
+	// compatible to be selected in the "perInteractionDimensions" section
+	// of the report.
+	PerInteractionDimensions []*Dimension `json:"perInteractionDimensions,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "ConversionDimensions") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PathToConversionReportCompatibleFields) MarshalJSON() ([]byte, error) {
+	type noMethod PathToConversionReportCompatibleFields
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Placement: Contains properties of a placement.
+type Placement struct {
+	// AccountId: Account ID of this placement. This field can be left
+	// blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AdvertiserId: Advertiser ID of this placement. This field can be left
+	// blank.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AdvertiserIdDimensionValue: Dimension value for the ID of the
+	// advertiser. This is a read-only, auto-generated field.
+	AdvertiserIdDimensionValue *DimensionValue `json:"advertiserIdDimensionValue,omitempty"`
+
+	// Archived: Whether this placement is archived.
+	Archived bool `json:"archived,omitempty"`
+
+	// CampaignId: Campaign ID of this placement. This field is a required
+	// field on insertion.
+	CampaignId int64 `json:"campaignId,omitempty,string"`
+
+	// CampaignIdDimensionValue: Dimension value for the ID of the campaign.
+	// This is a read-only, auto-generated field.
+	CampaignIdDimensionValue *DimensionValue `json:"campaignIdDimensionValue,omitempty"`
+
+	// Comment: Comments for this placement.
+	Comment string `json:"comment,omitempty"`
+
+	// Compatibility: Placement compatibility. DISPLAY and
+	// DISPLAY_INTERSTITIAL refer to rendering on desktop, mobile devices or
+	// in mobile apps for regular or interstitial ads respectively. APP and
+	// APP_INTERSTITIAL are no longer allowed for new placement insertions.
+	// Instead, use DISPLAY or DISPLAY_INTERSTITIAL. IN_STREAM_VIDEO refers
+	// to rendering in in-stream video ads developed with the VAST
+	// standard.This field is required on insertion.
+	//
+	// Possible values:
+	//   "APP"
+	//   "APP_INTERSTITIAL"
+	//   "DISPLAY"
+	//   "DISPLAY_INTERSTITIAL"
+	//   "IN_STREAM_VIDEO"
+	Compatibility string `json:"compatibility,omitempty"`
+
+	// ContentCategoryId: ID of the content category assigned to this
+	// placement.
+	ContentCategoryId int64 `json:"contentCategoryId,omitempty,string"`
+
+	// CreateInfo: Information about the creation of this placement. This is
+	// a read-only field.
+	CreateInfo *LastModifiedInfo `json:"createInfo,omitempty"`
+
+	// DirectorySiteId: Directory site ID of this placement. On insert, you
+	// must set either this field or the siteId field to specify the site
+	// associated with this placement. This is a required field that is
+	// read-only after insertion.
+	DirectorySiteId int64 `json:"directorySiteId,omitempty,string"`
+
+	// DirectorySiteIdDimensionValue: Dimension value for the ID of the
+	// directory site. This is a read-only, auto-generated field.
+	DirectorySiteIdDimensionValue *DimensionValue `json:"directorySiteIdDimensionValue,omitempty"`
+
+	// ExternalId: External ID for this placement.
+	ExternalId string `json:"externalId,omitempty"`
+
+	// Id: ID of this placement. This is a read-only, auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// IdDimensionValue: Dimension value for the ID of this placement. This
+	// is a read-only, auto-generated field.
+	IdDimensionValue *DimensionValue `json:"idDimensionValue,omitempty"`
+
+	// KeyName: Key name of this placement. This is a read-only,
+	// auto-generated field.
+	KeyName string `json:"keyName,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#placement".
+	Kind string `json:"kind,omitempty"`
+
+	// LastModifiedInfo: Information about the most recent modification of
+	// this placement. This is a read-only field.
+	LastModifiedInfo *LastModifiedInfo `json:"lastModifiedInfo,omitempty"`
+
+	// LookbackConfiguration: Lookback window settings for this placement.
+	LookbackConfiguration *LookbackConfiguration `json:"lookbackConfiguration,omitempty"`
+
+	// Name: Name of this placement.This is a required field and must be
+	// less than 256 characters long.
+	Name string `json:"name,omitempty"`
+
+	// PaymentApproved: Whether payment was approved for this placement.
+	// This is a read-only field relevant only to publisher-paid placements.
+	PaymentApproved bool `json:"paymentApproved,omitempty"`
+
+	// PaymentSource: Payment source for this placement. This is a required
+	// field that is read-only after insertion.
+	//
+	// Possible values:
+	//   "PLACEMENT_AGENCY_PAID"
+	//   "PLACEMENT_PUBLISHER_PAID"
+	PaymentSource string `json:"paymentSource,omitempty"`
+
+	// PlacementGroupId: ID of this placement's group, if applicable.
+	PlacementGroupId int64 `json:"placementGroupId,omitempty,string"`
+
+	// PlacementGroupIdDimensionValue: Dimension value for the ID of the
+	// placement group. This is a read-only, auto-generated field.
+	PlacementGroupIdDimensionValue *DimensionValue `json:"placementGroupIdDimensionValue,omitempty"`
+
+	// PlacementStrategyId: ID of the placement strategy assigned to this
+	// placement.
+	PlacementStrategyId int64 `json:"placementStrategyId,omitempty,string"`
+
+	// PricingSchedule: Pricing schedule of this placement. This field is
+	// required on insertion, specifically subfields startDate, endDate and
+	// pricingType.
+	PricingSchedule *PricingSchedule `json:"pricingSchedule,omitempty"`
+
+	// Primary: Whether this placement is the primary placement of a
+	// roadblock (placement group). You cannot change this field from true
+	// to false. Setting this field to true will automatically set the
+	// primary field on the original primary placement of the roadblock to
+	// false, and it will automatically set the roadblock's
+	// primaryPlacementId field to the ID of this placement.
+	Primary bool `json:"primary,omitempty"`
+
+	// PublisherUpdateInfo: Information about the last publisher update.
+	// This is a read-only field.
+	PublisherUpdateInfo *LastModifiedInfo `json:"publisherUpdateInfo,omitempty"`
+
+	// SiteId: Site ID associated with this placement. On insert, you must
+	// set either this field or the directorySiteId field to specify the
+	// site associated with this placement. This is a required field that is
+	// read-only after insertion.
+	SiteId int64 `json:"siteId,omitempty,string"`
+
+	// SiteIdDimensionValue: Dimension value for the ID of the site. This is
+	// a read-only, auto-generated field.
+	SiteIdDimensionValue *DimensionValue `json:"siteIdDimensionValue,omitempty"`
+
+	// Size: Size associated with this placement. When inserting or updating
+	// a placement, only the size ID field is used. This field is required
+	// on insertion.
+	Size *Size `json:"size,omitempty"`
+
+	// SslRequired: Whether creatives assigned to this placement must be
+	// SSL-compliant.
+	SslRequired bool `json:"sslRequired,omitempty"`
+
+	// Status: Third-party placement status.
+	//
+	// Possible values:
+	//   "ACKNOWLEDGE_ACCEPTANCE"
+	//   "ACKNOWLEDGE_REJECTION"
+	//   "DRAFT"
+	//   "PAYMENT_ACCEPTED"
+	//   "PAYMENT_REJECTED"
+	//   "PENDING_REVIEW"
+	Status string `json:"status,omitempty"`
+
+	// SubaccountId: Subaccount ID of this placement. This field can be left
+	// blank.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// TagFormats: Tag formats to generate for this placement. This field is
+	// required on insertion.
+	// Acceptable values are:
+	// - "PLACEMENT_TAG_STANDARD"
+	// - "PLACEMENT_TAG_IFRAME_JAVASCRIPT"
+	// - "PLACEMENT_TAG_IFRAME_ILAYER"
+	// - "PLACEMENT_TAG_INTERNAL_REDIRECT"
+	// - "PLACEMENT_TAG_JAVASCRIPT"
+	// - "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT"
+	// - "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT"
+	// - "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT"
+	// - "PLACEMENT_TAG_CLICK_COMMANDS"
+	// - "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH"
+	// - "PLACEMENT_TAG_TRACKING"
+	// - "PLACEMENT_TAG_TRACKING_IFRAME"
+	// - "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+	//
+	// Possible values:
+	//   "PLACEMENT_TAG_CLICK_COMMANDS"
+	//   "PLACEMENT_TAG_IFRAME_ILAYER"
+	//   "PLACEMENT_TAG_IFRAME_JAVASCRIPT"
+	//   "PLACEMENT_TAG_IFRAME_JAVASCRIPT_LEGACY"
+	//   "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH"
+	//   "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3"
+	//   "PLACEMENT_TAG_INTERNAL_REDIRECT"
+	//   "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT"
+	//   "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT_LEGACY"
+	//   "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT"
+	//   "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT"
+	//   "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT_LEGACY"
+	//   "PLACEMENT_TAG_JAVASCRIPT"
+	//   "PLACEMENT_TAG_JAVASCRIPT_LEGACY"
+	//   "PLACEMENT_TAG_STANDARD"
+	//   "PLACEMENT_TAG_TRACKING"
+	//   "PLACEMENT_TAG_TRACKING_IFRAME"
+	//   "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+	TagFormats []string `json:"tagFormats,omitempty"`
+
+	// TagSetting: Tag settings for this placement.
+	TagSetting *TagSetting `json:"tagSetting,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Placement) MarshalJSON() ([]byte, error) {
+	type noMethod Placement
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PlacementAssignment: Placement Assignment.
+type PlacementAssignment struct {
+	// Active: Whether this placement assignment is active. When true, the
+	// placement will be included in the ad's rotation.
+	Active bool `json:"active,omitempty"`
+
+	// PlacementId: ID of the placement to be assigned. This is a required
+	// field.
+	PlacementId int64 `json:"placementId,omitempty,string"`
+
+	// PlacementIdDimensionValue: Dimension value for the ID of the
+	// placement. This is a read-only, auto-generated field.
+	PlacementIdDimensionValue *DimensionValue `json:"placementIdDimensionValue,omitempty"`
+
+	// SslRequired: Whether the placement to be assigned requires SSL. This
+	// is a read-only field that is auto-generated when the ad is inserted
+	// or updated.
+	SslRequired bool `json:"sslRequired,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Active") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PlacementAssignment) MarshalJSON() ([]byte, error) {
+	type noMethod PlacementAssignment
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PlacementGroup: Contains properties of a package or roadblock.
+type PlacementGroup struct {
+	// AccountId: Account ID of this placement group. This is a read-only
+	// field that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AdvertiserId: Advertiser ID of this placement group. This is a
+	// required field on insertion.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AdvertiserIdDimensionValue: Dimension value for the ID of the
+	// advertiser. This is a read-only, auto-generated field.
+	AdvertiserIdDimensionValue *DimensionValue `json:"advertiserIdDimensionValue,omitempty"`
+
+	// Archived: Whether this placement group is archived.
+	Archived bool `json:"archived,omitempty"`
+
+	// CampaignId: Campaign ID of this placement group. This field is
+	// required on insertion.
+	CampaignId int64 `json:"campaignId,omitempty,string"`
+
+	// CampaignIdDimensionValue: Dimension value for the ID of the campaign.
+	// This is a read-only, auto-generated field.
+	CampaignIdDimensionValue *DimensionValue `json:"campaignIdDimensionValue,omitempty"`
+
+	// ChildPlacementIds: IDs of placements which are assigned to this
+	// placement group. This is a read-only, auto-generated field.
+	ChildPlacementIds googleapi.Int64s `json:"childPlacementIds,omitempty"`
+
+	// Comment: Comments for this placement group.
+	Comment string `json:"comment,omitempty"`
+
+	// ContentCategoryId: ID of the content category assigned to this
+	// placement group.
+	ContentCategoryId int64 `json:"contentCategoryId,omitempty,string"`
+
+	// CreateInfo: Information about the creation of this placement group.
+	// This is a read-only field.
+	CreateInfo *LastModifiedInfo `json:"createInfo,omitempty"`
+
+	// DirectorySiteId: Directory site ID associated with this placement
+	// group. On insert, you must set either this field or the site_id field
+	// to specify the site associated with this placement group. This is a
+	// required field that is read-only after insertion.
+	DirectorySiteId int64 `json:"directorySiteId,omitempty,string"`
+
+	// DirectorySiteIdDimensionValue: Dimension value for the ID of the
+	// directory site. This is a read-only, auto-generated field.
+	DirectorySiteIdDimensionValue *DimensionValue `json:"directorySiteIdDimensionValue,omitempty"`
+
+	// ExternalId: External ID for this placement.
+	ExternalId string `json:"externalId,omitempty"`
+
+	// Id: ID of this placement group. This is a read-only, auto-generated
+	// field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// IdDimensionValue: Dimension value for the ID of this placement group.
+	// This is a read-only, auto-generated field.
+	IdDimensionValue *DimensionValue `json:"idDimensionValue,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#placementGroup".
+	Kind string `json:"kind,omitempty"`
+
+	// LastModifiedInfo: Information about the most recent modification of
+	// this placement group. This is a read-only field.
+	LastModifiedInfo *LastModifiedInfo `json:"lastModifiedInfo,omitempty"`
+
+	// Name: Name of this placement group. This is a required field and must
+	// be less than 256 characters long.
+	Name string `json:"name,omitempty"`
+
+	// PlacementGroupType: Type of this placement group. A package is a
+	// simple group of placements that acts as a single pricing point for a
+	// group of tags. A roadblock is a group of placements that not only
+	// acts as a single pricing point, but also assumes that all the tags in
+	// it will be served at the same time. A roadblock requires one of its
+	// assigned placements to be marked as primary for reporting. This field
+	// is required on insertion.
+	//
+	// Possible values:
+	//   "PLACEMENT_PACKAGE"
+	//   "PLACEMENT_ROADBLOCK"
+	PlacementGroupType string `json:"placementGroupType,omitempty"`
+
+	// PlacementStrategyId: ID of the placement strategy assigned to this
+	// placement group.
+	PlacementStrategyId int64 `json:"placementStrategyId,omitempty,string"`
+
+	// PricingSchedule: Pricing schedule of this placement group. This field
+	// is required on insertion.
+	PricingSchedule *PricingSchedule `json:"pricingSchedule,omitempty"`
+
+	// PrimaryPlacementId: ID of the primary placement, used to calculate
+	// the media cost of a roadblock (placement group). Modifying this field
+	// will automatically modify the primary field on all affected roadblock
+	// child placements.
+	PrimaryPlacementId int64 `json:"primaryPlacementId,omitempty,string"`
+
+	// PrimaryPlacementIdDimensionValue: Dimension value for the ID of the
+	// primary placement. This is a read-only, auto-generated field.
+	PrimaryPlacementIdDimensionValue *DimensionValue `json:"primaryPlacementIdDimensionValue,omitempty"`
+
+	// SiteId: Site ID associated with this placement group. On insert, you
+	// must set either this field or the directorySiteId field to specify
+	// the site associated with this placement group. This is a required
+	// field that is read-only after insertion.
+	SiteId int64 `json:"siteId,omitempty,string"`
+
+	// SiteIdDimensionValue: Dimension value for the ID of the site. This is
+	// a read-only, auto-generated field.
+	SiteIdDimensionValue *DimensionValue `json:"siteIdDimensionValue,omitempty"`
+
+	// SubaccountId: Subaccount ID of this placement group. This is a
+	// read-only field that can be left blank.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PlacementGroup) MarshalJSON() ([]byte, error) {
+	type noMethod PlacementGroup
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PlacementGroupsListResponse: Placement Group List Response
+type PlacementGroupsListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#placementGroupsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// PlacementGroups: Placement group collection.
+	PlacementGroups []*PlacementGroup `json:"placementGroups,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PlacementGroupsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod PlacementGroupsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PlacementStrategiesListResponse: Placement Strategy List Response
+type PlacementStrategiesListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#placementStrategiesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// PlacementStrategies: Placement strategy collection.
+	PlacementStrategies []*PlacementStrategy `json:"placementStrategies,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PlacementStrategiesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod PlacementStrategiesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PlacementStrategy: Contains properties of a placement strategy.
+type PlacementStrategy struct {
+	// AccountId: Account ID of this placement strategy.This is a read-only
+	// field that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// Id: ID of this placement strategy. This is a read-only,
+	// auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#placementStrategy".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this placement strategy. This is a required field. It
+	// must be less than 256 characters long and unique among placement
+	// strategies of the same account.
+	Name string `json:"name,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PlacementStrategy) MarshalJSON() ([]byte, error) {
+	type noMethod PlacementStrategy
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PlacementTag: Placement Tag
+type PlacementTag struct {
+	// PlacementId: Placement ID
+	PlacementId int64 `json:"placementId,omitempty,string"`
+
+	// TagDatas: Tags generated for this placement.
+	TagDatas []*TagData `json:"tagDatas,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "PlacementId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PlacementTag) MarshalJSON() ([]byte, error) {
+	type noMethod PlacementTag
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PlacementsGenerateTagsResponse: Placement GenerateTags Response
+type PlacementsGenerateTagsResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#placementsGenerateTagsResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// PlacementTags: Set of generated tags for the specified placements.
+	PlacementTags []*PlacementTag `json:"placementTags,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PlacementsGenerateTagsResponse) MarshalJSON() ([]byte, error) {
+	type noMethod PlacementsGenerateTagsResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PlacementsListResponse: Placement List Response
+type PlacementsListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#placementsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Placements: Placement collection.
+	Placements []*Placement `json:"placements,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PlacementsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod PlacementsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PlatformType: Contains information about a platform type that can be
+// targeted by ads.
+type PlatformType struct {
+	// Id: ID of this platform type.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#platformType".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this platform type.
+	Name string `json:"name,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PlatformType) MarshalJSON() ([]byte, error) {
+	type noMethod PlatformType
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PlatformTypesListResponse: Platform Type List Response
+type PlatformTypesListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#platformTypesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// PlatformTypes: Platform type collection.
+	PlatformTypes []*PlatformType `json:"platformTypes,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PlatformTypesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod PlatformTypesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PopupWindowProperties: Popup Window Properties.
+type PopupWindowProperties struct {
+	// Dimension: Popup dimension for a creative. This is a read-only field.
+	// Applicable to the following creative types: all RICH_MEDIA and all
+	// VPAID
+	Dimension *Size `json:"dimension,omitempty"`
+
+	// Offset: Upper-left corner coordinates of the popup window. Applicable
+	// if positionType is COORDINATES.
+	Offset *OffsetPosition `json:"offset,omitempty"`
+
+	// PositionType: Popup window position either centered or at specific
+	// coordinate.
+	//
+	// Possible values:
+	//   "CENTER"
+	//   "COORDINATES"
+	PositionType string `json:"positionType,omitempty"`
+
+	// ShowAddressBar: Whether to display the browser address bar.
+	ShowAddressBar bool `json:"showAddressBar,omitempty"`
+
+	// ShowMenuBar: Whether to display the browser menu bar.
+	ShowMenuBar bool `json:"showMenuBar,omitempty"`
+
+	// ShowScrollBar: Whether to display the browser scroll bar.
+	ShowScrollBar bool `json:"showScrollBar,omitempty"`
+
+	// ShowStatusBar: Whether to display the browser status bar.
+	ShowStatusBar bool `json:"showStatusBar,omitempty"`
+
+	// ShowToolBar: Whether to display the browser tool bar.
+	ShowToolBar bool `json:"showToolBar,omitempty"`
+
+	// Title: Title of popup window.
+	Title string `json:"title,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Dimension") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PopupWindowProperties) MarshalJSON() ([]byte, error) {
+	type noMethod PopupWindowProperties
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PostalCode: Contains information about a postal code that can be
+// targeted by ads.
+type PostalCode struct {
+	// Code: Postal code. This is equivalent to the id field.
+	Code string `json:"code,omitempty"`
+
+	// CountryCode: Country code of the country to which this postal code
+	// belongs.
+	CountryCode string `json:"countryCode,omitempty"`
+
+	// CountryDartId: DART ID of the country to which this postal code
+	// belongs.
+	CountryDartId int64 `json:"countryDartId,omitempty,string"`
+
+	// Id: ID of this postal code.
+	Id string `json:"id,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#postalCode".
+	Kind string `json:"kind,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PostalCode) MarshalJSON() ([]byte, error) {
+	type noMethod PostalCode
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PostalCodesListResponse: Postal Code List Response
+type PostalCodesListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#postalCodesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// PostalCodes: Postal code collection.
+	PostalCodes []*PostalCode `json:"postalCodes,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PostalCodesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod PostalCodesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Pricing: Pricing Information
+type Pricing struct {
+	// CapCostType: Cap cost type of this inventory item.
+	//
+	// Possible values:
+	//   "PLANNING_PLACEMENT_CAP_COST_TYPE_CUMULATIVE"
+	//   "PLANNING_PLACEMENT_CAP_COST_TYPE_MONTHLY"
+	//   "PLANNING_PLACEMENT_CAP_COST_TYPE_NONE"
+	CapCostType string `json:"capCostType,omitempty"`
+
+	// EndDate: End date of this inventory item.
+	EndDate string `json:"endDate,omitempty"`
+
+	// Flights: Flights of this inventory item. A flight (a.k.a. pricing
+	// period) represents the inventory item pricing information for a
+	// specific period of time.
+	Flights []*Flight `json:"flights,omitempty"`
+
+	// GroupType: Group type of this inventory item if it represents a
+	// placement group. Is null otherwise. There are two type of placement
+	// groups: PLANNING_PLACEMENT_GROUP_TYPE_PACKAGE is a simple group of
+	// inventory items that acts as a single pricing point for a group of
+	// tags. PLANNING_PLACEMENT_GROUP_TYPE_ROADBLOCK is a group of inventory
+	// items that not only acts as a single pricing point, but also assumes
+	// that all the tags in it will be served at the same time. A roadblock
+	// requires one of its assigned inventory items to be marked as primary.
+	//
+	// Possible values:
+	//   "PLANNING_PLACEMENT_GROUP_TYPE_PACKAGE"
+	//   "PLANNING_PLACEMENT_GROUP_TYPE_ROADBLOCK"
+	GroupType string `json:"groupType,omitempty"`
+
+	// PricingType: Pricing type of this inventory item.
+	//
+	// Possible values:
+	//   "PLANNING_PLACEMENT_PRICING_TYPE_CLICKS"
+	//   "PLANNING_PLACEMENT_PRICING_TYPE_CPA"
+	//   "PLANNING_PLACEMENT_PRICING_TYPE_CPC"
+	//   "PLANNING_PLACEMENT_PRICING_TYPE_CPM"
+	//   "PLANNING_PLACEMENT_PRICING_TYPE_FLAT_RATE_CLICKS"
+	//   "PLANNING_PLACEMENT_PRICING_TYPE_FLAT_RATE_IMPRESSIONS"
+	//   "PLANNING_PLACEMENT_PRICING_TYPE_IMPRESSIONS"
+	PricingType string `json:"pricingType,omitempty"`
+
+	// StartDate: Start date of this inventory item.
+	StartDate string `json:"startDate,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CapCostType") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Pricing) MarshalJSON() ([]byte, error) {
+	type noMethod Pricing
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PricingSchedule: Pricing Schedule
+type PricingSchedule struct {
+	// CapCostOption: Placement cap cost option.
+	//
+	// Possible values:
+	//   "CAP_COST_CUMULATIVE"
+	//   "CAP_COST_MONTHLY"
+	//   "CAP_COST_NONE"
+	CapCostOption string `json:"capCostOption,omitempty"`
+
+	// DisregardOverdelivery: Whether cap costs are ignored by ad serving.
+	DisregardOverdelivery bool `json:"disregardOverdelivery,omitempty"`
+
+	// EndDate: Placement end date. This date must be later than, or the
+	// same day as, the placement start date, but not later than the
+	// campaign end date. If, for example, you set 6/25/2015 as both the
+	// start and end dates, the effective placement date is just that day
+	// only, 6/25/2015. The hours, minutes, and seconds of the end date
+	// should not be set, as doing so will result in an error. This field is
+	// required on insertion.
+	EndDate string `json:"endDate,omitempty"`
+
+	// Flighted: Whether this placement is flighted. If true, pricing
+	// periods will be computed automatically.
+	Flighted bool `json:"flighted,omitempty"`
+
+	// FloodlightActivityId: Floodlight activity ID associated with this
+	// placement. This field should be set when placement pricing type is
+	// set to PRICING_TYPE_CPA.
+	FloodlightActivityId int64 `json:"floodlightActivityId,omitempty,string"`
+
+	// PricingPeriods: Pricing periods for this placement.
+	PricingPeriods []*PricingSchedulePricingPeriod `json:"pricingPeriods,omitempty"`
+
+	// PricingType: Placement pricing type. This field is required on
+	// insertion.
+	//
+	// Possible values:
+	//   "PRICING_TYPE_CPA"
+	//   "PRICING_TYPE_CPC"
+	//   "PRICING_TYPE_CPM"
+	//   "PRICING_TYPE_FLAT_RATE_CLICKS"
+	//   "PRICING_TYPE_FLAT_RATE_IMPRESSIONS"
+	PricingType string `json:"pricingType,omitempty"`
+
+	// StartDate: Placement start date. This date must be later than, or the
+	// same day as, the campaign start date. The hours, minutes, and seconds
+	// of the start date should not be set, as doing so will result in an
+	// error. This field is required on insertion.
+	StartDate string `json:"startDate,omitempty"`
+
+	// TestingStartDate: Testing start date of this placement. The hours,
+	// minutes, and seconds of the start date should not be set, as doing so
+	// will result in an error.
+	TestingStartDate string `json:"testingStartDate,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CapCostOption") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PricingSchedule) MarshalJSON() ([]byte, error) {
+	type noMethod PricingSchedule
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// PricingSchedulePricingPeriod: Pricing Period
+type PricingSchedulePricingPeriod struct {
+	// EndDate: Pricing period end date. This date must be later than, or
+	// the same day as, the pricing period start date, but not later than
+	// the placement end date. The period end date can be the same date as
+	// the period start date. If, for example, you set 6/25/2015 as both the
+	// start and end dates, the effective pricing period date is just that
+	// day only, 6/25/2015. The hours, minutes, and seconds of the end date
+	// should not be set, as doing so will result in an error.
+	EndDate string `json:"endDate,omitempty"`
+
+	// PricingComment: Comments for this pricing period.
+	PricingComment string `json:"pricingComment,omitempty"`
+
+	// RateOrCostNanos: Rate or cost of this pricing period.
+	RateOrCostNanos int64 `json:"rateOrCostNanos,omitempty,string"`
+
+	// StartDate: Pricing period start date. This date must be later than,
+	// or the same day as, the placement start date. The hours, minutes, and
+	// seconds of the start date should not be set, as doing so will result
+	// in an error.
+	StartDate string `json:"startDate,omitempty"`
+
+	// Units: Units of this pricing period.
+	Units int64 `json:"units,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "EndDate") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *PricingSchedulePricingPeriod) MarshalJSON() ([]byte, error) {
+	type noMethod PricingSchedulePricingPeriod
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Project: Contains properties of a DoubleClick Planning project.
+type Project struct {
+	// AccountId: Account ID of this project.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AdvertiserId: Advertiser ID of this project.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AudienceAgeGroup: Audience age group of this project.
+	//
+	// Possible values:
+	//   "PLANNING_AUDIENCE_AGE_18_24"
+	//   "PLANNING_AUDIENCE_AGE_25_34"
+	//   "PLANNING_AUDIENCE_AGE_35_44"
+	//   "PLANNING_AUDIENCE_AGE_45_54"
+	//   "PLANNING_AUDIENCE_AGE_55_64"
+	//   "PLANNING_AUDIENCE_AGE_65_OR_MORE"
+	//   "PLANNING_AUDIENCE_AGE_UNKNOWN"
+	AudienceAgeGroup string `json:"audienceAgeGroup,omitempty"`
+
+	// AudienceGender: Audience gender of this project.
+	//
+	// Possible values:
+	//   "PLANNING_AUDIENCE_GENDER_FEMALE"
+	//   "PLANNING_AUDIENCE_GENDER_MALE"
+	AudienceGender string `json:"audienceGender,omitempty"`
+
+	// Budget: 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.
+	Budget int64 `json:"budget,omitempty,string"`
+
+	// ClientBillingCode: Client billing code of this project.
+	ClientBillingCode string `json:"clientBillingCode,omitempty"`
+
+	// ClientName: Name of the project client.
+	ClientName string `json:"clientName,omitempty"`
+
+	// EndDate: End date of the project.
+	EndDate string `json:"endDate,omitempty"`
+
+	// Id: ID of this project. This is a read-only, auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#project".
+	Kind string `json:"kind,omitempty"`
+
+	// LastModifiedInfo: Information about the most recent modification of
+	// this project.
+	LastModifiedInfo *LastModifiedInfo `json:"lastModifiedInfo,omitempty"`
+
+	// Name: Name of this project.
+	Name string `json:"name,omitempty"`
+
+	// Overview: Overview of this project.
+	Overview string `json:"overview,omitempty"`
+
+	// StartDate: Start date of the project.
+	StartDate string `json:"startDate,omitempty"`
+
+	// SubaccountId: Subaccount ID of this project.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// TargetClicks: Number of clicks that the advertiser is targeting.
+	TargetClicks int64 `json:"targetClicks,omitempty,string"`
+
+	// TargetConversions: Number of conversions that the advertiser is
+	// targeting.
+	TargetConversions int64 `json:"targetConversions,omitempty,string"`
+
+	// TargetCpaNanos: CPA that the advertiser is targeting.
+	TargetCpaNanos int64 `json:"targetCpaNanos,omitempty,string"`
+
+	// TargetCpcNanos: CPC that the advertiser is targeting.
+	TargetCpcNanos int64 `json:"targetCpcNanos,omitempty,string"`
+
+	// TargetCpmNanos: CPM that the advertiser is targeting.
+	TargetCpmNanos int64 `json:"targetCpmNanos,omitempty,string"`
+
+	// TargetImpressions: Number of impressions that the advertiser is
+	// targeting.
+	TargetImpressions int64 `json:"targetImpressions,omitempty,string"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Project) MarshalJSON() ([]byte, error) {
+	type noMethod Project
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ProjectsListResponse: Project List Response
+type ProjectsListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#projectsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Projects: Project collection.
+	Projects []*Project `json:"projects,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ProjectsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod ProjectsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ReachReportCompatibleFields: Represents fields that are compatible to
+// be selected for a report of type "REACH".
+type ReachReportCompatibleFields struct {
+	// DimensionFilters: Dimensions which are compatible to be selected in
+	// the "dimensionFilters" section of the report.
+	DimensionFilters []*Dimension `json:"dimensionFilters,omitempty"`
+
+	// Dimensions: Dimensions which are compatible to be selected in the
+	// "dimensions" section of the report.
+	Dimensions []*Dimension `json:"dimensions,omitempty"`
+
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#reachReportCompatibleFields.
+	Kind string `json:"kind,omitempty"`
+
+	// Metrics: Metrics which are compatible to be selected in the
+	// "metricNames" section of the report.
+	Metrics []*Metric `json:"metrics,omitempty"`
+
+	// PivotedActivityMetrics: Metrics which are compatible to be selected
+	// as activity metrics to pivot on in the "activities" section of the
+	// report.
+	PivotedActivityMetrics []*Metric `json:"pivotedActivityMetrics,omitempty"`
+
+	// ReachByFrequencyMetrics: Metrics which are compatible to be selected
+	// in the "reachByFrequencyMetricNames" section of the report.
+	ReachByFrequencyMetrics []*Metric `json:"reachByFrequencyMetrics,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DimensionFilters") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ReachReportCompatibleFields) MarshalJSON() ([]byte, error) {
+	type noMethod ReachReportCompatibleFields
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Recipient: Represents a recipient.
+type Recipient struct {
+	// DeliveryType: The delivery type for the recipient.
+	//
+	// Possible values:
+	//   "ATTACHMENT"
+	//   "LINK"
+	DeliveryType string `json:"deliveryType,omitempty"`
+
+	// Email: The email address of the recipient.
+	Email string `json:"email,omitempty"`
+
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#recipient.
+	Kind string `json:"kind,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DeliveryType") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Recipient) MarshalJSON() ([]byte, error) {
+	type noMethod Recipient
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Region: Contains information about a region that can be targeted by
+// ads.
+type Region struct {
+	// CountryCode: Country code of the country to which this region
+	// belongs.
+	CountryCode string `json:"countryCode,omitempty"`
+
+	// CountryDartId: DART ID of the country to which this region belongs.
+	CountryDartId int64 `json:"countryDartId,omitempty,string"`
+
+	// DartId: DART ID of this region.
+	DartId int64 `json:"dartId,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#region".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this region.
+	Name string `json:"name,omitempty"`
+
+	// RegionCode: Region code.
+	RegionCode string `json:"regionCode,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CountryCode") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Region) MarshalJSON() ([]byte, error) {
+	type noMethod Region
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// RegionsListResponse: Region List Response
+type RegionsListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#regionsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// Regions: Region collection.
+	Regions []*Region `json:"regions,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *RegionsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod RegionsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// RemarketingList: Contains properties of a remarketing list.
+// Remarketing enables you to create lists of users who have performed
+// specific actions on a site, then target ads to members of those
+// lists. This resource can be used to manage remarketing lists that are
+// owned by your advertisers. To see all remarketing lists that are
+// visible to your advertisers, including those that are shared to your
+// advertiser or account, use the TargetableRemarketingLists resource.
+type RemarketingList struct {
+	// AccountId: Account ID of this remarketing list. This is a read-only,
+	// auto-generated field that is only returned in GET requests.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// Active: Whether this remarketing list is active.
+	Active bool `json:"active,omitempty"`
+
+	// AdvertiserId: Dimension value for the advertiser ID that owns this
+	// remarketing list. This is a required field.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AdvertiserIdDimensionValue: Dimension value for the ID of the
+	// advertiser. This is a read-only, auto-generated field.
+	AdvertiserIdDimensionValue *DimensionValue `json:"advertiserIdDimensionValue,omitempty"`
+
+	// Description: Remarketing list description.
+	Description string `json:"description,omitempty"`
+
+	// Id: Remarketing list ID. This is a read-only, auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#remarketingList".
+	Kind string `json:"kind,omitempty"`
+
+	// LifeSpan: Number of days that a user should remain in the remarketing
+	// list without an impression.
+	LifeSpan int64 `json:"lifeSpan,omitempty,string"`
+
+	// ListPopulationRule: Rule used to populate the remarketing list with
+	// users.
+	ListPopulationRule *ListPopulationRule `json:"listPopulationRule,omitempty"`
+
+	// ListSize: Number of users currently in the list. This is a read-only
+	// field.
+	ListSize int64 `json:"listSize,omitempty,string"`
+
+	// ListSource: Product from which this remarketing list was originated.
+	//
+	// Possible values:
+	//   "REMARKETING_LIST_SOURCE_ADX"
+	//   "REMARKETING_LIST_SOURCE_DBM"
+	//   "REMARKETING_LIST_SOURCE_DFA"
+	//   "REMARKETING_LIST_SOURCE_DFP"
+	//   "REMARKETING_LIST_SOURCE_DMP"
+	//   "REMARKETING_LIST_SOURCE_GA"
+	//   "REMARKETING_LIST_SOURCE_GPLUS"
+	//   "REMARKETING_LIST_SOURCE_OTHER"
+	//   "REMARKETING_LIST_SOURCE_PLAY_STORE"
+	//   "REMARKETING_LIST_SOURCE_XFP"
+	//   "REMARKETING_LIST_SOURCE_YOUTUBE"
+	ListSource string `json:"listSource,omitempty"`
+
+	// Name: Name of the remarketing list. This is a required field. Must be
+	// no greater than 128 characters long.
+	Name string `json:"name,omitempty"`
+
+	// SubaccountId: Subaccount ID of this remarketing list. This is a
+	// read-only, auto-generated field that is only returned in GET
+	// requests.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *RemarketingList) MarshalJSON() ([]byte, error) {
+	type noMethod RemarketingList
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// RemarketingListShare: Contains properties of a remarketing list's
+// sharing information. Sharing allows other accounts or advertisers to
+// target to your remarketing lists. This resource can be used to manage
+// remarketing list sharing to other accounts and advertisers.
+type RemarketingListShare struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#remarketingListShare".
+	Kind string `json:"kind,omitempty"`
+
+	// RemarketingListId: Remarketing list ID. This is a read-only,
+	// auto-generated field.
+	RemarketingListId int64 `json:"remarketingListId,omitempty,string"`
+
+	// SharedAccountIds: Accounts that the remarketing list is shared with.
+	SharedAccountIds googleapi.Int64s `json:"sharedAccountIds,omitempty"`
+
+	// SharedAdvertiserIds: Advertisers that the remarketing list is shared
+	// with.
+	SharedAdvertiserIds googleapi.Int64s `json:"sharedAdvertiserIds,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *RemarketingListShare) MarshalJSON() ([]byte, error) {
+	type noMethod RemarketingListShare
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// RemarketingListsListResponse: Remarketing list response
+type RemarketingListsListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#remarketingListsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// RemarketingLists: Remarketing list collection.
+	RemarketingLists []*RemarketingList `json:"remarketingLists,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *RemarketingListsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod RemarketingListsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Report: Represents a Report resource.
+type Report struct {
+	// AccountId: The account ID to which this report belongs.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// Criteria: The report criteria for a report of type "STANDARD".
+	Criteria *ReportCriteria `json:"criteria,omitempty"`
+
+	// CrossDimensionReachCriteria: The report criteria for a report of type
+	// "CROSS_DIMENSION_REACH".
+	CrossDimensionReachCriteria *ReportCrossDimensionReachCriteria `json:"crossDimensionReachCriteria,omitempty"`
+
+	// Delivery: The report's email delivery settings.
+	Delivery *ReportDelivery `json:"delivery,omitempty"`
+
+	// Etag: The eTag of this response for caching purposes.
+	Etag string `json:"etag,omitempty"`
+
+	// FileName: The filename used when generating report files for this
+	// report.
+	FileName string `json:"fileName,omitempty"`
+
+	// FloodlightCriteria: The report criteria for a report of type
+	// "FLOODLIGHT".
+	FloodlightCriteria *ReportFloodlightCriteria `json:"floodlightCriteria,omitempty"`
+
+	// Format: The output format of the report. If not specified, default
+	// format is "CSV". Note that the actual format in the completed report
+	// file might differ if for instance the report's size exceeds the
+	// format's capabilities. "CSV" will then be the fallback format.
+	//
+	// Possible values:
+	//   "CSV"
+	//   "EXCEL"
+	Format string `json:"format,omitempty"`
+
+	// Id: The unique ID identifying this report resource.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: The kind of resource this is, in this case dfareporting#report.
+	Kind string `json:"kind,omitempty"`
+
+	// LastModifiedTime: The timestamp (in milliseconds since epoch) of when
+	// this report was last modified.
+	LastModifiedTime uint64 `json:"lastModifiedTime,omitempty,string"`
+
+	// Name: The name of the report.
+	Name string `json:"name,omitempty"`
+
+	// OwnerProfileId: The user profile id of the owner of this report.
+	OwnerProfileId int64 `json:"ownerProfileId,omitempty,string"`
+
+	// PathToConversionCriteria: The report criteria for a report of type
+	// "PATH_TO_CONVERSION".
+	PathToConversionCriteria *ReportPathToConversionCriteria `json:"pathToConversionCriteria,omitempty"`
+
+	// ReachCriteria: The report criteria for a report of type "REACH".
+	ReachCriteria *ReportReachCriteria `json:"reachCriteria,omitempty"`
+
+	// Schedule: The report's schedule. Can only be set if the report's
+	// 'dateRange' is a relative date range and the relative date range is
+	// not "TODAY".
+	Schedule *ReportSchedule `json:"schedule,omitempty"`
+
+	// SubAccountId: The subaccount ID to which this report belongs if
+	// applicable.
+	SubAccountId int64 `json:"subAccountId,omitempty,string"`
+
+	// Type: The type of the report.
+	//
+	// Possible values:
+	//   "CROSS_DIMENSION_REACH"
+	//   "FLOODLIGHT"
+	//   "PATH_TO_CONVERSION"
+	//   "REACH"
+	//   "STANDARD"
+	Type string `json:"type,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Report) MarshalJSON() ([]byte, error) {
+	type noMethod Report
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ReportCriteria: The report criteria for a report of type "STANDARD".
+type ReportCriteria struct {
+	// Activities: Activity group.
+	Activities *Activities `json:"activities,omitempty"`
+
+	// CustomRichMediaEvents: Custom Rich Media Events group.
+	CustomRichMediaEvents *CustomRichMediaEvents `json:"customRichMediaEvents,omitempty"`
+
+	// DateRange: The date range for which this report should be run.
+	DateRange *DateRange `json:"dateRange,omitempty"`
+
+	// DimensionFilters: The list of filters on which dimensions are
+	// filtered.
+	// Filters for different dimensions are ANDed, filters for the same
+	// dimension are grouped together and ORed.
+	DimensionFilters []*DimensionValue `json:"dimensionFilters,omitempty"`
+
+	// Dimensions: The list of standard dimensions the report should
+	// include.
+	Dimensions []*SortedDimension `json:"dimensions,omitempty"`
+
+	// MetricNames: The list of names of metrics the report should include.
+	MetricNames []string `json:"metricNames,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Activities") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ReportCriteria) MarshalJSON() ([]byte, error) {
+	type noMethod ReportCriteria
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ReportCrossDimensionReachCriteria: The report criteria for a report
+// of type "CROSS_DIMENSION_REACH".
+type ReportCrossDimensionReachCriteria struct {
+	// Breakdown: The list of dimensions the report should include.
+	Breakdown []*SortedDimension `json:"breakdown,omitempty"`
+
+	// DateRange: The date range this report should be run for.
+	DateRange *DateRange `json:"dateRange,omitempty"`
+
+	// Dimension: The dimension option.
+	//
+	// Possible values:
+	//   "ADVERTISER"
+	//   "CAMPAIGN"
+	//   "SITE_BY_ADVERTISER"
+	//   "SITE_BY_CAMPAIGN"
+	Dimension string `json:"dimension,omitempty"`
+
+	// DimensionFilters: The list of filters on which dimensions are
+	// filtered.
+	DimensionFilters []*DimensionValue `json:"dimensionFilters,omitempty"`
+
+	// MetricNames: The list of names of metrics the report should include.
+	MetricNames []string `json:"metricNames,omitempty"`
+
+	// OverlapMetricNames: The list of names of overlap metrics the report
+	// should include.
+	OverlapMetricNames []string `json:"overlapMetricNames,omitempty"`
+
+	// Pivoted: Whether the report is pivoted or not. Defaults to true.
+	Pivoted bool `json:"pivoted,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Breakdown") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ReportCrossDimensionReachCriteria) MarshalJSON() ([]byte, error) {
+	type noMethod ReportCrossDimensionReachCriteria
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ReportDelivery: The report's email delivery settings.
+type ReportDelivery struct {
+	// EmailOwner: Whether the report should be emailed to the report owner.
+	EmailOwner bool `json:"emailOwner,omitempty"`
+
+	// EmailOwnerDeliveryType: The type of delivery for the owner to
+	// receive, if enabled.
+	//
+	// Possible values:
+	//   "ATTACHMENT"
+	//   "LINK"
+	EmailOwnerDeliveryType string `json:"emailOwnerDeliveryType,omitempty"`
+
+	// Message: The message to be sent with each email.
+	Message string `json:"message,omitempty"`
+
+	// Recipients: The list of recipients to which to email the report.
+	Recipients []*Recipient `json:"recipients,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "EmailOwner") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ReportDelivery) MarshalJSON() ([]byte, error) {
+	type noMethod ReportDelivery
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ReportFloodlightCriteria: The report criteria for a report of type
+// "FLOODLIGHT".
+type ReportFloodlightCriteria struct {
+	// CustomRichMediaEvents: The list of custom rich media events to
+	// include.
+	CustomRichMediaEvents []*DimensionValue `json:"customRichMediaEvents,omitempty"`
+
+	// DateRange: The date range this report should be run for.
+	DateRange *DateRange `json:"dateRange,omitempty"`
+
+	// DimensionFilters: The list of filters on which dimensions are
+	// filtered.
+	// Filters for different dimensions are ANDed, filters for the same
+	// dimension are grouped together and ORed.
+	DimensionFilters []*DimensionValue `json:"dimensionFilters,omitempty"`
+
+	// Dimensions: The list of dimensions the report should include.
+	Dimensions []*SortedDimension `json:"dimensions,omitempty"`
+
+	// FloodlightConfigId: The floodlight ID for which to show data in this
+	// report. All advertisers associated with that ID will automatically be
+	// added. The dimension of the value needs to be
+	// 'dfa:floodlightConfigId'.
+	FloodlightConfigId *DimensionValue `json:"floodlightConfigId,omitempty"`
+
+	// MetricNames: The list of names of metrics the report should include.
+	MetricNames []string `json:"metricNames,omitempty"`
+
+	// ReportProperties: The properties of the report.
+	ReportProperties *ReportFloodlightCriteriaReportProperties `json:"reportProperties,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "CustomRichMediaEvents") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ReportFloodlightCriteria) MarshalJSON() ([]byte, error) {
+	type noMethod ReportFloodlightCriteria
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ReportFloodlightCriteriaReportProperties: The properties of the
+// report.
+type ReportFloodlightCriteriaReportProperties struct {
+	// IncludeAttributedIPConversions: Include conversions that have no
+	// cookie, but do have an exposure path.
+	IncludeAttributedIPConversions bool `json:"includeAttributedIPConversions,omitempty"`
+
+	// IncludeUnattributedCookieConversions: Include conversions of users
+	// with a DoubleClick cookie but without an exposure. That means the
+	// user did not click or see an ad from the advertiser within the
+	// Floodlight group, or that the interaction happened outside the
+	// lookback window.
+	IncludeUnattributedCookieConversions bool `json:"includeUnattributedCookieConversions,omitempty"`
+
+	// IncludeUnattributedIPConversions: Include conversions that have no
+	// associated cookies and no exposures. It’s therefore impossible to
+	// know how the user was exposed to your ads during the lookback window
+	// prior to a conversion.
+	IncludeUnattributedIPConversions bool `json:"includeUnattributedIPConversions,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "IncludeAttributedIPConversions") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ReportFloodlightCriteriaReportProperties) MarshalJSON() ([]byte, error) {
+	type noMethod ReportFloodlightCriteriaReportProperties
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ReportPathToConversionCriteria: The report criteria for a report of
+// type "PATH_TO_CONVERSION".
+type ReportPathToConversionCriteria struct {
+	// ActivityFilters: The list of 'dfa:activity' values to filter on.
+	ActivityFilters []*DimensionValue `json:"activityFilters,omitempty"`
+
+	// ConversionDimensions: The list of conversion dimensions the report
+	// should include.
+	ConversionDimensions []*SortedDimension `json:"conversionDimensions,omitempty"`
+
+	// CustomFloodlightVariables: The list of custom floodlight variables
+	// the report should include.
+	CustomFloodlightVariables []*SortedDimension `json:"customFloodlightVariables,omitempty"`
+
+	// CustomRichMediaEvents: The list of custom rich media events to
+	// include.
+	CustomRichMediaEvents []*DimensionValue `json:"customRichMediaEvents,omitempty"`
+
+	// DateRange: The date range this report should be run for.
+	DateRange *DateRange `json:"dateRange,omitempty"`
+
+	// FloodlightConfigId: The floodlight ID for which to show data in this
+	// report. All advertisers associated with that ID will automatically be
+	// added. The dimension of the value needs to be
+	// 'dfa:floodlightConfigId'.
+	FloodlightConfigId *DimensionValue `json:"floodlightConfigId,omitempty"`
+
+	// MetricNames: The list of names of metrics the report should include.
+	MetricNames []string `json:"metricNames,omitempty"`
+
+	// PerInteractionDimensions: The list of per interaction dimensions the
+	// report should include.
+	PerInteractionDimensions []*SortedDimension `json:"perInteractionDimensions,omitempty"`
+
+	// ReportProperties: The properties of the report.
+	ReportProperties *ReportPathToConversionCriteriaReportProperties `json:"reportProperties,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActivityFilters") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ReportPathToConversionCriteria) MarshalJSON() ([]byte, error) {
+	type noMethod ReportPathToConversionCriteria
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ReportPathToConversionCriteriaReportProperties: The properties of the
+// report.
+type ReportPathToConversionCriteriaReportProperties struct {
+	// ClicksLookbackWindow: DFA checks to see if a click interaction
+	// occurred within the specified period of time before a conversion. By
+	// default the value is pulled from Floodlight or you can manually enter
+	// a custom value. Valid values: 1-90.
+	ClicksLookbackWindow int64 `json:"clicksLookbackWindow,omitempty"`
+
+	// ImpressionsLookbackWindow: DFA checks to see if an impression
+	// interaction occurred within the specified period of time before a
+	// conversion. By default the value is pulled from Floodlight or you can
+	// manually enter a custom value. Valid values: 1-90.
+	ImpressionsLookbackWindow int64 `json:"impressionsLookbackWindow,omitempty"`
+
+	// IncludeAttributedIPConversions: Deprecated: has no effect.
+	IncludeAttributedIPConversions bool `json:"includeAttributedIPConversions,omitempty"`
+
+	// IncludeUnattributedCookieConversions: Include conversions of users
+	// with a DoubleClick cookie but without an exposure. That means the
+	// user did not click or see an ad from the advertiser within the
+	// Floodlight group, or that the interaction happened outside the
+	// lookback window.
+	IncludeUnattributedCookieConversions bool `json:"includeUnattributedCookieConversions,omitempty"`
+
+	// IncludeUnattributedIPConversions: Include conversions that have no
+	// associated cookies and no exposures. It’s therefore impossible to
+	// know how the user was exposed to your ads during the lookback window
+	// prior to a conversion.
+	IncludeUnattributedIPConversions bool `json:"includeUnattributedIPConversions,omitempty"`
+
+	// MaximumClickInteractions: The maximum number of click interactions to
+	// include in the report. Advertisers currently paying for E2C reports
+	// get up to 200 (100 clicks, 100 impressions). If another advertiser in
+	// your network is paying for E2C, you can have up to 5 total exposures
+	// per report.
+	MaximumClickInteractions int64 `json:"maximumClickInteractions,omitempty"`
+
+	// MaximumImpressionInteractions: The maximum number of click
+	// interactions to include in the report. Advertisers currently paying
+	// for E2C reports get up to 200 (100 clicks, 100 impressions). If
+	// another advertiser in your network is paying for E2C, you can have up
+	// to 5 total exposures per report.
+	MaximumImpressionInteractions int64 `json:"maximumImpressionInteractions,omitempty"`
+
+	// MaximumInteractionGap: The maximum amount of time that can take place
+	// between interactions (clicks or impressions) by the same user. Valid
+	// values: 1-90.
+	MaximumInteractionGap int64 `json:"maximumInteractionGap,omitempty"`
+
+	// PivotOnInteractionPath: Enable pivoting on interaction path.
+	PivotOnInteractionPath bool `json:"pivotOnInteractionPath,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "ClicksLookbackWindow") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ReportPathToConversionCriteriaReportProperties) MarshalJSON() ([]byte, error) {
+	type noMethod ReportPathToConversionCriteriaReportProperties
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ReportReachCriteria: The report criteria for a report of type
+// "REACH".
+type ReportReachCriteria struct {
+	// Activities: Activity group.
+	Activities *Activities `json:"activities,omitempty"`
+
+	// CustomRichMediaEvents: Custom Rich Media Events group.
+	CustomRichMediaEvents *CustomRichMediaEvents `json:"customRichMediaEvents,omitempty"`
+
+	// DateRange: The date range this report should be run for.
+	DateRange *DateRange `json:"dateRange,omitempty"`
+
+	// DimensionFilters: The list of filters on which dimensions are
+	// filtered.
+	// Filters for different dimensions are ANDed, filters for the same
+	// dimension are grouped together and ORed.
+	DimensionFilters []*DimensionValue `json:"dimensionFilters,omitempty"`
+
+	// Dimensions: The list of dimensions the report should include.
+	Dimensions []*SortedDimension `json:"dimensions,omitempty"`
+
+	// EnableAllDimensionCombinations: Whether to enable all reach dimension
+	// combinations in the report. Defaults to false. If enabled, the date
+	// range of the report should be within the last three months.
+	EnableAllDimensionCombinations bool `json:"enableAllDimensionCombinations,omitempty"`
+
+	// MetricNames: The list of names of metrics the report should include.
+	MetricNames []string `json:"metricNames,omitempty"`
+
+	// ReachByFrequencyMetricNames: The list of names of  Reach By Frequency
+	// metrics the report should include.
+	ReachByFrequencyMetricNames []string `json:"reachByFrequencyMetricNames,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Activities") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ReportReachCriteria) MarshalJSON() ([]byte, error) {
+	type noMethod ReportReachCriteria
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ReportSchedule: The report's schedule. Can only be set if the
+// report's 'dateRange' is a relative date range and the relative date
+// range is not "TODAY".
+type ReportSchedule struct {
+	// Active: Whether the schedule is active or not. Must be set to either
+	// true or false.
+	Active bool `json:"active,omitempty"`
+
+	// Every: Defines every how many days, weeks or months the report should
+	// be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or
+	// "MONTHLY".
+	Every int64 `json:"every,omitempty"`
+
+	// ExpirationDate: The expiration date when the scheduled report stops
+	// running.
+	ExpirationDate string `json:"expirationDate,omitempty"`
+
+	// Repeats: The interval for which the report is repeated. Note:
+	// - "DAILY" also requires field "every" to be set.
+	// - "WEEKLY" also requires fields "every" and "repeatsOnWeekDays" to be
+	// set.
+	// - "MONTHLY" also requires fields "every" and "runsOnDayOfMonth" to be
+	// set.
+	Repeats string `json:"repeats,omitempty"`
+
+	// RepeatsOnWeekDays: List of week days "WEEKLY" on which scheduled
+	// reports should run.
+	//
+	// Possible values:
+	//   "FRIDAY"
+	//   "MONDAY"
+	//   "SATURDAY"
+	//   "SUNDAY"
+	//   "THURSDAY"
+	//   "TUESDAY"
+	//   "WEDNESDAY"
+	RepeatsOnWeekDays []string `json:"repeatsOnWeekDays,omitempty"`
+
+	// RunsOnDayOfMonth: Enum to define for "MONTHLY" scheduled reports
+	// whether reports should be repeated on the same day of the month as
+	// "startDate" or the same day of the week of the month.
+	// Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02),
+	// "DAY_OF_MONTH" would run subsequent reports on the 2nd of every
+	// Month, and "WEEK_OF_MONTH" would run subsequent reports on the first
+	// Monday of the month.
+	//
+	// Possible values:
+	//   "DAY_OF_MONTH"
+	//   "WEEK_OF_MONTH"
+	RunsOnDayOfMonth string `json:"runsOnDayOfMonth,omitempty"`
+
+	// StartDate: Start date of date range for which scheduled reports
+	// should be run.
+	StartDate string `json:"startDate,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Active") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ReportSchedule) MarshalJSON() ([]byte, error) {
+	type noMethod ReportSchedule
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ReportCompatibleFields: Represents fields that are compatible to be
+// selected for a report of type "STANDARD".
+type ReportCompatibleFields struct {
+	// DimensionFilters: Dimensions which are compatible to be selected in
+	// the "dimensionFilters" section of the report.
+	DimensionFilters []*Dimension `json:"dimensionFilters,omitempty"`
+
+	// Dimensions: Dimensions which are compatible to be selected in the
+	// "dimensions" section of the report.
+	Dimensions []*Dimension `json:"dimensions,omitempty"`
+
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#reportCompatibleFields.
+	Kind string `json:"kind,omitempty"`
+
+	// Metrics: Metrics which are compatible to be selected in the
+	// "metricNames" section of the report.
+	Metrics []*Metric `json:"metrics,omitempty"`
+
+	// PivotedActivityMetrics: Metrics which are compatible to be selected
+	// as activity metrics to pivot on in the "activities" section of the
+	// report.
+	PivotedActivityMetrics []*Metric `json:"pivotedActivityMetrics,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DimensionFilters") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ReportCompatibleFields) MarshalJSON() ([]byte, error) {
+	type noMethod ReportCompatibleFields
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ReportList: Represents the list of reports.
+type ReportList struct {
+	// Etag: The eTag of this response for caching purposes.
+	Etag string `json:"etag,omitempty"`
+
+	// Items: The reports returned in this response.
+	Items []*Report `json:"items,omitempty"`
+
+	// Kind: The kind of list this is, in this case dfareporting#reportList.
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Continuation token used to page through reports. To
+	// retrieve the next page of results, set the next request's "pageToken"
+	// to the value of this field. The page token is only valid for a
+	// limited amount of time and should not be persisted.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Etag") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ReportList) MarshalJSON() ([]byte, error) {
+	type noMethod ReportList
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ReportsConfiguration: Reporting Configuration
+type ReportsConfiguration struct {
+	// ExposureToConversionEnabled: Whether the exposure to conversion
+	// report is enabled. This report shows detailed pathway information on
+	// up to 10 of the most recent ad exposures seen by a user before
+	// converting.
+	ExposureToConversionEnabled bool `json:"exposureToConversionEnabled,omitempty"`
+
+	// LookbackConfiguration: Default lookback windows for new advertisers
+	// in this account.
+	LookbackConfiguration *LookbackConfiguration `json:"lookbackConfiguration,omitempty"`
+
+	// ReportGenerationTimeZoneId: Report generation time zone ID of this
+	// account. This is a required field that can only be changed by a
+	// superuser.
+	// Acceptable values are:
+	//
+	// - "1" for "America/New_York"
+	// - "2" for "Europe/London"
+	// - "3" for "Europe/Paris"
+	// - "4" for "Africa/Johannesburg"
+	// - "5" for "Asia/Jerusalem"
+	// - "6" for "Asia/Shanghai"
+	// - "7" for "Asia/Hong_Kong"
+	// - "8" for "Asia/Tokyo"
+	// - "9" for "Australia/Sydney"
+	// - "10" for "Asia/Dubai"
+	// - "11" for "America/Los_Angeles"
+	// - "12" for "Pacific/Auckland"
+	// - "13" for "America/Sao_Paulo"
+	ReportGenerationTimeZoneId int64 `json:"reportGenerationTimeZoneId,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "ExposureToConversionEnabled") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ReportsConfiguration) MarshalJSON() ([]byte, error) {
+	type noMethod ReportsConfiguration
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// RichMediaExitOverride: Rich Media Exit Override.
+type RichMediaExitOverride struct {
+	// CustomExitUrl: Click-through URL to override the default exit URL.
+	// Applicable if the useCustomExitUrl field is set to true.
+	CustomExitUrl string `json:"customExitUrl,omitempty"`
+
+	// ExitId: ID for the override to refer to a specific exit in the
+	// creative.
+	ExitId int64 `json:"exitId,omitempty,string"`
+
+	// UseCustomExitUrl: Whether to use the custom exit URL.
+	UseCustomExitUrl bool `json:"useCustomExitUrl,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CustomExitUrl") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *RichMediaExitOverride) MarshalJSON() ([]byte, error) {
+	type noMethod RichMediaExitOverride
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Site: Contains properties of a site.
+type Site struct {
+	// AccountId: Account ID of this site. This is a read-only field that
+	// can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// Approved: Whether this site is approved.
+	Approved bool `json:"approved,omitempty"`
+
+	// DirectorySiteId: Directory site associated with this site. This is a
+	// required field that is read-only after insertion.
+	DirectorySiteId int64 `json:"directorySiteId,omitempty,string"`
+
+	// DirectorySiteIdDimensionValue: Dimension value for the ID of the
+	// directory site. This is a read-only, auto-generated field.
+	DirectorySiteIdDimensionValue *DimensionValue `json:"directorySiteIdDimensionValue,omitempty"`
+
+	// Id: ID of this site. This is a read-only, auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// IdDimensionValue: Dimension value for the ID of this site. This is a
+	// read-only, auto-generated field.
+	IdDimensionValue *DimensionValue `json:"idDimensionValue,omitempty"`
+
+	// KeyName: Key name of this site. This is a read-only, auto-generated
+	// field.
+	KeyName string `json:"keyName,omitempty"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#site".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this site.This is a required field. Must be less than
+	// 128 characters long. If this site is under a subaccount, the name
+	// must be unique among sites of the same subaccount. Otherwise, this
+	// site is a top-level site, and the name must be unique among top-level
+	// sites of the same account.
+	Name string `json:"name,omitempty"`
+
+	// SiteContacts: Site contacts.
+	SiteContacts []*SiteContact `json:"siteContacts,omitempty"`
+
+	// SiteSettings: Site-wide settings.
+	SiteSettings *SiteSettings `json:"siteSettings,omitempty"`
+
+	// SubaccountId: Subaccount ID of this site. This is a read-only field
+	// that can be left blank.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Site) MarshalJSON() ([]byte, error) {
+	type noMethod Site
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// SiteContact: Site Contact
+type SiteContact struct {
+	// Address: Address of this site contact.
+	Address string `json:"address,omitempty"`
+
+	// ContactType: Site contact type.
+	//
+	// Possible values:
+	//   "SALES_PERSON"
+	//   "TRAFFICKER"
+	ContactType string `json:"contactType,omitempty"`
+
+	// Email: Email address of this site contact. This is a required field.
+	Email string `json:"email,omitempty"`
+
+	// FirstName: First name of this site contact.
+	FirstName string `json:"firstName,omitempty"`
+
+	// Id: ID of this site contact. This is a read-only, auto-generated
+	// field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// LastName: Last name of this site contact.
+	LastName string `json:"lastName,omitempty"`
+
+	// Phone: Primary phone number of this site contact.
+	Phone string `json:"phone,omitempty"`
+
+	// Title: Title or designation of this site contact.
+	Title string `json:"title,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Address") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SiteContact) MarshalJSON() ([]byte, error) {
+	type noMethod SiteContact
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// SiteSettings: Site Settings
+type SiteSettings struct {
+	// ActiveViewOptOut: Whether active view creatives are disabled for this
+	// site.
+	ActiveViewOptOut bool `json:"activeViewOptOut,omitempty"`
+
+	// CreativeSettings: Site-wide creative settings.
+	CreativeSettings *CreativeSettings `json:"creativeSettings,omitempty"`
+
+	// DisableBrandSafeAds: Whether brand safe ads are disabled for this
+	// site.
+	DisableBrandSafeAds bool `json:"disableBrandSafeAds,omitempty"`
+
+	// DisableNewCookie: Whether new cookies are disabled for this site.
+	DisableNewCookie bool `json:"disableNewCookie,omitempty"`
+
+	// LookbackConfiguration: Lookback window settings for this site.
+	LookbackConfiguration *LookbackConfiguration `json:"lookbackConfiguration,omitempty"`
+
+	// TagSetting: Configuration settings for dynamic and image floodlight
+	// tags.
+	TagSetting *TagSetting `json:"tagSetting,omitempty"`
+
+	// VideoActiveViewOptOut: Whether Verification and ActiveView are
+	// disabled for in-stream video creatives on this site. The same setting
+	// videoActiveViewOptOut exists on the directory site level -- the opt
+	// out occurs if either of these settings are true. These settings are
+	// distinct from DirectorySites.settings.activeViewOptOut or
+	// Sites.siteSettings.activeViewOptOut which only apply to display ads.
+	// However, Accounts.activeViewOptOut opts out both video traffic, as
+	// well as display ads, from Verification and ActiveView.
+	VideoActiveViewOptOut bool `json:"videoActiveViewOptOut,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActiveViewOptOut") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SiteSettings) MarshalJSON() ([]byte, error) {
+	type noMethod SiteSettings
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// SitesListResponse: Site List Response
+type SitesListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#sitesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Sites: Site collection.
+	Sites []*Site `json:"sites,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SitesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod SitesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Size: Represents the dimensions of ads, placements, creatives, or
+// creative assets.
+type Size struct {
+	// Height: Height of this size.
+	Height int64 `json:"height,omitempty"`
+
+	// Iab: IAB standard size. This is a read-only, auto-generated field.
+	Iab bool `json:"iab,omitempty"`
+
+	// Id: ID of this size. This is a read-only, auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#size".
+	Kind string `json:"kind,omitempty"`
+
+	// Width: Width of this size.
+	Width int64 `json:"width,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Height") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Size) MarshalJSON() ([]byte, error) {
+	type noMethod Size
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// SizesListResponse: Size List Response
+type SizesListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#sizesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// Sizes: Size collection.
+	Sizes []*Size `json:"sizes,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SizesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod SizesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// SortedDimension: Represents a sorted dimension.
+type SortedDimension struct {
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#sortedDimension.
+	Kind string `json:"kind,omitempty"`
+
+	// Name: The name of the dimension.
+	Name string `json:"name,omitempty"`
+
+	// SortOrder: An optional sort order for the dimension column.
+	//
+	// Possible values:
+	//   "ASCENDING"
+	//   "DESCENDING"
+	SortOrder string `json:"sortOrder,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SortedDimension) MarshalJSON() ([]byte, error) {
+	type noMethod SortedDimension
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Subaccount: Contains properties of a DCM subaccount.
+type Subaccount struct {
+	// AccountId: ID of the account that contains this subaccount. This is a
+	// read-only field that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AvailablePermissionIds: IDs of the available user role permissions
+	// for this subaccount.
+	AvailablePermissionIds googleapi.Int64s `json:"availablePermissionIds,omitempty"`
+
+	// Id: ID of this subaccount. This is a read-only, auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#subaccount".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this subaccount. This is a required field. Must be less
+	// than 128 characters long and be unique among subaccounts of the same
+	// account.
+	Name string `json:"name,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Subaccount) MarshalJSON() ([]byte, error) {
+	type noMethod Subaccount
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// SubaccountsListResponse: Subaccount List Response
+type SubaccountsListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#subaccountsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Subaccounts: Subaccount collection.
+	Subaccounts []*Subaccount `json:"subaccounts,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SubaccountsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod SubaccountsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// TagData: Placement Tag Data
+type TagData struct {
+	// AdId: Ad associated with this placement tag.
+	AdId int64 `json:"adId,omitempty,string"`
+
+	// ClickTag: Tag string to record a click.
+	ClickTag string `json:"clickTag,omitempty"`
+
+	// CreativeId: Creative associated with this placement tag.
+	CreativeId int64 `json:"creativeId,omitempty,string"`
+
+	// Format: TagData tag format of this tag.
+	//
+	// Possible values:
+	//   "PLACEMENT_TAG_CLICK_COMMANDS"
+	//   "PLACEMENT_TAG_IFRAME_ILAYER"
+	//   "PLACEMENT_TAG_IFRAME_JAVASCRIPT"
+	//   "PLACEMENT_TAG_IFRAME_JAVASCRIPT_LEGACY"
+	//   "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH"
+	//   "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3"
+	//   "PLACEMENT_TAG_INTERNAL_REDIRECT"
+	//   "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT"
+	//   "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT_LEGACY"
+	//   "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT"
+	//   "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT"
+	//   "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT_LEGACY"
+	//   "PLACEMENT_TAG_JAVASCRIPT"
+	//   "PLACEMENT_TAG_JAVASCRIPT_LEGACY"
+	//   "PLACEMENT_TAG_STANDARD"
+	//   "PLACEMENT_TAG_TRACKING"
+	//   "PLACEMENT_TAG_TRACKING_IFRAME"
+	//   "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+	Format string `json:"format,omitempty"`
+
+	// ImpressionTag: Tag string for serving an ad.
+	ImpressionTag string `json:"impressionTag,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AdId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *TagData) MarshalJSON() ([]byte, error) {
+	type noMethod TagData
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// TagSetting: Tag Settings
+type TagSetting struct {
+	// AdditionalKeyValues: Additional key-values to be included in tags.
+	// Each key-value pair must be of the form key=value, and pairs must be
+	// separated by a semicolon (;). Keys and values must not contain
+	// commas. For example, id=2;color=red is a valid value for this field.
+	AdditionalKeyValues string `json:"additionalKeyValues,omitempty"`
+
+	// IncludeClickThroughUrls: Whether static landing page URLs should be
+	// included in the tags. This setting applies only to placements.
+	IncludeClickThroughUrls bool `json:"includeClickThroughUrls,omitempty"`
+
+	// IncludeClickTracking: Whether click-tracking string should be
+	// included in the tags.
+	IncludeClickTracking bool `json:"includeClickTracking,omitempty"`
+
+	// KeywordOption: Option specifying how keywords are embedded in ad
+	// tags. This setting can be used to specify whether keyword
+	// placeholders are inserted in placement tags for this site. Publishers
+	// can then add keywords to those placeholders.
+	//
+	// Possible values:
+	//   "GENERATE_SEPARATE_TAG_FOR_EACH_KEYWORD"
+	//   "IGNORE"
+	//   "PLACEHOLDER_WITH_LIST_OF_KEYWORDS"
+	KeywordOption string `json:"keywordOption,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AdditionalKeyValues")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *TagSetting) MarshalJSON() ([]byte, error) {
+	type noMethod TagSetting
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// TagSettings: Dynamic and Image Tag Settings.
+type TagSettings struct {
+	// DynamicTagEnabled: Whether dynamic floodlight tags are enabled.
+	DynamicTagEnabled bool `json:"dynamicTagEnabled,omitempty"`
+
+	// ImageTagEnabled: Whether image tags are enabled.
+	ImageTagEnabled bool `json:"imageTagEnabled,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DynamicTagEnabled")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *TagSettings) MarshalJSON() ([]byte, error) {
+	type noMethod TagSettings
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// TargetWindow: Target Window.
+type TargetWindow struct {
+	// CustomHtml: User-entered value.
+	CustomHtml string `json:"customHtml,omitempty"`
+
+	// TargetWindowOption: Type of browser window for which the backup image
+	// of the flash creative can be displayed.
+	//
+	// Possible values:
+	//   "CURRENT_WINDOW"
+	//   "CUSTOM"
+	//   "NEW_WINDOW"
+	TargetWindowOption string `json:"targetWindowOption,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CustomHtml") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *TargetWindow) MarshalJSON() ([]byte, error) {
+	type noMethod TargetWindow
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// TargetableRemarketingList: Contains properties of a targetable
+// remarketing list. Remarketing enables you to create lists of users
+// who have performed specific actions on a site, then target ads to
+// members of those lists. This resource is a read-only view of a
+// remarketing list to be used to faciliate targeting ads to specific
+// lists. Remarketing lists that are owned by your advertisers and those
+// that are shared to your advertisers or account are accessible via
+// this resource. To manage remarketing lists that are owned by your
+// advertisers, use the RemarketingLists resource.
+type TargetableRemarketingList struct {
+	// AccountId: Account ID of this remarketing list. This is a read-only,
+	// auto-generated field that is only returned in GET requests.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// Active: Whether this targetable remarketing list is active.
+	Active bool `json:"active,omitempty"`
+
+	// AdvertiserId: Dimension value for the advertiser ID that owns this
+	// targetable remarketing list.
+	AdvertiserId int64 `json:"advertiserId,omitempty,string"`
+
+	// AdvertiserIdDimensionValue: Dimension value for the ID of the
+	// advertiser.
+	AdvertiserIdDimensionValue *DimensionValue `json:"advertiserIdDimensionValue,omitempty"`
+
+	// Description: Targetable remarketing list description.
+	Description string `json:"description,omitempty"`
+
+	// Id: Targetable remarketing list ID.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#targetableRemarketingList".
+	Kind string `json:"kind,omitempty"`
+
+	// LifeSpan: Number of days that a user should remain in the targetable
+	// remarketing list without an impression.
+	LifeSpan int64 `json:"lifeSpan,omitempty,string"`
+
+	// ListSize: Number of users currently in the list. This is a read-only
+	// field.
+	ListSize int64 `json:"listSize,omitempty,string"`
+
+	// ListSource: Product from which this targetable remarketing list was
+	// originated.
+	//
+	// Possible values:
+	//   "REMARKETING_LIST_SOURCE_ADX"
+	//   "REMARKETING_LIST_SOURCE_DBM"
+	//   "REMARKETING_LIST_SOURCE_DFA"
+	//   "REMARKETING_LIST_SOURCE_DFP"
+	//   "REMARKETING_LIST_SOURCE_DMP"
+	//   "REMARKETING_LIST_SOURCE_GA"
+	//   "REMARKETING_LIST_SOURCE_GPLUS"
+	//   "REMARKETING_LIST_SOURCE_OTHER"
+	//   "REMARKETING_LIST_SOURCE_PLAY_STORE"
+	//   "REMARKETING_LIST_SOURCE_XFP"
+	//   "REMARKETING_LIST_SOURCE_YOUTUBE"
+	ListSource string `json:"listSource,omitempty"`
+
+	// Name: Name of the targetable remarketing list. Is no greater than 128
+	// characters long.
+	Name string `json:"name,omitempty"`
+
+	// SubaccountId: Subaccount ID of this remarketing list. This is a
+	// read-only, auto-generated field that is only returned in GET
+	// requests.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *TargetableRemarketingList) MarshalJSON() ([]byte, error) {
+	type noMethod TargetableRemarketingList
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// TargetableRemarketingListsListResponse: Targetable remarketing list
+// response
+type TargetableRemarketingListsListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#targetableRemarketingListsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// TargetableRemarketingLists: Targetable remarketing list collection.
+	TargetableRemarketingLists []*TargetableRemarketingList `json:"targetableRemarketingLists,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *TargetableRemarketingListsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod TargetableRemarketingListsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// TechnologyTargeting: Technology Targeting.
+type TechnologyTargeting struct {
+	// Browsers: Browsers that this ad targets. For each browser either set
+	// browserVersionId or dartId along with the version numbers. If both
+	// are specified, only browserVersionId will be used.The other fields
+	// are populated automatically when the ad is inserted or updated.
+	Browsers []*Browser `json:"browsers,omitempty"`
+
+	// ConnectionTypes: Connection types that this ad targets. For each
+	// connection type only id is required.The other fields are populated
+	// automatically when the ad is inserted or updated.
+	ConnectionTypes []*ConnectionType `json:"connectionTypes,omitempty"`
+
+	// MobileCarriers: Mobile carriers that this ad targets. For each mobile
+	// carrier only id is required, and the other fields are populated
+	// automatically when the ad is inserted or updated. If targeting a
+	// mobile carrier, do not set targeting for any zip codes.
+	MobileCarriers []*MobileCarrier `json:"mobileCarriers,omitempty"`
+
+	// OperatingSystemVersions: Operating system versions that this ad
+	// targets. To target all versions, use operatingSystems. For each
+	// operating system version, only id is required. The other fields are
+	// populated automatically when the ad is inserted or updated. If
+	// targeting an operating system version, do not set targeting for the
+	// corresponding operating system in operatingSystems.
+	OperatingSystemVersions []*OperatingSystemVersion `json:"operatingSystemVersions,omitempty"`
+
+	// OperatingSystems: Operating systems that this ad targets. To target
+	// specific versions, use operatingSystemVersions. For each operating
+	// system only dartId is required. The other fields are populated
+	// automatically when the ad is inserted or updated. If targeting an
+	// operating system, do not set targeting for operating system versions
+	// for the same operating system.
+	OperatingSystems []*OperatingSystem `json:"operatingSystems,omitempty"`
+
+	// PlatformTypes: Platform types that this ad targets. For example,
+	// desktop, mobile, or tablet. For each platform type, only id is
+	// required, and the other fields are populated automatically when the
+	// ad is inserted or updated.
+	PlatformTypes []*PlatformType `json:"platformTypes,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Browsers") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *TechnologyTargeting) MarshalJSON() ([]byte, error) {
+	type noMethod TechnologyTargeting
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ThirdPartyAuthenticationToken: Third Party Authentication Token
+type ThirdPartyAuthenticationToken struct {
+	// Name: Name of the third-party authentication token.
+	Name string `json:"name,omitempty"`
+
+	// Value: Value of the third-party authentication token. This is a
+	// read-only, auto-generated field.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Name") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ThirdPartyAuthenticationToken) MarshalJSON() ([]byte, error) {
+	type noMethod ThirdPartyAuthenticationToken
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ThirdPartyTrackingUrl: Third-party Tracking URL.
+type ThirdPartyTrackingUrl struct {
+	// ThirdPartyUrlType: Third-party URL type for in-stream video
+	// creatives.
+	//
+	// Possible values:
+	//   "CLICK_TRACKING"
+	//   "IMPRESSION"
+	//   "RICH_MEDIA_BACKUP_IMPRESSION"
+	//   "RICH_MEDIA_IMPRESSION"
+	//   "RICH_MEDIA_RM_IMPRESSION"
+	//   "SURVEY"
+	//   "VIDEO_COMPLETE"
+	//   "VIDEO_CUSTOM"
+	//   "VIDEO_FIRST_QUARTILE"
+	//   "VIDEO_FULLSCREEN"
+	//   "VIDEO_MIDPOINT"
+	//   "VIDEO_MUTE"
+	//   "VIDEO_PAUSE"
+	//   "VIDEO_PROGRESS"
+	//   "VIDEO_REWIND"
+	//   "VIDEO_SKIP"
+	//   "VIDEO_START"
+	//   "VIDEO_STOP"
+	//   "VIDEO_THIRD_QUARTILE"
+	ThirdPartyUrlType string `json:"thirdPartyUrlType,omitempty"`
+
+	// Url: URL for the specified third-party URL type.
+	Url string `json:"url,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ThirdPartyUrlType")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ThirdPartyTrackingUrl) MarshalJSON() ([]byte, error) {
+	type noMethod ThirdPartyTrackingUrl
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// UserDefinedVariableConfiguration: User Defined Variable
+// configuration.
+type UserDefinedVariableConfiguration struct {
+	// DataType: Data type for the variable. This is a required field.
+	//
+	// Possible values:
+	//   "NUMBER"
+	//   "STRING"
+	DataType string `json:"dataType,omitempty"`
+
+	// ReportName: User-friendly name for the variable which will appear in
+	// reports. This is a required field, must be less than 64 characters
+	// long, and cannot contain the following characters: ""<>".
+	ReportName string `json:"reportName,omitempty"`
+
+	// VariableType: Variable name in the tag. This is a required field.
+	//
+	// Possible values:
+	//   "U1"
+	//   "U10"
+	//   "U11"
+	//   "U12"
+	//   "U13"
+	//   "U14"
+	//   "U15"
+	//   "U16"
+	//   "U17"
+	//   "U18"
+	//   "U19"
+	//   "U2"
+	//   "U20"
+	//   "U3"
+	//   "U4"
+	//   "U5"
+	//   "U6"
+	//   "U7"
+	//   "U8"
+	//   "U9"
+	VariableType string `json:"variableType,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DataType") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *UserDefinedVariableConfiguration) MarshalJSON() ([]byte, error) {
+	type noMethod UserDefinedVariableConfiguration
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// UserProfile: Represents a UserProfile resource.
+type UserProfile struct {
+	// AccountId: The account ID to which this profile belongs.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// AccountName: The account name this profile belongs to.
+	AccountName string `json:"accountName,omitempty"`
+
+	// Etag: The eTag of this response for caching purposes.
+	Etag string `json:"etag,omitempty"`
+
+	// Kind: The kind of resource this is, in this case
+	// dfareporting#userProfile.
+	Kind string `json:"kind,omitempty"`
+
+	// ProfileId: The unique ID of the user profile.
+	ProfileId int64 `json:"profileId,omitempty,string"`
+
+	// SubAccountId: The sub account ID this profile belongs to if
+	// applicable.
+	SubAccountId int64 `json:"subAccountId,omitempty,string"`
+
+	// SubAccountName: The sub account name this profile belongs to if
+	// applicable.
+	SubAccountName string `json:"subAccountName,omitempty"`
+
+	// UserName: The user name.
+	UserName string `json:"userName,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *UserProfile) MarshalJSON() ([]byte, error) {
+	type noMethod UserProfile
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// UserProfileList: Represents the list of user profiles.
+type UserProfileList struct {
+	// Etag: The eTag of this response for caching purposes.
+	Etag string `json:"etag,omitempty"`
+
+	// Items: The user profiles returned in this response.
+	Items []*UserProfile `json:"items,omitempty"`
+
+	// Kind: The kind of list this is, in this case
+	// dfareporting#userProfileList.
+	Kind string `json:"kind,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Etag") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *UserProfileList) MarshalJSON() ([]byte, error) {
+	type noMethod UserProfileList
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// UserRole: Contains properties of auser role, which is used to manage
+// user access.
+type UserRole struct {
+	// AccountId: Account ID of this user role. This is a read-only field
+	// that can be left blank.
+	AccountId int64 `json:"accountId,omitempty,string"`
+
+	// DefaultUserRole: Whether this is a default user role. Default user
+	// roles are created by the system for the account/subaccount and cannot
+	// be modified or deleted. Each default user role comes with a basic set
+	// of preassigned permissions.
+	DefaultUserRole bool `json:"defaultUserRole,omitempty"`
+
+	// Id: ID of this user role. This is a read-only, auto-generated field.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#userRole".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this user role. This is a required field. Must be less
+	// than 256 characters long. If this user role is under a subaccount,
+	// the name must be unique among sites of the same subaccount.
+	// Otherwise, this user role is a top-level user role, and the name must
+	// be unique among top-level user roles of the same account.
+	Name string `json:"name,omitempty"`
+
+	// ParentUserRoleId: ID of the user role that this user role is based on
+	// or copied from. This is a required field.
+	ParentUserRoleId int64 `json:"parentUserRoleId,omitempty,string"`
+
+	// Permissions: List of permissions associated with this user role.
+	Permissions []*UserRolePermission `json:"permissions,omitempty"`
+
+	// SubaccountId: Subaccount ID of this user role. This is a read-only
+	// field that can be left blank.
+	SubaccountId int64 `json:"subaccountId,omitempty,string"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *UserRole) MarshalJSON() ([]byte, error) {
+	type noMethod UserRole
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// UserRolePermission: Contains properties of a user role permission.
+type UserRolePermission struct {
+	// Availability: Levels of availability for a user role permission.
+	//
+	// Possible values:
+	//   "ACCOUNT_ALWAYS"
+	//   "ACCOUNT_BY_DEFAULT"
+	//   "NOT_AVAILABLE_BY_DEFAULT"
+	//   "SUBACCOUNT_AND_ACCOUNT_ALWAYS"
+	//   "SUBACCOUNT_AND_ACCOUNT_BY_DEFAULT"
+	Availability string `json:"availability,omitempty"`
+
+	// Id: ID of this user role permission.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#userRolePermission".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this user role permission.
+	Name string `json:"name,omitempty"`
+
+	// PermissionGroupId: ID of the permission group that this user role
+	// permission belongs to.
+	PermissionGroupId int64 `json:"permissionGroupId,omitempty,string"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Availability") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *UserRolePermission) MarshalJSON() ([]byte, error) {
+	type noMethod UserRolePermission
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// UserRolePermissionGroup: Represents a grouping of related user role
+// permissions.
+type UserRolePermissionGroup struct {
+	// Id: ID of this user role permission.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#userRolePermissionGroup".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Name of this user role permission group.
+	Name string `json:"name,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *UserRolePermissionGroup) MarshalJSON() ([]byte, error) {
+	type noMethod UserRolePermissionGroup
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// UserRolePermissionGroupsListResponse: User Role Permission Group List
+// Response
+type UserRolePermissionGroupsListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#userRolePermissionGroupsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// UserRolePermissionGroups: User role permission group collection.
+	UserRolePermissionGroups []*UserRolePermissionGroup `json:"userRolePermissionGroups,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *UserRolePermissionGroupsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod UserRolePermissionGroupsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// UserRolePermissionsListResponse: User Role Permission List Response
+type UserRolePermissionsListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#userRolePermissionsListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// UserRolePermissions: User role permission collection.
+	UserRolePermissions []*UserRolePermission `json:"userRolePermissions,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *UserRolePermissionsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod UserRolePermissionsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// UserRolesListResponse: User Role List Response
+type UserRolesListResponse struct {
+	// Kind: Identifies what kind of resource this is. Value: the fixed
+	// string "dfareporting#userRolesListResponse".
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: Pagination token to be used for the next list
+	// operation.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// UserRoles: User role collection.
+	UserRoles []*UserRole `json:"userRoles,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *UserRolesListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod UserRolesListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// method id "dfareporting.accountActiveAdSummaries.get":
+
+type AccountActiveAdSummariesGetCall struct {
+	s                *Service
+	profileId        int64
+	summaryAccountId int64
+	urlParams_       gensupport.URLParams
+	ifNoneMatch_     string
+	ctx_             context.Context
+}
+
+// Get: Gets the account's active ad summary by account ID.
+func (r *AccountActiveAdSummariesService) Get(profileId int64, summaryAccountId int64) *AccountActiveAdSummariesGetCall {
+	c := &AccountActiveAdSummariesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.summaryAccountId = summaryAccountId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountActiveAdSummariesGetCall) Fields(s ...googleapi.Field) *AccountActiveAdSummariesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountActiveAdSummariesGetCall) IfNoneMatch(entityTag string) *AccountActiveAdSummariesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountActiveAdSummariesGetCall) Context(ctx context.Context) *AccountActiveAdSummariesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AccountActiveAdSummariesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/accountActiveAdSummaries/{summaryAccountId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":        strconv.FormatInt(c.profileId, 10),
+		"summaryAccountId": strconv.FormatInt(c.summaryAccountId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.accountActiveAdSummaries.get" call.
+// Exactly one of *AccountActiveAdSummary or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *AccountActiveAdSummary.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountActiveAdSummariesGetCall) Do(opts ...googleapi.CallOption) (*AccountActiveAdSummary, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AccountActiveAdSummary{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the account's active ad summary by account ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.accountActiveAdSummaries.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "summaryAccountId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "summaryAccountId": {
+	//       "description": "Account ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/accountActiveAdSummaries/{summaryAccountId}",
+	//   "response": {
+	//     "$ref": "AccountActiveAdSummary"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.accountPermissionGroups.get":
+
+type AccountPermissionGroupsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one account permission group by ID.
+func (r *AccountPermissionGroupsService) Get(profileId int64, id int64) *AccountPermissionGroupsGetCall {
+	c := &AccountPermissionGroupsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountPermissionGroupsGetCall) Fields(s ...googleapi.Field) *AccountPermissionGroupsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountPermissionGroupsGetCall) IfNoneMatch(entityTag string) *AccountPermissionGroupsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountPermissionGroupsGetCall) Context(ctx context.Context) *AccountPermissionGroupsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AccountPermissionGroupsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/accountPermissionGroups/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.accountPermissionGroups.get" call.
+// Exactly one of *AccountPermissionGroup or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *AccountPermissionGroup.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountPermissionGroupsGetCall) Do(opts ...googleapi.CallOption) (*AccountPermissionGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AccountPermissionGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one account permission group by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.accountPermissionGroups.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Account permission group ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/accountPermissionGroups/{id}",
+	//   "response": {
+	//     "$ref": "AccountPermissionGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.accountPermissionGroups.list":
+
+type AccountPermissionGroupsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves the list of account permission groups.
+func (r *AccountPermissionGroupsService) List(profileId int64) *AccountPermissionGroupsListCall {
+	c := &AccountPermissionGroupsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountPermissionGroupsListCall) Fields(s ...googleapi.Field) *AccountPermissionGroupsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountPermissionGroupsListCall) IfNoneMatch(entityTag string) *AccountPermissionGroupsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountPermissionGroupsListCall) Context(ctx context.Context) *AccountPermissionGroupsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AccountPermissionGroupsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/accountPermissionGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.accountPermissionGroups.list" call.
+// Exactly one of *AccountPermissionGroupsListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *AccountPermissionGroupsListResponse.ServerResponse.Header or
+// (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *AccountPermissionGroupsListCall) Do(opts ...googleapi.CallOption) (*AccountPermissionGroupsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AccountPermissionGroupsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of account permission groups.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.accountPermissionGroups.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/accountPermissionGroups",
+	//   "response": {
+	//     "$ref": "AccountPermissionGroupsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.accountPermissions.get":
+
+type AccountPermissionsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one account permission by ID.
+func (r *AccountPermissionsService) Get(profileId int64, id int64) *AccountPermissionsGetCall {
+	c := &AccountPermissionsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountPermissionsGetCall) Fields(s ...googleapi.Field) *AccountPermissionsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountPermissionsGetCall) IfNoneMatch(entityTag string) *AccountPermissionsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountPermissionsGetCall) Context(ctx context.Context) *AccountPermissionsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AccountPermissionsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/accountPermissions/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.accountPermissions.get" call.
+// Exactly one of *AccountPermission or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *AccountPermission.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountPermissionsGetCall) Do(opts ...googleapi.CallOption) (*AccountPermission, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AccountPermission{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one account permission by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.accountPermissions.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Account permission ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/accountPermissions/{id}",
+	//   "response": {
+	//     "$ref": "AccountPermission"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.accountPermissions.list":
+
+type AccountPermissionsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves the list of account permissions.
+func (r *AccountPermissionsService) List(profileId int64) *AccountPermissionsListCall {
+	c := &AccountPermissionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountPermissionsListCall) Fields(s ...googleapi.Field) *AccountPermissionsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountPermissionsListCall) IfNoneMatch(entityTag string) *AccountPermissionsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountPermissionsListCall) Context(ctx context.Context) *AccountPermissionsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AccountPermissionsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/accountPermissions")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.accountPermissions.list" call.
+// Exactly one of *AccountPermissionsListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *AccountPermissionsListResponse.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountPermissionsListCall) Do(opts ...googleapi.CallOption) (*AccountPermissionsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AccountPermissionsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of account permissions.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.accountPermissions.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/accountPermissions",
+	//   "response": {
+	//     "$ref": "AccountPermissionsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.accountUserProfiles.get":
+
+type AccountUserProfilesGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one account user profile by ID.
+func (r *AccountUserProfilesService) Get(profileId int64, id int64) *AccountUserProfilesGetCall {
+	c := &AccountUserProfilesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountUserProfilesGetCall) Fields(s ...googleapi.Field) *AccountUserProfilesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountUserProfilesGetCall) IfNoneMatch(entityTag string) *AccountUserProfilesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountUserProfilesGetCall) Context(ctx context.Context) *AccountUserProfilesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AccountUserProfilesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/accountUserProfiles/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.accountUserProfiles.get" call.
+// Exactly one of *AccountUserProfile or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *AccountUserProfile.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountUserProfilesGetCall) Do(opts ...googleapi.CallOption) (*AccountUserProfile, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AccountUserProfile{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one account user profile by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.accountUserProfiles.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "User profile ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/accountUserProfiles/{id}",
+	//   "response": {
+	//     "$ref": "AccountUserProfile"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.accountUserProfiles.insert":
+
+type AccountUserProfilesInsertCall struct {
+	s                  *Service
+	profileId          int64
+	accountuserprofile *AccountUserProfile
+	urlParams_         gensupport.URLParams
+	ctx_               context.Context
+}
+
+// Insert: Inserts a new account user profile.
+func (r *AccountUserProfilesService) Insert(profileId int64, accountuserprofile *AccountUserProfile) *AccountUserProfilesInsertCall {
+	c := &AccountUserProfilesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.accountuserprofile = accountuserprofile
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountUserProfilesInsertCall) Fields(s ...googleapi.Field) *AccountUserProfilesInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountUserProfilesInsertCall) Context(ctx context.Context) *AccountUserProfilesInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AccountUserProfilesInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.accountuserprofile)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/accountUserProfiles")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.accountUserProfiles.insert" call.
+// Exactly one of *AccountUserProfile or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *AccountUserProfile.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountUserProfilesInsertCall) Do(opts ...googleapi.CallOption) (*AccountUserProfile, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AccountUserProfile{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new account user profile.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.accountUserProfiles.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/accountUserProfiles",
+	//   "request": {
+	//     "$ref": "AccountUserProfile"
+	//   },
+	//   "response": {
+	//     "$ref": "AccountUserProfile"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.accountUserProfiles.list":
+
+type AccountUserProfilesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of account user profiles, possibly filtered.
+func (r *AccountUserProfilesService) List(profileId int64) *AccountUserProfilesListCall {
+	c := &AccountUserProfilesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Active sets the optional parameter "active": Select only active user
+// profiles.
+func (c *AccountUserProfilesListCall) Active(active bool) *AccountUserProfilesListCall {
+	c.urlParams_.Set("active", fmt.Sprint(active))
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only user profiles with
+// these IDs.
+func (c *AccountUserProfilesListCall) Ids(ids ...int64) *AccountUserProfilesListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *AccountUserProfilesListCall) MaxResults(maxResults int64) *AccountUserProfilesListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *AccountUserProfilesListCall) PageToken(pageToken string) *AccountUserProfilesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name, ID or email. Wildcards (*) are
+// allowed. For example, "user profile*2015" will return objects with
+// names like "user profile June 2015", "user profile April 2015", or
+// simply "user profile 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 "user profile" will match objects with
+// name "my user profile", "user profile 2015", or simply "user
+// profile".
+func (c *AccountUserProfilesListCall) SearchString(searchString string) *AccountUserProfilesListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *AccountUserProfilesListCall) SortField(sortField string) *AccountUserProfilesListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *AccountUserProfilesListCall) SortOrder(sortOrder string) *AccountUserProfilesListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// SubaccountId sets the optional parameter "subaccountId": Select only
+// user profiles with the specified subaccount ID.
+func (c *AccountUserProfilesListCall) SubaccountId(subaccountId int64) *AccountUserProfilesListCall {
+	c.urlParams_.Set("subaccountId", fmt.Sprint(subaccountId))
+	return c
+}
+
+// UserRoleId sets the optional parameter "userRoleId": Select only user
+// profiles with the specified user role ID.
+func (c *AccountUserProfilesListCall) UserRoleId(userRoleId int64) *AccountUserProfilesListCall {
+	c.urlParams_.Set("userRoleId", fmt.Sprint(userRoleId))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountUserProfilesListCall) Fields(s ...googleapi.Field) *AccountUserProfilesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountUserProfilesListCall) IfNoneMatch(entityTag string) *AccountUserProfilesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountUserProfilesListCall) Context(ctx context.Context) *AccountUserProfilesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AccountUserProfilesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/accountUserProfiles")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.accountUserProfiles.list" call.
+// Exactly one of *AccountUserProfilesListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *AccountUserProfilesListResponse.ServerResponse.Header or (if
+// a response was returned at all) in error.(*googleapi.Error).Header.
+// Use googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountUserProfilesListCall) Do(opts ...googleapi.CallOption) (*AccountUserProfilesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AccountUserProfilesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of account user profiles, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.accountUserProfiles.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "active": {
+	//       "description": "Select only active user profiles.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "ids": {
+	//       "description": "Select only user profiles with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name, ID or email. Wildcards (*) are allowed. For example, \"user profile*2015\" will return objects with names like \"user profile June 2015\", \"user profile April 2015\", or simply \"user profile 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 \"user profile\" will match objects with name \"my user profile\", \"user profile 2015\", or simply \"user profile\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "subaccountId": {
+	//       "description": "Select only user profiles with the specified subaccount ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "userRoleId": {
+	//       "description": "Select only user profiles with the specified user role ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/accountUserProfiles",
+	//   "response": {
+	//     "$ref": "AccountUserProfilesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *AccountUserProfilesListCall) Pages(ctx context.Context, f func(*AccountUserProfilesListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.accountUserProfiles.patch":
+
+type AccountUserProfilesPatchCall struct {
+	s                  *Service
+	profileId          int64
+	accountuserprofile *AccountUserProfile
+	urlParams_         gensupport.URLParams
+	ctx_               context.Context
+}
+
+// Patch: Updates an existing account user profile. This method supports
+// patch semantics.
+func (r *AccountUserProfilesService) Patch(profileId int64, id int64, accountuserprofile *AccountUserProfile) *AccountUserProfilesPatchCall {
+	c := &AccountUserProfilesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.accountuserprofile = accountuserprofile
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountUserProfilesPatchCall) Fields(s ...googleapi.Field) *AccountUserProfilesPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountUserProfilesPatchCall) Context(ctx context.Context) *AccountUserProfilesPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AccountUserProfilesPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.accountuserprofile)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/accountUserProfiles")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.accountUserProfiles.patch" call.
+// Exactly one of *AccountUserProfile or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *AccountUserProfile.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountUserProfilesPatchCall) Do(opts ...googleapi.CallOption) (*AccountUserProfile, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AccountUserProfile{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing account user profile. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.accountUserProfiles.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "User profile ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/accountUserProfiles",
+	//   "request": {
+	//     "$ref": "AccountUserProfile"
+	//   },
+	//   "response": {
+	//     "$ref": "AccountUserProfile"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.accountUserProfiles.update":
+
+type AccountUserProfilesUpdateCall struct {
+	s                  *Service
+	profileId          int64
+	accountuserprofile *AccountUserProfile
+	urlParams_         gensupport.URLParams
+	ctx_               context.Context
+}
+
+// Update: Updates an existing account user profile.
+func (r *AccountUserProfilesService) Update(profileId int64, accountuserprofile *AccountUserProfile) *AccountUserProfilesUpdateCall {
+	c := &AccountUserProfilesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.accountuserprofile = accountuserprofile
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountUserProfilesUpdateCall) Fields(s ...googleapi.Field) *AccountUserProfilesUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountUserProfilesUpdateCall) Context(ctx context.Context) *AccountUserProfilesUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AccountUserProfilesUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.accountuserprofile)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/accountUserProfiles")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.accountUserProfiles.update" call.
+// Exactly one of *AccountUserProfile or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *AccountUserProfile.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountUserProfilesUpdateCall) Do(opts ...googleapi.CallOption) (*AccountUserProfile, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AccountUserProfile{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing account user profile.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.accountUserProfiles.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/accountUserProfiles",
+	//   "request": {
+	//     "$ref": "AccountUserProfile"
+	//   },
+	//   "response": {
+	//     "$ref": "AccountUserProfile"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.accounts.get":
+
+type AccountsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one account by ID.
+func (r *AccountsService) Get(profileId int64, id int64) *AccountsGetCall {
+	c := &AccountsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsGetCall) Fields(s ...googleapi.Field) *AccountsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountsGetCall) IfNoneMatch(entityTag string) *AccountsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsGetCall) Context(ctx context.Context) *AccountsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AccountsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/accounts/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.accounts.get" call.
+// Exactly one of *Account or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Account.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *AccountsGetCall) Do(opts ...googleapi.CallOption) (*Account, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Account{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one account by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.accounts.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Account ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/accounts/{id}",
+	//   "response": {
+	//     "$ref": "Account"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.accounts.list":
+
+type AccountsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves the list of accounts, possibly filtered.
+func (r *AccountsService) List(profileId int64) *AccountsListCall {
+	c := &AccountsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Active sets the optional parameter "active": Select only active
+// accounts. Don't set this field to select both active and non-active
+// accounts.
+func (c *AccountsListCall) Active(active bool) *AccountsListCall {
+	c.urlParams_.Set("active", fmt.Sprint(active))
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only accounts with
+// these IDs.
+func (c *AccountsListCall) Ids(ids ...int64) *AccountsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *AccountsListCall) MaxResults(maxResults int64) *AccountsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *AccountsListCall) PageToken(pageToken string) *AccountsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name or ID. Wildcards (*) are allowed. For
+// example, "account*2015" will return objects with names like "account
+// June 2015", "account April 2015", or simply "account 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 "account" will
+// match objects with name "my account", "account 2015", or simply
+// "account".
+func (c *AccountsListCall) SearchString(searchString string) *AccountsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *AccountsListCall) SortField(sortField string) *AccountsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *AccountsListCall) SortOrder(sortOrder string) *AccountsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsListCall) Fields(s ...googleapi.Field) *AccountsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountsListCall) IfNoneMatch(entityTag string) *AccountsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsListCall) Context(ctx context.Context) *AccountsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AccountsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/accounts")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.accounts.list" call.
+// Exactly one of *AccountsListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *AccountsListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountsListCall) Do(opts ...googleapi.CallOption) (*AccountsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AccountsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of accounts, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.accounts.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "active": {
+	//       "description": "Select only active accounts. Don't set this field to select both active and non-active accounts.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "ids": {
+	//       "description": "Select only accounts with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"account*2015\" will return objects with names like \"account June 2015\", \"account April 2015\", or simply \"account 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 \"account\" will match objects with name \"my account\", \"account 2015\", or simply \"account\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/accounts",
+	//   "response": {
+	//     "$ref": "AccountsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *AccountsListCall) Pages(ctx context.Context, f func(*AccountsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.accounts.patch":
+
+type AccountsPatchCall struct {
+	s          *Service
+	profileId  int64
+	account    *Account
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Patch: Updates an existing account. This method supports patch
+// semantics.
+func (r *AccountsService) Patch(profileId int64, id int64, account *Account) *AccountsPatchCall {
+	c := &AccountsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.account = account
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsPatchCall) Fields(s ...googleapi.Field) *AccountsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsPatchCall) Context(ctx context.Context) *AccountsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AccountsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.account)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/accounts")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.accounts.patch" call.
+// Exactly one of *Account or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Account.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *AccountsPatchCall) Do(opts ...googleapi.CallOption) (*Account, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Account{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing account. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.accounts.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Account ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/accounts",
+	//   "request": {
+	//     "$ref": "Account"
+	//   },
+	//   "response": {
+	//     "$ref": "Account"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.accounts.update":
+
+type AccountsUpdateCall struct {
+	s          *Service
+	profileId  int64
+	account    *Account
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Update: Updates an existing account.
+func (r *AccountsService) Update(profileId int64, account *Account) *AccountsUpdateCall {
+	c := &AccountsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.account = account
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsUpdateCall) Fields(s ...googleapi.Field) *AccountsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsUpdateCall) Context(ctx context.Context) *AccountsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AccountsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.account)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/accounts")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.accounts.update" call.
+// Exactly one of *Account or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Account.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *AccountsUpdateCall) Do(opts ...googleapi.CallOption) (*Account, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Account{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing account.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.accounts.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/accounts",
+	//   "request": {
+	//     "$ref": "Account"
+	//   },
+	//   "response": {
+	//     "$ref": "Account"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.ads.get":
+
+type AdsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one ad by ID.
+func (r *AdsService) Get(profileId int64, id int64) *AdsGetCall {
+	c := &AdsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdsGetCall) Fields(s ...googleapi.Field) *AdsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AdsGetCall) IfNoneMatch(entityTag string) *AdsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdsGetCall) Context(ctx context.Context) *AdsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/ads/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.ads.get" call.
+// Exactly one of *Ad or error will be non-nil. Any non-2xx status code
+// is an error. Response headers are in either *Ad.ServerResponse.Header
+// or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *AdsGetCall) Do(opts ...googleapi.CallOption) (*Ad, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Ad{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one ad by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.ads.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Ad ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/ads/{id}",
+	//   "response": {
+	//     "$ref": "Ad"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.ads.insert":
+
+type AdsInsertCall struct {
+	s          *Service
+	profileId  int64
+	ad         *Ad
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Insert: Inserts a new ad.
+func (r *AdsService) Insert(profileId int64, ad *Ad) *AdsInsertCall {
+	c := &AdsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.ad = ad
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdsInsertCall) Fields(s ...googleapi.Field) *AdsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdsInsertCall) Context(ctx context.Context) *AdsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.ad)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/ads")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.ads.insert" call.
+// Exactly one of *Ad or error will be non-nil. Any non-2xx status code
+// is an error. Response headers are in either *Ad.ServerResponse.Header
+// or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *AdsInsertCall) Do(opts ...googleapi.CallOption) (*Ad, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Ad{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new ad.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.ads.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/ads",
+	//   "request": {
+	//     "$ref": "Ad"
+	//   },
+	//   "response": {
+	//     "$ref": "Ad"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.ads.list":
+
+type AdsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of ads, possibly filtered.
+func (r *AdsService) List(profileId int64) *AdsListCall {
+	c := &AdsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Active sets the optional parameter "active": Select only active ads.
+func (c *AdsListCall) Active(active bool) *AdsListCall {
+	c.urlParams_.Set("active", fmt.Sprint(active))
+	return c
+}
+
+// AdvertiserId sets the optional parameter "advertiserId": Select only
+// ads with this advertiser ID.
+func (c *AdsListCall) AdvertiserId(advertiserId int64) *AdsListCall {
+	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
+	return c
+}
+
+// Archived sets the optional parameter "archived": Select only archived
+// ads.
+func (c *AdsListCall) Archived(archived bool) *AdsListCall {
+	c.urlParams_.Set("archived", fmt.Sprint(archived))
+	return c
+}
+
+// AudienceSegmentIds sets the optional parameter "audienceSegmentIds":
+// Select only ads with these audience segment IDs.
+func (c *AdsListCall) AudienceSegmentIds(audienceSegmentIds ...int64) *AdsListCall {
+	var audienceSegmentIds_ []string
+	for _, v := range audienceSegmentIds {
+		audienceSegmentIds_ = append(audienceSegmentIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("audienceSegmentIds", audienceSegmentIds_)
+	return c
+}
+
+// CampaignIds sets the optional parameter "campaignIds": Select only
+// ads with these campaign IDs.
+func (c *AdsListCall) CampaignIds(campaignIds ...int64) *AdsListCall {
+	var campaignIds_ []string
+	for _, v := range campaignIds {
+		campaignIds_ = append(campaignIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("campaignIds", campaignIds_)
+	return c
+}
+
+// Compatibility sets the optional parameter "compatibility": Select
+// default ads with the specified compatibility. Applicable when type is
+// AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to
+// rendering either on desktop or on mobile devices for regular or
+// interstitial ads, respectively. APP and APP_INTERSTITIAL are for
+// rendering in mobile apps. IN_STREAM_VIDEO refers to rendering an
+// in-stream video ads developed with the VAST standard.
+//
+// Possible values:
+//   "APP"
+//   "APP_INTERSTITIAL"
+//   "DISPLAY"
+//   "DISPLAY_INTERSTITIAL"
+//   "IN_STREAM_VIDEO"
+func (c *AdsListCall) Compatibility(compatibility string) *AdsListCall {
+	c.urlParams_.Set("compatibility", compatibility)
+	return c
+}
+
+// CreativeIds sets the optional parameter "creativeIds": Select only
+// ads with these creative IDs assigned.
+func (c *AdsListCall) CreativeIds(creativeIds ...int64) *AdsListCall {
+	var creativeIds_ []string
+	for _, v := range creativeIds {
+		creativeIds_ = append(creativeIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("creativeIds", creativeIds_)
+	return c
+}
+
+// CreativeOptimizationConfigurationIds sets the optional parameter
+// "creativeOptimizationConfigurationIds": Select only ads with these
+// creative optimization configuration IDs.
+func (c *AdsListCall) CreativeOptimizationConfigurationIds(creativeOptimizationConfigurationIds ...int64) *AdsListCall {
+	var creativeOptimizationConfigurationIds_ []string
+	for _, v := range creativeOptimizationConfigurationIds {
+		creativeOptimizationConfigurationIds_ = append(creativeOptimizationConfigurationIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("creativeOptimizationConfigurationIds", creativeOptimizationConfigurationIds_)
+	return c
+}
+
+// CreativeType sets the optional parameter "creativeType": Select only
+// ads with the specified creativeType.
+//
+// Possible values:
+//   "BRAND_SAFE_DEFAULT_INSTREAM_VIDEO"
+//   "CUSTOM_INPAGE"
+//   "CUSTOM_INTERSTITIAL"
+//   "ENHANCED_BANNER"
+//   "ENHANCED_IMAGE"
+//   "FLASH_INPAGE"
+//   "HTML5_BANNER"
+//   "IMAGE"
+//   "INSTREAM_VIDEO"
+//   "INSTREAM_VIDEO_REDIRECT"
+//   "INTERNAL_REDIRECT"
+//   "INTERSTITIAL_INTERNAL_REDIRECT"
+//   "REDIRECT"
+//   "RICH_MEDIA_EXPANDING"
+//   "RICH_MEDIA_IM_EXPAND"
+//   "RICH_MEDIA_INPAGE"
+//   "RICH_MEDIA_INPAGE_FLOATING"
+//   "RICH_MEDIA_INTERSTITIAL_FLOAT"
+//   "RICH_MEDIA_MOBILE_IN_APP"
+//   "RICH_MEDIA_MULTI_FLOATING"
+//   "RICH_MEDIA_PEEL_DOWN"
+//   "TRACKING_TEXT"
+//   "VPAID_LINEAR"
+//   "VPAID_NON_LINEAR"
+func (c *AdsListCall) CreativeType(creativeType string) *AdsListCall {
+	c.urlParams_.Set("creativeType", creativeType)
+	return c
+}
+
+// DynamicClickTracker sets the optional parameter
+// "dynamicClickTracker": Select only dynamic click trackers. Applicable
+// when type is AD_SERVING_CLICK_TRACKER. If true, select dynamic click
+// trackers. If false, select static click trackers. Leave unset to
+// select both.
+func (c *AdsListCall) DynamicClickTracker(dynamicClickTracker bool) *AdsListCall {
+	c.urlParams_.Set("dynamicClickTracker", fmt.Sprint(dynamicClickTracker))
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only ads with these
+// IDs.
+func (c *AdsListCall) Ids(ids ...int64) *AdsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// LandingPageIds sets the optional parameter "landingPageIds": Select
+// only ads with these landing page IDs.
+func (c *AdsListCall) LandingPageIds(landingPageIds ...int64) *AdsListCall {
+	var landingPageIds_ []string
+	for _, v := range landingPageIds {
+		landingPageIds_ = append(landingPageIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("landingPageIds", landingPageIds_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *AdsListCall) MaxResults(maxResults int64) *AdsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OverriddenEventTagId sets the optional parameter
+// "overriddenEventTagId": Select only ads with this event tag override
+// ID.
+func (c *AdsListCall) OverriddenEventTagId(overriddenEventTagId int64) *AdsListCall {
+	c.urlParams_.Set("overriddenEventTagId", fmt.Sprint(overriddenEventTagId))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *AdsListCall) PageToken(pageToken string) *AdsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// PlacementIds sets the optional parameter "placementIds": Select only
+// ads with these placement IDs assigned.
+func (c *AdsListCall) PlacementIds(placementIds ...int64) *AdsListCall {
+	var placementIds_ []string
+	for _, v := range placementIds {
+		placementIds_ = append(placementIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("placementIds", placementIds_)
+	return c
+}
+
+// RemarketingListIds sets the optional parameter "remarketingListIds":
+// Select only ads whose list targeting expression use these remarketing
+// list IDs.
+func (c *AdsListCall) RemarketingListIds(remarketingListIds ...int64) *AdsListCall {
+	var remarketingListIds_ []string
+	for _, v := range remarketingListIds {
+		remarketingListIds_ = append(remarketingListIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("remarketingListIds", remarketingListIds_)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name or ID. Wildcards (*) are allowed. For
+// example, "ad*2015" will return objects with names like "ad June
+// 2015", "ad April 2015", or simply "ad 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 "ad" will match objects with
+// name "my ad", "ad 2015", or simply "ad".
+func (c *AdsListCall) SearchString(searchString string) *AdsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SizeIds sets the optional parameter "sizeIds": Select only ads with
+// these size IDs.
+func (c *AdsListCall) SizeIds(sizeIds ...int64) *AdsListCall {
+	var sizeIds_ []string
+	for _, v := range sizeIds {
+		sizeIds_ = append(sizeIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("sizeIds", sizeIds_)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *AdsListCall) SortField(sortField string) *AdsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *AdsListCall) SortOrder(sortOrder string) *AdsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// SslCompliant sets the optional parameter "sslCompliant": Select only
+// ads that are SSL-compliant.
+func (c *AdsListCall) SslCompliant(sslCompliant bool) *AdsListCall {
+	c.urlParams_.Set("sslCompliant", fmt.Sprint(sslCompliant))
+	return c
+}
+
+// SslRequired sets the optional parameter "sslRequired": Select only
+// ads that require SSL.
+func (c *AdsListCall) SslRequired(sslRequired bool) *AdsListCall {
+	c.urlParams_.Set("sslRequired", fmt.Sprint(sslRequired))
+	return c
+}
+
+// Type sets the optional parameter "type": Select only ads with these
+// types.
+//
+// Possible values:
+//   "AD_SERVING_CLICK_TRACKER"
+//   "AD_SERVING_DEFAULT_AD"
+//   "AD_SERVING_STANDARD_AD"
+//   "AD_SERVING_TRACKING"
+func (c *AdsListCall) Type(type_ ...string) *AdsListCall {
+	c.urlParams_.SetMulti("type", append([]string{}, type_...))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdsListCall) Fields(s ...googleapi.Field) *AdsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AdsListCall) IfNoneMatch(entityTag string) *AdsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdsListCall) Context(ctx context.Context) *AdsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/ads")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.ads.list" call.
+// Exactly one of *AdsListResponse or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *AdsListResponse.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AdsListCall) Do(opts ...googleapi.CallOption) (*AdsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AdsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of ads, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.ads.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "active": {
+	//       "description": "Select only active ads.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "advertiserId": {
+	//       "description": "Select only ads with this advertiser ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "archived": {
+	//       "description": "Select only archived ads.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "audienceSegmentIds": {
+	//       "description": "Select only ads with these audience segment IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "campaignIds": {
+	//       "description": "Select only ads with these campaign IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "compatibility": {
+	//       "description": "Select default ads with the specified compatibility. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. IN_STREAM_VIDEO refers to rendering an in-stream video ads developed with the VAST standard.",
+	//       "enum": [
+	//         "APP",
+	//         "APP_INTERSTITIAL",
+	//         "DISPLAY",
+	//         "DISPLAY_INTERSTITIAL",
+	//         "IN_STREAM_VIDEO"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "creativeIds": {
+	//       "description": "Select only ads with these creative IDs assigned.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "creativeOptimizationConfigurationIds": {
+	//       "description": "Select only ads with these creative optimization configuration IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "creativeType": {
+	//       "description": "Select only ads with the specified creativeType.",
+	//       "enum": [
+	//         "BRAND_SAFE_DEFAULT_INSTREAM_VIDEO",
+	//         "CUSTOM_INPAGE",
+	//         "CUSTOM_INTERSTITIAL",
+	//         "ENHANCED_BANNER",
+	//         "ENHANCED_IMAGE",
+	//         "FLASH_INPAGE",
+	//         "HTML5_BANNER",
+	//         "IMAGE",
+	//         "INSTREAM_VIDEO",
+	//         "INSTREAM_VIDEO_REDIRECT",
+	//         "INTERNAL_REDIRECT",
+	//         "INTERSTITIAL_INTERNAL_REDIRECT",
+	//         "REDIRECT",
+	//         "RICH_MEDIA_EXPANDING",
+	//         "RICH_MEDIA_IM_EXPAND",
+	//         "RICH_MEDIA_INPAGE",
+	//         "RICH_MEDIA_INPAGE_FLOATING",
+	//         "RICH_MEDIA_INTERSTITIAL_FLOAT",
+	//         "RICH_MEDIA_MOBILE_IN_APP",
+	//         "RICH_MEDIA_MULTI_FLOATING",
+	//         "RICH_MEDIA_PEEL_DOWN",
+	//         "TRACKING_TEXT",
+	//         "VPAID_LINEAR",
+	//         "VPAID_NON_LINEAR"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "dynamicClickTracker": {
+	//       "description": "Select only dynamic click trackers. Applicable when type is AD_SERVING_CLICK_TRACKER. If true, select dynamic click trackers. If false, select static click trackers. Leave unset to select both.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "ids": {
+	//       "description": "Select only ads with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "landingPageIds": {
+	//       "description": "Select only ads with these landing page IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "overriddenEventTagId": {
+	//       "description": "Select only ads with this event tag override ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "placementIds": {
+	//       "description": "Select only ads with these placement IDs assigned.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "remarketingListIds": {
+	//       "description": "Select only ads whose list targeting expression use these remarketing list IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"ad*2015\" will return objects with names like \"ad June 2015\", \"ad April 2015\", or simply \"ad 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 \"ad\" will match objects with name \"my ad\", \"ad 2015\", or simply \"ad\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sizeIds": {
+	//       "description": "Select only ads with these size IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sslCompliant": {
+	//       "description": "Select only ads that are SSL-compliant.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "sslRequired": {
+	//       "description": "Select only ads that require SSL.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "type": {
+	//       "description": "Select only ads with these types.",
+	//       "enum": [
+	//         "AD_SERVING_CLICK_TRACKER",
+	//         "AD_SERVING_DEFAULT_AD",
+	//         "AD_SERVING_STANDARD_AD",
+	//         "AD_SERVING_TRACKING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         "",
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/ads",
+	//   "response": {
+	//     "$ref": "AdsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *AdsListCall) Pages(ctx context.Context, f func(*AdsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.ads.patch":
+
+type AdsPatchCall struct {
+	s          *Service
+	profileId  int64
+	ad         *Ad
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Patch: Updates an existing ad. This method supports patch semantics.
+func (r *AdsService) Patch(profileId int64, id int64, ad *Ad) *AdsPatchCall {
+	c := &AdsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.ad = ad
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdsPatchCall) Fields(s ...googleapi.Field) *AdsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdsPatchCall) Context(ctx context.Context) *AdsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.ad)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/ads")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.ads.patch" call.
+// Exactly one of *Ad or error will be non-nil. Any non-2xx status code
+// is an error. Response headers are in either *Ad.ServerResponse.Header
+// or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *AdsPatchCall) Do(opts ...googleapi.CallOption) (*Ad, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Ad{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing ad. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.ads.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Ad ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/ads",
+	//   "request": {
+	//     "$ref": "Ad"
+	//   },
+	//   "response": {
+	//     "$ref": "Ad"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.ads.update":
+
+type AdsUpdateCall struct {
+	s          *Service
+	profileId  int64
+	ad         *Ad
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Update: Updates an existing ad.
+func (r *AdsService) Update(profileId int64, ad *Ad) *AdsUpdateCall {
+	c := &AdsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.ad = ad
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdsUpdateCall) Fields(s ...googleapi.Field) *AdsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdsUpdateCall) Context(ctx context.Context) *AdsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.ad)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/ads")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.ads.update" call.
+// Exactly one of *Ad or error will be non-nil. Any non-2xx status code
+// is an error. Response headers are in either *Ad.ServerResponse.Header
+// or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *AdsUpdateCall) Do(opts ...googleapi.CallOption) (*Ad, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Ad{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing ad.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.ads.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/ads",
+	//   "request": {
+	//     "$ref": "Ad"
+	//   },
+	//   "response": {
+	//     "$ref": "Ad"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.advertiserGroups.delete":
+
+type AdvertiserGroupsDeleteCall struct {
+	s          *Service
+	profileId  int64
+	id         int64
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes an existing advertiser group.
+func (r *AdvertiserGroupsService) Delete(profileId int64, id int64) *AdvertiserGroupsDeleteCall {
+	c := &AdvertiserGroupsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdvertiserGroupsDeleteCall) Fields(s ...googleapi.Field) *AdvertiserGroupsDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdvertiserGroupsDeleteCall) Context(ctx context.Context) *AdvertiserGroupsDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdvertiserGroupsDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/advertiserGroups/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.advertiserGroups.delete" call.
+func (c *AdvertiserGroupsDeleteCall) Do(opts ...googleapi.CallOption) error {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if err != nil {
+		return err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return err
+	}
+	return nil
+	// {
+	//   "description": "Deletes an existing advertiser group.",
+	//   "httpMethod": "DELETE",
+	//   "id": "dfareporting.advertiserGroups.delete",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Advertiser group ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/advertiserGroups/{id}",
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.advertiserGroups.get":
+
+type AdvertiserGroupsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one advertiser group by ID.
+func (r *AdvertiserGroupsService) Get(profileId int64, id int64) *AdvertiserGroupsGetCall {
+	c := &AdvertiserGroupsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdvertiserGroupsGetCall) Fields(s ...googleapi.Field) *AdvertiserGroupsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AdvertiserGroupsGetCall) IfNoneMatch(entityTag string) *AdvertiserGroupsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdvertiserGroupsGetCall) Context(ctx context.Context) *AdvertiserGroupsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdvertiserGroupsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/advertiserGroups/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.advertiserGroups.get" call.
+// Exactly one of *AdvertiserGroup or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *AdvertiserGroup.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AdvertiserGroupsGetCall) Do(opts ...googleapi.CallOption) (*AdvertiserGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AdvertiserGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one advertiser group by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.advertiserGroups.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Advertiser group ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/advertiserGroups/{id}",
+	//   "response": {
+	//     "$ref": "AdvertiserGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.advertiserGroups.insert":
+
+type AdvertiserGroupsInsertCall struct {
+	s               *Service
+	profileId       int64
+	advertisergroup *AdvertiserGroup
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+}
+
+// Insert: Inserts a new advertiser group.
+func (r *AdvertiserGroupsService) Insert(profileId int64, advertisergroup *AdvertiserGroup) *AdvertiserGroupsInsertCall {
+	c := &AdvertiserGroupsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.advertisergroup = advertisergroup
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdvertiserGroupsInsertCall) Fields(s ...googleapi.Field) *AdvertiserGroupsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdvertiserGroupsInsertCall) Context(ctx context.Context) *AdvertiserGroupsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdvertiserGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.advertisergroup)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/advertiserGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.advertiserGroups.insert" call.
+// Exactly one of *AdvertiserGroup or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *AdvertiserGroup.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AdvertiserGroupsInsertCall) Do(opts ...googleapi.CallOption) (*AdvertiserGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AdvertiserGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new advertiser group.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.advertiserGroups.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/advertiserGroups",
+	//   "request": {
+	//     "$ref": "AdvertiserGroup"
+	//   },
+	//   "response": {
+	//     "$ref": "AdvertiserGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.advertiserGroups.list":
+
+type AdvertiserGroupsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of advertiser groups, possibly filtered.
+func (r *AdvertiserGroupsService) List(profileId int64) *AdvertiserGroupsListCall {
+	c := &AdvertiserGroupsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only advertiser groups
+// with these IDs.
+func (c *AdvertiserGroupsListCall) Ids(ids ...int64) *AdvertiserGroupsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *AdvertiserGroupsListCall) MaxResults(maxResults int64) *AdvertiserGroupsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *AdvertiserGroupsListCall) PageToken(pageToken string) *AdvertiserGroupsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name or ID. Wildcards (*) are allowed. For
+// example, "advertiser*2015" will return objects with names like
+// "advertiser group June 2015", "advertiser group April 2015", or
+// simply "advertiser group 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 "advertisergroup" will match objects
+// with name "my advertisergroup", "advertisergroup 2015", or simply
+// "advertisergroup".
+func (c *AdvertiserGroupsListCall) SearchString(searchString string) *AdvertiserGroupsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *AdvertiserGroupsListCall) SortField(sortField string) *AdvertiserGroupsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *AdvertiserGroupsListCall) SortOrder(sortOrder string) *AdvertiserGroupsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdvertiserGroupsListCall) Fields(s ...googleapi.Field) *AdvertiserGroupsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AdvertiserGroupsListCall) IfNoneMatch(entityTag string) *AdvertiserGroupsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdvertiserGroupsListCall) Context(ctx context.Context) *AdvertiserGroupsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdvertiserGroupsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/advertiserGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.advertiserGroups.list" call.
+// Exactly one of *AdvertiserGroupsListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *AdvertiserGroupsListResponse.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AdvertiserGroupsListCall) Do(opts ...googleapi.CallOption) (*AdvertiserGroupsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AdvertiserGroupsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of advertiser groups, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.advertiserGroups.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "ids": {
+	//       "description": "Select only advertiser groups with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"advertiser*2015\" will return objects with names like \"advertiser group June 2015\", \"advertiser group April 2015\", or simply \"advertiser group 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 \"advertisergroup\" will match objects with name \"my advertisergroup\", \"advertisergroup 2015\", or simply \"advertisergroup\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/advertiserGroups",
+	//   "response": {
+	//     "$ref": "AdvertiserGroupsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *AdvertiserGroupsListCall) Pages(ctx context.Context, f func(*AdvertiserGroupsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.advertiserGroups.patch":
+
+type AdvertiserGroupsPatchCall struct {
+	s               *Service
+	profileId       int64
+	advertisergroup *AdvertiserGroup
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+}
+
+// Patch: Updates an existing advertiser group. This method supports
+// patch semantics.
+func (r *AdvertiserGroupsService) Patch(profileId int64, id int64, advertisergroup *AdvertiserGroup) *AdvertiserGroupsPatchCall {
+	c := &AdvertiserGroupsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.advertisergroup = advertisergroup
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdvertiserGroupsPatchCall) Fields(s ...googleapi.Field) *AdvertiserGroupsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdvertiserGroupsPatchCall) Context(ctx context.Context) *AdvertiserGroupsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdvertiserGroupsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.advertisergroup)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/advertiserGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.advertiserGroups.patch" call.
+// Exactly one of *AdvertiserGroup or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *AdvertiserGroup.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AdvertiserGroupsPatchCall) Do(opts ...googleapi.CallOption) (*AdvertiserGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AdvertiserGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing advertiser group. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.advertiserGroups.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Advertiser group ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/advertiserGroups",
+	//   "request": {
+	//     "$ref": "AdvertiserGroup"
+	//   },
+	//   "response": {
+	//     "$ref": "AdvertiserGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.advertiserGroups.update":
+
+type AdvertiserGroupsUpdateCall struct {
+	s               *Service
+	profileId       int64
+	advertisergroup *AdvertiserGroup
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+}
+
+// Update: Updates an existing advertiser group.
+func (r *AdvertiserGroupsService) Update(profileId int64, advertisergroup *AdvertiserGroup) *AdvertiserGroupsUpdateCall {
+	c := &AdvertiserGroupsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.advertisergroup = advertisergroup
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdvertiserGroupsUpdateCall) Fields(s ...googleapi.Field) *AdvertiserGroupsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdvertiserGroupsUpdateCall) Context(ctx context.Context) *AdvertiserGroupsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdvertiserGroupsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.advertisergroup)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/advertiserGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.advertiserGroups.update" call.
+// Exactly one of *AdvertiserGroup or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *AdvertiserGroup.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AdvertiserGroupsUpdateCall) Do(opts ...googleapi.CallOption) (*AdvertiserGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AdvertiserGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing advertiser group.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.advertiserGroups.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/advertiserGroups",
+	//   "request": {
+	//     "$ref": "AdvertiserGroup"
+	//   },
+	//   "response": {
+	//     "$ref": "AdvertiserGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.advertisers.get":
+
+type AdvertisersGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one advertiser by ID.
+func (r *AdvertisersService) Get(profileId int64, id int64) *AdvertisersGetCall {
+	c := &AdvertisersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdvertisersGetCall) Fields(s ...googleapi.Field) *AdvertisersGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AdvertisersGetCall) IfNoneMatch(entityTag string) *AdvertisersGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdvertisersGetCall) Context(ctx context.Context) *AdvertisersGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdvertisersGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/advertisers/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.advertisers.get" call.
+// Exactly one of *Advertiser or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Advertiser.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AdvertisersGetCall) Do(opts ...googleapi.CallOption) (*Advertiser, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Advertiser{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one advertiser by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.advertisers.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Advertiser ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/advertisers/{id}",
+	//   "response": {
+	//     "$ref": "Advertiser"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.advertisers.insert":
+
+type AdvertisersInsertCall struct {
+	s          *Service
+	profileId  int64
+	advertiser *Advertiser
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Insert: Inserts a new advertiser.
+func (r *AdvertisersService) Insert(profileId int64, advertiser *Advertiser) *AdvertisersInsertCall {
+	c := &AdvertisersInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.advertiser = advertiser
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdvertisersInsertCall) Fields(s ...googleapi.Field) *AdvertisersInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdvertisersInsertCall) Context(ctx context.Context) *AdvertisersInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdvertisersInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.advertiser)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/advertisers")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.advertisers.insert" call.
+// Exactly one of *Advertiser or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Advertiser.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AdvertisersInsertCall) Do(opts ...googleapi.CallOption) (*Advertiser, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Advertiser{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new advertiser.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.advertisers.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/advertisers",
+	//   "request": {
+	//     "$ref": "Advertiser"
+	//   },
+	//   "response": {
+	//     "$ref": "Advertiser"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.advertisers.list":
+
+type AdvertisersListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of advertisers, possibly filtered.
+func (r *AdvertisersService) List(profileId int64) *AdvertisersListCall {
+	c := &AdvertisersListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// AdvertiserGroupIds sets the optional parameter "advertiserGroupIds":
+// Select only advertisers with these advertiser group IDs.
+func (c *AdvertisersListCall) AdvertiserGroupIds(advertiserGroupIds ...int64) *AdvertisersListCall {
+	var advertiserGroupIds_ []string
+	for _, v := range advertiserGroupIds {
+		advertiserGroupIds_ = append(advertiserGroupIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("advertiserGroupIds", advertiserGroupIds_)
+	return c
+}
+
+// FloodlightConfigurationIds sets the optional parameter
+// "floodlightConfigurationIds": Select only advertisers with these
+// floodlight configuration IDs.
+func (c *AdvertisersListCall) FloodlightConfigurationIds(floodlightConfigurationIds ...int64) *AdvertisersListCall {
+	var floodlightConfigurationIds_ []string
+	for _, v := range floodlightConfigurationIds {
+		floodlightConfigurationIds_ = append(floodlightConfigurationIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("floodlightConfigurationIds", floodlightConfigurationIds_)
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only advertisers with
+// these IDs.
+func (c *AdvertisersListCall) Ids(ids ...int64) *AdvertisersListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// IncludeAdvertisersWithoutGroupsOnly sets the optional parameter
+// "includeAdvertisersWithoutGroupsOnly": Select only advertisers which
+// do not belong to any advertiser group.
+func (c *AdvertisersListCall) IncludeAdvertisersWithoutGroupsOnly(includeAdvertisersWithoutGroupsOnly bool) *AdvertisersListCall {
+	c.urlParams_.Set("includeAdvertisersWithoutGroupsOnly", fmt.Sprint(includeAdvertisersWithoutGroupsOnly))
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *AdvertisersListCall) MaxResults(maxResults int64) *AdvertisersListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OnlyParent sets the optional parameter "onlyParent": Select only
+// advertisers which use another advertiser's floodlight configuration.
+func (c *AdvertisersListCall) OnlyParent(onlyParent bool) *AdvertisersListCall {
+	c.urlParams_.Set("onlyParent", fmt.Sprint(onlyParent))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *AdvertisersListCall) PageToken(pageToken string) *AdvertisersListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name or ID. Wildcards (*) are allowed. For
+// example, "advertiser*2015" will return objects with names like
+// "advertiser June 2015", "advertiser April 2015", or simply
+// "advertiser 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 "advertiser" will match objects with name "my advertiser",
+// "advertiser 2015", or simply "advertiser".
+func (c *AdvertisersListCall) SearchString(searchString string) *AdvertisersListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *AdvertisersListCall) SortField(sortField string) *AdvertisersListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *AdvertisersListCall) SortOrder(sortOrder string) *AdvertisersListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Status sets the optional parameter "status": Select only advertisers
+// with the specified status.
+//
+// Possible values:
+//   "APPROVED"
+//   "ON_HOLD"
+func (c *AdvertisersListCall) Status(status string) *AdvertisersListCall {
+	c.urlParams_.Set("status", status)
+	return c
+}
+
+// SubaccountId sets the optional parameter "subaccountId": Select only
+// advertisers with these subaccount IDs.
+func (c *AdvertisersListCall) SubaccountId(subaccountId int64) *AdvertisersListCall {
+	c.urlParams_.Set("subaccountId", fmt.Sprint(subaccountId))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdvertisersListCall) Fields(s ...googleapi.Field) *AdvertisersListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AdvertisersListCall) IfNoneMatch(entityTag string) *AdvertisersListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdvertisersListCall) Context(ctx context.Context) *AdvertisersListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdvertisersListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/advertisers")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.advertisers.list" call.
+// Exactly one of *AdvertisersListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *AdvertisersListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AdvertisersListCall) Do(opts ...googleapi.CallOption) (*AdvertisersListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &AdvertisersListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of advertisers, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.advertisers.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "advertiserGroupIds": {
+	//       "description": "Select only advertisers with these advertiser group IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "floodlightConfigurationIds": {
+	//       "description": "Select only advertisers with these floodlight configuration IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only advertisers with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "includeAdvertisersWithoutGroupsOnly": {
+	//       "description": "Select only advertisers which do not belong to any advertiser group.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "onlyParent": {
+	//       "description": "Select only advertisers which use another advertiser's floodlight configuration.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"advertiser*2015\" will return objects with names like \"advertiser June 2015\", \"advertiser April 2015\", or simply \"advertiser 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 \"advertiser\" will match objects with name \"my advertiser\", \"advertiser 2015\", or simply \"advertiser\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "status": {
+	//       "description": "Select only advertisers with the specified status.",
+	//       "enum": [
+	//         "APPROVED",
+	//         "ON_HOLD"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "subaccountId": {
+	//       "description": "Select only advertisers with these subaccount IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/advertisers",
+	//   "response": {
+	//     "$ref": "AdvertisersListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *AdvertisersListCall) Pages(ctx context.Context, f func(*AdvertisersListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.advertisers.patch":
+
+type AdvertisersPatchCall struct {
+	s          *Service
+	profileId  int64
+	advertiser *Advertiser
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Patch: Updates an existing advertiser. This method supports patch
+// semantics.
+func (r *AdvertisersService) Patch(profileId int64, id int64, advertiser *Advertiser) *AdvertisersPatchCall {
+	c := &AdvertisersPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.advertiser = advertiser
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdvertisersPatchCall) Fields(s ...googleapi.Field) *AdvertisersPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdvertisersPatchCall) Context(ctx context.Context) *AdvertisersPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdvertisersPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.advertiser)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/advertisers")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.advertisers.patch" call.
+// Exactly one of *Advertiser or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Advertiser.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AdvertisersPatchCall) Do(opts ...googleapi.CallOption) (*Advertiser, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Advertiser{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing advertiser. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.advertisers.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Advertiser ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/advertisers",
+	//   "request": {
+	//     "$ref": "Advertiser"
+	//   },
+	//   "response": {
+	//     "$ref": "Advertiser"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.advertisers.update":
+
+type AdvertisersUpdateCall struct {
+	s          *Service
+	profileId  int64
+	advertiser *Advertiser
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Update: Updates an existing advertiser.
+func (r *AdvertisersService) Update(profileId int64, advertiser *Advertiser) *AdvertisersUpdateCall {
+	c := &AdvertisersUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.advertiser = advertiser
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AdvertisersUpdateCall) Fields(s ...googleapi.Field) *AdvertisersUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AdvertisersUpdateCall) Context(ctx context.Context) *AdvertisersUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *AdvertisersUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.advertiser)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/advertisers")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.advertisers.update" call.
+// Exactly one of *Advertiser or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Advertiser.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *AdvertisersUpdateCall) Do(opts ...googleapi.CallOption) (*Advertiser, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Advertiser{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing advertiser.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.advertisers.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/advertisers",
+	//   "request": {
+	//     "$ref": "Advertiser"
+	//   },
+	//   "response": {
+	//     "$ref": "Advertiser"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.browsers.list":
+
+type BrowsersListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of browsers.
+func (r *BrowsersService) List(profileId int64) *BrowsersListCall {
+	c := &BrowsersListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *BrowsersListCall) Fields(s ...googleapi.Field) *BrowsersListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *BrowsersListCall) IfNoneMatch(entityTag string) *BrowsersListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *BrowsersListCall) Context(ctx context.Context) *BrowsersListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *BrowsersListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/browsers")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.browsers.list" call.
+// Exactly one of *BrowsersListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *BrowsersListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *BrowsersListCall) Do(opts ...googleapi.CallOption) (*BrowsersListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &BrowsersListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of browsers.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.browsers.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/browsers",
+	//   "response": {
+	//     "$ref": "BrowsersListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.campaignCreativeAssociations.insert":
+
+type CampaignCreativeAssociationsInsertCall struct {
+	s                           *Service
+	profileId                   int64
+	campaignId                  int64
+	campaigncreativeassociation *CampaignCreativeAssociation
+	urlParams_                  gensupport.URLParams
+	ctx_                        context.Context
+}
+
+// Insert: 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.
+func (r *CampaignCreativeAssociationsService) Insert(profileId int64, campaignId int64, campaigncreativeassociation *CampaignCreativeAssociation) *CampaignCreativeAssociationsInsertCall {
+	c := &CampaignCreativeAssociationsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.campaignId = campaignId
+	c.campaigncreativeassociation = campaigncreativeassociation
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CampaignCreativeAssociationsInsertCall) Fields(s ...googleapi.Field) *CampaignCreativeAssociationsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CampaignCreativeAssociationsInsertCall) Context(ctx context.Context) *CampaignCreativeAssociationsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CampaignCreativeAssociationsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.campaigncreativeassociation)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/campaigns/{campaignId}/campaignCreativeAssociations")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":  strconv.FormatInt(c.profileId, 10),
+		"campaignId": strconv.FormatInt(c.campaignId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.campaignCreativeAssociations.insert" call.
+// Exactly one of *CampaignCreativeAssociation or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *CampaignCreativeAssociation.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CampaignCreativeAssociationsInsertCall) Do(opts ...googleapi.CallOption) (*CampaignCreativeAssociation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CampaignCreativeAssociation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "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.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.campaignCreativeAssociations.insert",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "campaignId"
+	//   ],
+	//   "parameters": {
+	//     "campaignId": {
+	//       "description": "Campaign ID in this association.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/campaigns/{campaignId}/campaignCreativeAssociations",
+	//   "request": {
+	//     "$ref": "CampaignCreativeAssociation"
+	//   },
+	//   "response": {
+	//     "$ref": "CampaignCreativeAssociation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.campaignCreativeAssociations.list":
+
+type CampaignCreativeAssociationsListCall struct {
+	s            *Service
+	profileId    int64
+	campaignId   int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves the list of creative IDs associated with the
+// specified campaign.
+func (r *CampaignCreativeAssociationsService) List(profileId int64, campaignId int64) *CampaignCreativeAssociationsListCall {
+	c := &CampaignCreativeAssociationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.campaignId = campaignId
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *CampaignCreativeAssociationsListCall) MaxResults(maxResults int64) *CampaignCreativeAssociationsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *CampaignCreativeAssociationsListCall) PageToken(pageToken string) *CampaignCreativeAssociationsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *CampaignCreativeAssociationsListCall) SortOrder(sortOrder string) *CampaignCreativeAssociationsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CampaignCreativeAssociationsListCall) Fields(s ...googleapi.Field) *CampaignCreativeAssociationsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *CampaignCreativeAssociationsListCall) IfNoneMatch(entityTag string) *CampaignCreativeAssociationsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CampaignCreativeAssociationsListCall) Context(ctx context.Context) *CampaignCreativeAssociationsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CampaignCreativeAssociationsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/campaigns/{campaignId}/campaignCreativeAssociations")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":  strconv.FormatInt(c.profileId, 10),
+		"campaignId": strconv.FormatInt(c.campaignId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.campaignCreativeAssociations.list" call.
+// Exactly one of *CampaignCreativeAssociationsListResponse or error
+// will be non-nil. Any non-2xx status code is an error. Response
+// headers are in either
+// *CampaignCreativeAssociationsListResponse.ServerResponse.Header or
+// (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *CampaignCreativeAssociationsListCall) Do(opts ...googleapi.CallOption) (*CampaignCreativeAssociationsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CampaignCreativeAssociationsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of creative IDs associated with the specified campaign.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.campaignCreativeAssociations.list",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "campaignId"
+	//   ],
+	//   "parameters": {
+	//     "campaignId": {
+	//       "description": "Campaign ID in this association.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/campaigns/{campaignId}/campaignCreativeAssociations",
+	//   "response": {
+	//     "$ref": "CampaignCreativeAssociationsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *CampaignCreativeAssociationsListCall) Pages(ctx context.Context, f func(*CampaignCreativeAssociationsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.campaigns.get":
+
+type CampaignsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one campaign by ID.
+func (r *CampaignsService) Get(profileId int64, id int64) *CampaignsGetCall {
+	c := &CampaignsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CampaignsGetCall) Fields(s ...googleapi.Field) *CampaignsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *CampaignsGetCall) IfNoneMatch(entityTag string) *CampaignsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CampaignsGetCall) Context(ctx context.Context) *CampaignsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CampaignsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/campaigns/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.campaigns.get" call.
+// Exactly one of *Campaign or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Campaign.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *CampaignsGetCall) Do(opts ...googleapi.CallOption) (*Campaign, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Campaign{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one campaign by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.campaigns.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Campaign ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/campaigns/{id}",
+	//   "response": {
+	//     "$ref": "Campaign"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.campaigns.insert":
+
+type CampaignsInsertCall struct {
+	s          *Service
+	profileId  int64
+	campaign   *Campaign
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Insert: Inserts a new campaign.
+func (r *CampaignsService) Insert(profileId int64, defaultLandingPageName string, defaultLandingPageUrl string, campaign *Campaign) *CampaignsInsertCall {
+	c := &CampaignsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("defaultLandingPageName", defaultLandingPageName)
+	c.urlParams_.Set("defaultLandingPageUrl", defaultLandingPageUrl)
+	c.campaign = campaign
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CampaignsInsertCall) Fields(s ...googleapi.Field) *CampaignsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CampaignsInsertCall) Context(ctx context.Context) *CampaignsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CampaignsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.campaign)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/campaigns")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.campaigns.insert" call.
+// Exactly one of *Campaign or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Campaign.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *CampaignsInsertCall) Do(opts ...googleapi.CallOption) (*Campaign, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Campaign{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new campaign.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.campaigns.insert",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "defaultLandingPageName",
+	//     "defaultLandingPageUrl"
+	//   ],
+	//   "parameters": {
+	//     "defaultLandingPageName": {
+	//       "description": "Default landing page name for this new campaign. Must be less than 256 characters long.",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "defaultLandingPageUrl": {
+	//       "description": "Default landing page URL for this new campaign.",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/campaigns",
+	//   "request": {
+	//     "$ref": "Campaign"
+	//   },
+	//   "response": {
+	//     "$ref": "Campaign"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.campaigns.list":
+
+type CampaignsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of campaigns, possibly filtered.
+func (r *CampaignsService) List(profileId int64) *CampaignsListCall {
+	c := &CampaignsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// AdvertiserGroupIds sets the optional parameter "advertiserGroupIds":
+// Select only campaigns whose advertisers belong to these advertiser
+// groups.
+func (c *CampaignsListCall) AdvertiserGroupIds(advertiserGroupIds ...int64) *CampaignsListCall {
+	var advertiserGroupIds_ []string
+	for _, v := range advertiserGroupIds {
+		advertiserGroupIds_ = append(advertiserGroupIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("advertiserGroupIds", advertiserGroupIds_)
+	return c
+}
+
+// AdvertiserIds sets the optional parameter "advertiserIds": Select
+// only campaigns that belong to these advertisers.
+func (c *CampaignsListCall) AdvertiserIds(advertiserIds ...int64) *CampaignsListCall {
+	var advertiserIds_ []string
+	for _, v := range advertiserIds {
+		advertiserIds_ = append(advertiserIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("advertiserIds", advertiserIds_)
+	return c
+}
+
+// Archived sets the optional parameter "archived": Select only archived
+// campaigns. Don't set this field to select both archived and
+// non-archived campaigns.
+func (c *CampaignsListCall) Archived(archived bool) *CampaignsListCall {
+	c.urlParams_.Set("archived", fmt.Sprint(archived))
+	return c
+}
+
+// AtLeastOneOptimizationActivity sets the optional parameter
+// "atLeastOneOptimizationActivity": Select only campaigns that have at
+// least one optimization activity.
+func (c *CampaignsListCall) AtLeastOneOptimizationActivity(atLeastOneOptimizationActivity bool) *CampaignsListCall {
+	c.urlParams_.Set("atLeastOneOptimizationActivity", fmt.Sprint(atLeastOneOptimizationActivity))
+	return c
+}
+
+// ExcludedIds sets the optional parameter "excludedIds": Exclude
+// campaigns with these IDs.
+func (c *CampaignsListCall) ExcludedIds(excludedIds ...int64) *CampaignsListCall {
+	var excludedIds_ []string
+	for _, v := range excludedIds {
+		excludedIds_ = append(excludedIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("excludedIds", excludedIds_)
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only campaigns with
+// these IDs.
+func (c *CampaignsListCall) Ids(ids ...int64) *CampaignsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *CampaignsListCall) MaxResults(maxResults int64) *CampaignsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OverriddenEventTagId sets the optional parameter
+// "overriddenEventTagId": Select only campaigns that have overridden
+// this event tag ID.
+func (c *CampaignsListCall) OverriddenEventTagId(overriddenEventTagId int64) *CampaignsListCall {
+	c.urlParams_.Set("overriddenEventTagId", fmt.Sprint(overriddenEventTagId))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *CampaignsListCall) PageToken(pageToken string) *CampaignsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for campaigns by name or ID. Wildcards (*) are allowed. For
+// example, "campaign*2015" will return campaigns with names like
+// "campaign June 2015", "campaign April 2015", or simply "campaign
+// 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 "campaign" will match campaigns with name "my campaign", "campaign
+// 2015", or simply "campaign".
+func (c *CampaignsListCall) SearchString(searchString string) *CampaignsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *CampaignsListCall) SortField(sortField string) *CampaignsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *CampaignsListCall) SortOrder(sortOrder string) *CampaignsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// SubaccountId sets the optional parameter "subaccountId": Select only
+// campaigns that belong to this subaccount.
+func (c *CampaignsListCall) SubaccountId(subaccountId int64) *CampaignsListCall {
+	c.urlParams_.Set("subaccountId", fmt.Sprint(subaccountId))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CampaignsListCall) Fields(s ...googleapi.Field) *CampaignsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *CampaignsListCall) IfNoneMatch(entityTag string) *CampaignsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CampaignsListCall) Context(ctx context.Context) *CampaignsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CampaignsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/campaigns")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.campaigns.list" call.
+// Exactly one of *CampaignsListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *CampaignsListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CampaignsListCall) Do(opts ...googleapi.CallOption) (*CampaignsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CampaignsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of campaigns, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.campaigns.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "advertiserGroupIds": {
+	//       "description": "Select only campaigns whose advertisers belong to these advertiser groups.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "advertiserIds": {
+	//       "description": "Select only campaigns that belong to these advertisers.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "archived": {
+	//       "description": "Select only archived campaigns. Don't set this field to select both archived and non-archived campaigns.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "atLeastOneOptimizationActivity": {
+	//       "description": "Select only campaigns that have at least one optimization activity.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "excludedIds": {
+	//       "description": "Exclude campaigns with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only campaigns with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "overriddenEventTagId": {
+	//       "description": "Select only campaigns that have overridden this event tag ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for campaigns by name or ID. Wildcards (*) are allowed. For example, \"campaign*2015\" will return campaigns with names like \"campaign June 2015\", \"campaign April 2015\", or simply \"campaign 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 \"campaign\" will match campaigns with name \"my campaign\", \"campaign 2015\", or simply \"campaign\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "subaccountId": {
+	//       "description": "Select only campaigns that belong to this subaccount.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/campaigns",
+	//   "response": {
+	//     "$ref": "CampaignsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *CampaignsListCall) Pages(ctx context.Context, f func(*CampaignsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.campaigns.patch":
+
+type CampaignsPatchCall struct {
+	s          *Service
+	profileId  int64
+	campaign   *Campaign
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Patch: Updates an existing campaign. This method supports patch
+// semantics.
+func (r *CampaignsService) Patch(profileId int64, id int64, campaign *Campaign) *CampaignsPatchCall {
+	c := &CampaignsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.campaign = campaign
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CampaignsPatchCall) Fields(s ...googleapi.Field) *CampaignsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CampaignsPatchCall) Context(ctx context.Context) *CampaignsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CampaignsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.campaign)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/campaigns")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.campaigns.patch" call.
+// Exactly one of *Campaign or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Campaign.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *CampaignsPatchCall) Do(opts ...googleapi.CallOption) (*Campaign, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Campaign{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing campaign. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.campaigns.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Campaign ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/campaigns",
+	//   "request": {
+	//     "$ref": "Campaign"
+	//   },
+	//   "response": {
+	//     "$ref": "Campaign"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.campaigns.update":
+
+type CampaignsUpdateCall struct {
+	s          *Service
+	profileId  int64
+	campaign   *Campaign
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Update: Updates an existing campaign.
+func (r *CampaignsService) Update(profileId int64, campaign *Campaign) *CampaignsUpdateCall {
+	c := &CampaignsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.campaign = campaign
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CampaignsUpdateCall) Fields(s ...googleapi.Field) *CampaignsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CampaignsUpdateCall) Context(ctx context.Context) *CampaignsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CampaignsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.campaign)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/campaigns")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.campaigns.update" call.
+// Exactly one of *Campaign or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Campaign.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *CampaignsUpdateCall) Do(opts ...googleapi.CallOption) (*Campaign, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Campaign{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing campaign.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.campaigns.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/campaigns",
+	//   "request": {
+	//     "$ref": "Campaign"
+	//   },
+	//   "response": {
+	//     "$ref": "Campaign"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.changeLogs.get":
+
+type ChangeLogsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one change log by ID.
+func (r *ChangeLogsService) Get(profileId int64, id int64) *ChangeLogsGetCall {
+	c := &ChangeLogsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ChangeLogsGetCall) Fields(s ...googleapi.Field) *ChangeLogsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ChangeLogsGetCall) IfNoneMatch(entityTag string) *ChangeLogsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ChangeLogsGetCall) Context(ctx context.Context) *ChangeLogsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ChangeLogsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/changeLogs/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.changeLogs.get" call.
+// Exactly one of *ChangeLog or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *ChangeLog.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ChangeLogsGetCall) Do(opts ...googleapi.CallOption) (*ChangeLog, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ChangeLog{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one change log by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.changeLogs.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Change log ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/changeLogs/{id}",
+	//   "response": {
+	//     "$ref": "ChangeLog"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.changeLogs.list":
+
+type ChangeLogsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of change logs.
+func (r *ChangeLogsService) List(profileId int64) *ChangeLogsListCall {
+	c := &ChangeLogsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Action sets the optional parameter "action": Select only change logs
+// with the specified action.
+//
+// Possible values:
+//   "ACTION_ADD"
+//   "ACTION_ASSIGN"
+//   "ACTION_ASSOCIATE"
+//   "ACTION_CREATE"
+//   "ACTION_DELETE"
+//   "ACTION_DISABLE"
+//   "ACTION_EMAIL_TAGS"
+//   "ACTION_ENABLE"
+//   "ACTION_LINK"
+//   "ACTION_MARK_AS_DEFAULT"
+//   "ACTION_PUSH"
+//   "ACTION_REMOVE"
+//   "ACTION_SEND"
+//   "ACTION_SHARE"
+//   "ACTION_UNASSIGN"
+//   "ACTION_UNLINK"
+//   "ACTION_UPDATE"
+func (c *ChangeLogsListCall) Action(action string) *ChangeLogsListCall {
+	c.urlParams_.Set("action", action)
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only change logs with
+// these IDs.
+func (c *ChangeLogsListCall) Ids(ids ...int64) *ChangeLogsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxChangeTime sets the optional parameter "maxChangeTime": Select
+// only change logs whose change time is before the specified
+// maxChangeTime.The time should be formatted as an RFC3339 date/time
+// string. For example, for 10:54 PM on July 18th, 2015, in the
+// America/New York time zone, the format is
+// "2015-07-18T22:54:00-04:00". In other words, the year, month, day,
+// the letter T, the hour (24-hour clock system), minute, second, and
+// then the time zone offset.
+func (c *ChangeLogsListCall) MaxChangeTime(maxChangeTime string) *ChangeLogsListCall {
+	c.urlParams_.Set("maxChangeTime", maxChangeTime)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *ChangeLogsListCall) MaxResults(maxResults int64) *ChangeLogsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// MinChangeTime sets the optional parameter "minChangeTime": Select
+// only change logs whose change time is before the specified
+// minChangeTime.The time should be formatted as an RFC3339 date/time
+// string. For example, for 10:54 PM on July 18th, 2015, in the
+// America/New York time zone, the format is
+// "2015-07-18T22:54:00-04:00". In other words, the year, month, day,
+// the letter T, the hour (24-hour clock system), minute, second, and
+// then the time zone offset.
+func (c *ChangeLogsListCall) MinChangeTime(minChangeTime string) *ChangeLogsListCall {
+	c.urlParams_.Set("minChangeTime", minChangeTime)
+	return c
+}
+
+// ObjectIds sets the optional parameter "objectIds": Select only change
+// logs with these object IDs.
+func (c *ChangeLogsListCall) ObjectIds(objectIds ...int64) *ChangeLogsListCall {
+	var objectIds_ []string
+	for _, v := range objectIds {
+		objectIds_ = append(objectIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("objectIds", objectIds_)
+	return c
+}
+
+// ObjectType sets the optional parameter "objectType": Select only
+// change logs with the specified object type.
+//
+// Possible values:
+//   "OBJECT_ACCOUNT"
+//   "OBJECT_ACCOUNT_BILLING_FEATURE"
+//   "OBJECT_AD"
+//   "OBJECT_ADVERTISER"
+//   "OBJECT_ADVERTISER_GROUP"
+//   "OBJECT_BILLING_ACCOUNT_GROUP"
+//   "OBJECT_BILLING_FEATURE"
+//   "OBJECT_BILLING_MINIMUM_FEE"
+//   "OBJECT_BILLING_PROFILE"
+//   "OBJECT_CAMPAIGN"
+//   "OBJECT_CONTENT_CATEGORY"
+//   "OBJECT_CREATIVE"
+//   "OBJECT_CREATIVE_ASSET"
+//   "OBJECT_CREATIVE_BUNDLE"
+//   "OBJECT_CREATIVE_FIELD"
+//   "OBJECT_CREATIVE_GROUP"
+//   "OBJECT_DFA_SITE"
+//   "OBJECT_EVENT_TAG"
+//   "OBJECT_FLOODLIGHT_ACTIVITY_GROUP"
+//   "OBJECT_FLOODLIGHT_ACTVITY"
+//   "OBJECT_FLOODLIGHT_CONFIGURATION"
+//   "OBJECT_INSTREAM_CREATIVE"
+//   "OBJECT_LANDING_PAGE"
+//   "OBJECT_MEDIA_ORDER"
+//   "OBJECT_PLACEMENT"
+//   "OBJECT_PLACEMENT_STRATEGY"
+//   "OBJECT_PLAYSTORE_LINK"
+//   "OBJECT_PROVIDED_LIST_CLIENT"
+//   "OBJECT_RATE_CARD"
+//   "OBJECT_REMARKETING_LIST"
+//   "OBJECT_RICHMEDIA_CREATIVE"
+//   "OBJECT_SD_SITE"
+//   "OBJECT_SIZE"
+//   "OBJECT_SUBACCOUNT"
+//   "OBJECT_USER_PROFILE"
+//   "OBJECT_USER_PROFILE_FILTER"
+//   "OBJECT_USER_ROLE"
+func (c *ChangeLogsListCall) ObjectType(objectType string) *ChangeLogsListCall {
+	c.urlParams_.Set("objectType", objectType)
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *ChangeLogsListCall) PageToken(pageToken string) *ChangeLogsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Select only
+// change logs whose object ID, user name, old or new values match the
+// search string.
+func (c *ChangeLogsListCall) SearchString(searchString string) *ChangeLogsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// UserProfileIds sets the optional parameter "userProfileIds": Select
+// only change logs with these user profile IDs.
+func (c *ChangeLogsListCall) UserProfileIds(userProfileIds ...int64) *ChangeLogsListCall {
+	var userProfileIds_ []string
+	for _, v := range userProfileIds {
+		userProfileIds_ = append(userProfileIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("userProfileIds", userProfileIds_)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ChangeLogsListCall) Fields(s ...googleapi.Field) *ChangeLogsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ChangeLogsListCall) IfNoneMatch(entityTag string) *ChangeLogsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ChangeLogsListCall) Context(ctx context.Context) *ChangeLogsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ChangeLogsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/changeLogs")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.changeLogs.list" call.
+// Exactly one of *ChangeLogsListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ChangeLogsListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ChangeLogsListCall) Do(opts ...googleapi.CallOption) (*ChangeLogsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ChangeLogsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of change logs.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.changeLogs.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "action": {
+	//       "description": "Select only change logs with the specified action.",
+	//       "enum": [
+	//         "ACTION_ADD",
+	//         "ACTION_ASSIGN",
+	//         "ACTION_ASSOCIATE",
+	//         "ACTION_CREATE",
+	//         "ACTION_DELETE",
+	//         "ACTION_DISABLE",
+	//         "ACTION_EMAIL_TAGS",
+	//         "ACTION_ENABLE",
+	//         "ACTION_LINK",
+	//         "ACTION_MARK_AS_DEFAULT",
+	//         "ACTION_PUSH",
+	//         "ACTION_REMOVE",
+	//         "ACTION_SEND",
+	//         "ACTION_SHARE",
+	//         "ACTION_UNASSIGN",
+	//         "ACTION_UNLINK",
+	//         "ACTION_UPDATE"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only change logs with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxChangeTime": {
+	//       "description": "Select only change logs whose change time is before the specified maxChangeTime.The time should be formatted as an RFC3339 date/time string. For example, for 10:54 PM on July 18th, 2015, in the America/New York time zone, the format is \"2015-07-18T22:54:00-04:00\". In other words, the year, month, day, the letter T, the hour (24-hour clock system), minute, second, and then the time zone offset.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "minChangeTime": {
+	//       "description": "Select only change logs whose change time is before the specified minChangeTime.The time should be formatted as an RFC3339 date/time string. For example, for 10:54 PM on July 18th, 2015, in the America/New York time zone, the format is \"2015-07-18T22:54:00-04:00\". In other words, the year, month, day, the letter T, the hour (24-hour clock system), minute, second, and then the time zone offset.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "objectIds": {
+	//       "description": "Select only change logs with these object IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "objectType": {
+	//       "description": "Select only change logs with the specified object type.",
+	//       "enum": [
+	//         "OBJECT_ACCOUNT",
+	//         "OBJECT_ACCOUNT_BILLING_FEATURE",
+	//         "OBJECT_AD",
+	//         "OBJECT_ADVERTISER",
+	//         "OBJECT_ADVERTISER_GROUP",
+	//         "OBJECT_BILLING_ACCOUNT_GROUP",
+	//         "OBJECT_BILLING_FEATURE",
+	//         "OBJECT_BILLING_MINIMUM_FEE",
+	//         "OBJECT_BILLING_PROFILE",
+	//         "OBJECT_CAMPAIGN",
+	//         "OBJECT_CONTENT_CATEGORY",
+	//         "OBJECT_CREATIVE",
+	//         "OBJECT_CREATIVE_ASSET",
+	//         "OBJECT_CREATIVE_BUNDLE",
+	//         "OBJECT_CREATIVE_FIELD",
+	//         "OBJECT_CREATIVE_GROUP",
+	//         "OBJECT_DFA_SITE",
+	//         "OBJECT_EVENT_TAG",
+	//         "OBJECT_FLOODLIGHT_ACTIVITY_GROUP",
+	//         "OBJECT_FLOODLIGHT_ACTVITY",
+	//         "OBJECT_FLOODLIGHT_CONFIGURATION",
+	//         "OBJECT_INSTREAM_CREATIVE",
+	//         "OBJECT_LANDING_PAGE",
+	//         "OBJECT_MEDIA_ORDER",
+	//         "OBJECT_PLACEMENT",
+	//         "OBJECT_PLACEMENT_STRATEGY",
+	//         "OBJECT_PLAYSTORE_LINK",
+	//         "OBJECT_PROVIDED_LIST_CLIENT",
+	//         "OBJECT_RATE_CARD",
+	//         "OBJECT_REMARKETING_LIST",
+	//         "OBJECT_RICHMEDIA_CREATIVE",
+	//         "OBJECT_SD_SITE",
+	//         "OBJECT_SIZE",
+	//         "OBJECT_SUBACCOUNT",
+	//         "OBJECT_USER_PROFILE",
+	//         "OBJECT_USER_PROFILE_FILTER",
+	//         "OBJECT_USER_ROLE"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Select only change logs whose object ID, user name, old or new values match the search string.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "userProfileIds": {
+	//       "description": "Select only change logs with these user profile IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/changeLogs",
+	//   "response": {
+	//     "$ref": "ChangeLogsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ChangeLogsListCall) Pages(ctx context.Context, f func(*ChangeLogsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.cities.list":
+
+type CitiesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of cities, possibly filtered.
+func (r *CitiesService) List(profileId int64) *CitiesListCall {
+	c := &CitiesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// CountryDartIds sets the optional parameter "countryDartIds": Select
+// only cities from these countries.
+func (c *CitiesListCall) CountryDartIds(countryDartIds ...int64) *CitiesListCall {
+	var countryDartIds_ []string
+	for _, v := range countryDartIds {
+		countryDartIds_ = append(countryDartIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("countryDartIds", countryDartIds_)
+	return c
+}
+
+// DartIds sets the optional parameter "dartIds": Select only cities
+// with these DART IDs.
+func (c *CitiesListCall) DartIds(dartIds ...int64) *CitiesListCall {
+	var dartIds_ []string
+	for _, v := range dartIds {
+		dartIds_ = append(dartIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("dartIds", dartIds_)
+	return c
+}
+
+// NamePrefix sets the optional parameter "namePrefix": Select only
+// cities with names starting with this prefix.
+func (c *CitiesListCall) NamePrefix(namePrefix string) *CitiesListCall {
+	c.urlParams_.Set("namePrefix", namePrefix)
+	return c
+}
+
+// RegionDartIds sets the optional parameter "regionDartIds": Select
+// only cities from these regions.
+func (c *CitiesListCall) RegionDartIds(regionDartIds ...int64) *CitiesListCall {
+	var regionDartIds_ []string
+	for _, v := range regionDartIds {
+		regionDartIds_ = append(regionDartIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("regionDartIds", regionDartIds_)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CitiesListCall) Fields(s ...googleapi.Field) *CitiesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *CitiesListCall) IfNoneMatch(entityTag string) *CitiesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CitiesListCall) Context(ctx context.Context) *CitiesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CitiesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/cities")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.cities.list" call.
+// Exactly one of *CitiesListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *CitiesListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CitiesListCall) Do(opts ...googleapi.CallOption) (*CitiesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CitiesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of cities, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.cities.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "countryDartIds": {
+	//       "description": "Select only cities from these countries.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "dartIds": {
+	//       "description": "Select only cities with these DART IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "namePrefix": {
+	//       "description": "Select only cities with names starting with this prefix.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "regionDartIds": {
+	//       "description": "Select only cities from these regions.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/cities",
+	//   "response": {
+	//     "$ref": "CitiesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.connectionTypes.get":
+
+type ConnectionTypesGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one connection type by ID.
+func (r *ConnectionTypesService) Get(profileId int64, id int64) *ConnectionTypesGetCall {
+	c := &ConnectionTypesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ConnectionTypesGetCall) Fields(s ...googleapi.Field) *ConnectionTypesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ConnectionTypesGetCall) IfNoneMatch(entityTag string) *ConnectionTypesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ConnectionTypesGetCall) Context(ctx context.Context) *ConnectionTypesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ConnectionTypesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/connectionTypes/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.connectionTypes.get" call.
+// Exactly one of *ConnectionType or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *ConnectionType.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ConnectionTypesGetCall) Do(opts ...googleapi.CallOption) (*ConnectionType, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ConnectionType{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one connection type by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.connectionTypes.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Connection type ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/connectionTypes/{id}",
+	//   "response": {
+	//     "$ref": "ConnectionType"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.connectionTypes.list":
+
+type ConnectionTypesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of connection types.
+func (r *ConnectionTypesService) List(profileId int64) *ConnectionTypesListCall {
+	c := &ConnectionTypesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ConnectionTypesListCall) Fields(s ...googleapi.Field) *ConnectionTypesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ConnectionTypesListCall) IfNoneMatch(entityTag string) *ConnectionTypesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ConnectionTypesListCall) Context(ctx context.Context) *ConnectionTypesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ConnectionTypesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/connectionTypes")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.connectionTypes.list" call.
+// Exactly one of *ConnectionTypesListResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *ConnectionTypesListResponse.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ConnectionTypesListCall) Do(opts ...googleapi.CallOption) (*ConnectionTypesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ConnectionTypesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of connection types.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.connectionTypes.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/connectionTypes",
+	//   "response": {
+	//     "$ref": "ConnectionTypesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.contentCategories.delete":
+
+type ContentCategoriesDeleteCall struct {
+	s          *Service
+	profileId  int64
+	id         int64
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes an existing content category.
+func (r *ContentCategoriesService) Delete(profileId int64, id int64) *ContentCategoriesDeleteCall {
+	c := &ContentCategoriesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ContentCategoriesDeleteCall) Fields(s ...googleapi.Field) *ContentCategoriesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ContentCategoriesDeleteCall) Context(ctx context.Context) *ContentCategoriesDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ContentCategoriesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/contentCategories/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.contentCategories.delete" call.
+func (c *ContentCategoriesDeleteCall) Do(opts ...googleapi.CallOption) error {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if err != nil {
+		return err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return err
+	}
+	return nil
+	// {
+	//   "description": "Deletes an existing content category.",
+	//   "httpMethod": "DELETE",
+	//   "id": "dfareporting.contentCategories.delete",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Content category ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/contentCategories/{id}",
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.contentCategories.get":
+
+type ContentCategoriesGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one content category by ID.
+func (r *ContentCategoriesService) Get(profileId int64, id int64) *ContentCategoriesGetCall {
+	c := &ContentCategoriesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ContentCategoriesGetCall) Fields(s ...googleapi.Field) *ContentCategoriesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ContentCategoriesGetCall) IfNoneMatch(entityTag string) *ContentCategoriesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ContentCategoriesGetCall) Context(ctx context.Context) *ContentCategoriesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ContentCategoriesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/contentCategories/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.contentCategories.get" call.
+// Exactly one of *ContentCategory or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *ContentCategory.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ContentCategoriesGetCall) Do(opts ...googleapi.CallOption) (*ContentCategory, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ContentCategory{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one content category by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.contentCategories.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Content category ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/contentCategories/{id}",
+	//   "response": {
+	//     "$ref": "ContentCategory"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.contentCategories.insert":
+
+type ContentCategoriesInsertCall struct {
+	s               *Service
+	profileId       int64
+	contentcategory *ContentCategory
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+}
+
+// Insert: Inserts a new content category.
+func (r *ContentCategoriesService) Insert(profileId int64, contentcategory *ContentCategory) *ContentCategoriesInsertCall {
+	c := &ContentCategoriesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.contentcategory = contentcategory
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ContentCategoriesInsertCall) Fields(s ...googleapi.Field) *ContentCategoriesInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ContentCategoriesInsertCall) Context(ctx context.Context) *ContentCategoriesInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ContentCategoriesInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.contentcategory)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/contentCategories")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.contentCategories.insert" call.
+// Exactly one of *ContentCategory or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *ContentCategory.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ContentCategoriesInsertCall) Do(opts ...googleapi.CallOption) (*ContentCategory, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ContentCategory{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new content category.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.contentCategories.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/contentCategories",
+	//   "request": {
+	//     "$ref": "ContentCategory"
+	//   },
+	//   "response": {
+	//     "$ref": "ContentCategory"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.contentCategories.list":
+
+type ContentCategoriesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of content categories, possibly filtered.
+func (r *ContentCategoriesService) List(profileId int64) *ContentCategoriesListCall {
+	c := &ContentCategoriesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only content categories
+// with these IDs.
+func (c *ContentCategoriesListCall) Ids(ids ...int64) *ContentCategoriesListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *ContentCategoriesListCall) MaxResults(maxResults int64) *ContentCategoriesListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *ContentCategoriesListCall) PageToken(pageToken string) *ContentCategoriesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name or ID. Wildcards (*) are allowed. For
+// example, "contentcategory*2015" will return objects with names like
+// "contentcategory June 2015", "contentcategory April 2015", or simply
+// "contentcategory 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 "contentcategory" will match objects with
+// name "my contentcategory", "contentcategory 2015", or simply
+// "contentcategory".
+func (c *ContentCategoriesListCall) SearchString(searchString string) *ContentCategoriesListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *ContentCategoriesListCall) SortField(sortField string) *ContentCategoriesListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *ContentCategoriesListCall) SortOrder(sortOrder string) *ContentCategoriesListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ContentCategoriesListCall) Fields(s ...googleapi.Field) *ContentCategoriesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ContentCategoriesListCall) IfNoneMatch(entityTag string) *ContentCategoriesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ContentCategoriesListCall) Context(ctx context.Context) *ContentCategoriesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ContentCategoriesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/contentCategories")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.contentCategories.list" call.
+// Exactly one of *ContentCategoriesListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *ContentCategoriesListResponse.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ContentCategoriesListCall) Do(opts ...googleapi.CallOption) (*ContentCategoriesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ContentCategoriesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of content categories, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.contentCategories.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "ids": {
+	//       "description": "Select only content categories with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"contentcategory*2015\" will return objects with names like \"contentcategory June 2015\", \"contentcategory April 2015\", or simply \"contentcategory 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 \"contentcategory\" will match objects with name \"my contentcategory\", \"contentcategory 2015\", or simply \"contentcategory\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/contentCategories",
+	//   "response": {
+	//     "$ref": "ContentCategoriesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ContentCategoriesListCall) Pages(ctx context.Context, f func(*ContentCategoriesListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.contentCategories.patch":
+
+type ContentCategoriesPatchCall struct {
+	s               *Service
+	profileId       int64
+	contentcategory *ContentCategory
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+}
+
+// Patch: Updates an existing content category. This method supports
+// patch semantics.
+func (r *ContentCategoriesService) Patch(profileId int64, id int64, contentcategory *ContentCategory) *ContentCategoriesPatchCall {
+	c := &ContentCategoriesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.contentcategory = contentcategory
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ContentCategoriesPatchCall) Fields(s ...googleapi.Field) *ContentCategoriesPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ContentCategoriesPatchCall) Context(ctx context.Context) *ContentCategoriesPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ContentCategoriesPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.contentcategory)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/contentCategories")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.contentCategories.patch" call.
+// Exactly one of *ContentCategory or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *ContentCategory.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ContentCategoriesPatchCall) Do(opts ...googleapi.CallOption) (*ContentCategory, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ContentCategory{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing content category. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.contentCategories.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Content category ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/contentCategories",
+	//   "request": {
+	//     "$ref": "ContentCategory"
+	//   },
+	//   "response": {
+	//     "$ref": "ContentCategory"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.contentCategories.update":
+
+type ContentCategoriesUpdateCall struct {
+	s               *Service
+	profileId       int64
+	contentcategory *ContentCategory
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+}
+
+// Update: Updates an existing content category.
+func (r *ContentCategoriesService) Update(profileId int64, contentcategory *ContentCategory) *ContentCategoriesUpdateCall {
+	c := &ContentCategoriesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.contentcategory = contentcategory
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ContentCategoriesUpdateCall) Fields(s ...googleapi.Field) *ContentCategoriesUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ContentCategoriesUpdateCall) Context(ctx context.Context) *ContentCategoriesUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ContentCategoriesUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.contentcategory)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/contentCategories")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.contentCategories.update" call.
+// Exactly one of *ContentCategory or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *ContentCategory.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ContentCategoriesUpdateCall) Do(opts ...googleapi.CallOption) (*ContentCategory, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ContentCategory{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing content category.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.contentCategories.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/contentCategories",
+	//   "request": {
+	//     "$ref": "ContentCategory"
+	//   },
+	//   "response": {
+	//     "$ref": "ContentCategory"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.countries.get":
+
+type CountriesGetCall struct {
+	s            *Service
+	profileId    int64
+	dartId       int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one country by ID.
+func (r *CountriesService) Get(profileId int64, dartId int64) *CountriesGetCall {
+	c := &CountriesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.dartId = dartId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CountriesGetCall) Fields(s ...googleapi.Field) *CountriesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *CountriesGetCall) IfNoneMatch(entityTag string) *CountriesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CountriesGetCall) Context(ctx context.Context) *CountriesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CountriesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/countries/{dartId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"dartId":    strconv.FormatInt(c.dartId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.countries.get" call.
+// Exactly one of *Country or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Country.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *CountriesGetCall) Do(opts ...googleapi.CallOption) (*Country, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Country{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one country by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.countries.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "dartId"
+	//   ],
+	//   "parameters": {
+	//     "dartId": {
+	//       "description": "Country DART ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/countries/{dartId}",
+	//   "response": {
+	//     "$ref": "Country"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.countries.list":
+
+type CountriesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of countries.
+func (r *CountriesService) List(profileId int64) *CountriesListCall {
+	c := &CountriesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CountriesListCall) Fields(s ...googleapi.Field) *CountriesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *CountriesListCall) IfNoneMatch(entityTag string) *CountriesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CountriesListCall) Context(ctx context.Context) *CountriesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CountriesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/countries")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.countries.list" call.
+// Exactly one of *CountriesListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *CountriesListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CountriesListCall) Do(opts ...googleapi.CallOption) (*CountriesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CountriesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of countries.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.countries.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/countries",
+	//   "response": {
+	//     "$ref": "CountriesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creativeAssets.insert":
+
+type CreativeAssetsInsertCall struct {
+	s                     *Service
+	profileId             int64
+	advertiserId          int64
+	creativeassetmetadata *CreativeAssetMetadata
+	urlParams_            gensupport.URLParams
+	media_                io.Reader
+	resumableBuffer_      *gensupport.ResumableBuffer
+	mediaType_            string
+	mediaSize_            int64 // mediaSize, if known.  Used only for calls to progressUpdater_.
+	progressUpdater_      googleapi.ProgressUpdater
+	ctx_                  context.Context
+}
+
+// Insert: Inserts a new creative asset.
+func (r *CreativeAssetsService) Insert(profileId int64, advertiserId int64, creativeassetmetadata *CreativeAssetMetadata) *CreativeAssetsInsertCall {
+	c := &CreativeAssetsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.advertiserId = advertiserId
+	c.creativeassetmetadata = creativeassetmetadata
+	return c
+}
+
+// Media specifies the media to upload in a single chunk. At most one of
+// Media and ResumableMedia may be set.
+func (c *CreativeAssetsInsertCall) Media(r io.Reader, options ...googleapi.MediaOption) *CreativeAssetsInsertCall {
+	opts := googleapi.ProcessMediaOptions(options)
+	chunkSize := opts.ChunkSize
+	r, c.mediaType_ = gensupport.DetermineContentType(r, opts.ContentType)
+	c.media_, c.resumableBuffer_ = gensupport.PrepareUpload(r, chunkSize)
+	return c
+}
+
+// ResumableMedia specifies the media to upload in chunks and can be
+// canceled with ctx. ResumableMedia is deprecated in favour of Media.
+// At most one of Media and ResumableMedia may be set. mediaType
+// identifies the MIME media type of the upload, such as "image/png". If
+// mediaType is "", it will be auto-detected. The provided ctx will
+// supersede any context previously provided to the Context method.
+func (c *CreativeAssetsInsertCall) ResumableMedia(ctx context.Context, r io.ReaderAt, size int64, mediaType string) *CreativeAssetsInsertCall {
+	c.ctx_ = ctx
+	rdr := gensupport.ReaderAtToReader(r, size)
+	rdr, c.mediaType_ = gensupport.DetermineContentType(rdr, mediaType)
+	c.resumableBuffer_ = gensupport.NewResumableBuffer(rdr, googleapi.DefaultUploadChunkSize)
+	c.media_ = nil
+	c.mediaSize_ = size
+	return c
+}
+
+// ProgressUpdater provides a callback function that will be called
+// after every chunk. It should be a low-latency function in order to
+// not slow down the upload operation. This should only be called when
+// using ResumableMedia (as opposed to Media).
+func (c *CreativeAssetsInsertCall) ProgressUpdater(pu googleapi.ProgressUpdater) *CreativeAssetsInsertCall {
+	c.progressUpdater_ = pu
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeAssetsInsertCall) Fields(s ...googleapi.Field) *CreativeAssetsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+// This context will supersede any context previously provided to the
+// ResumableMedia method.
+func (c *CreativeAssetsInsertCall) Context(ctx context.Context) *CreativeAssetsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeAssetsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.creativeassetmetadata)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeAssets/{advertiserId}/creativeAssets")
+	if c.media_ != nil || c.resumableBuffer_ != nil {
+		urls = strings.Replace(urls, "https://www.googleapis.com/", "https://www.googleapis.com/upload/", 1)
+		protocol := "multipart"
+		if c.resumableBuffer_ != nil {
+			protocol = "resumable"
+		}
+		c.urlParams_.Set("uploadType", protocol)
+	}
+	urls += "?" + c.urlParams_.Encode()
+	if c.media_ != nil {
+		var combined io.ReadCloser
+		combined, ctype = gensupport.CombineBodyMedia(body, ctype, c.media_, c.mediaType_)
+		defer combined.Close()
+		body = combined
+	}
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":    strconv.FormatInt(c.profileId, 10),
+		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
+	})
+	if c.resumableBuffer_ != nil {
+		req.Header.Set("X-Upload-Content-Type", c.mediaType_)
+	}
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeAssets.insert" call.
+// Exactly one of *CreativeAssetMetadata or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *CreativeAssetMetadata.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeAssetsInsertCall) Do(opts ...googleapi.CallOption) (*CreativeAssetMetadata, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	if c.resumableBuffer_ != nil {
+		loc := res.Header.Get("Location")
+		rx := &gensupport.ResumableUpload{
+			Client:    c.s.client,
+			UserAgent: c.s.userAgent(),
+			URI:       loc,
+			Media:     c.resumableBuffer_,
+			MediaType: c.mediaType_,
+			Callback: func(curr int64) {
+				if c.progressUpdater_ != nil {
+					c.progressUpdater_(curr, c.mediaSize_)
+				}
+			},
+		}
+		ctx := c.ctx_
+		if ctx == nil {
+			ctx = context.TODO()
+		}
+		res, err = rx.Upload(ctx)
+		if err != nil {
+			return nil, err
+		}
+		defer res.Body.Close()
+	}
+	ret := &CreativeAssetMetadata{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new creative asset.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.creativeAssets.insert",
+	//   "mediaUpload": {
+	//     "accept": [
+	//       "*/*"
+	//     ],
+	//     "maxSize": "1024MB",
+	//     "protocols": {
+	//       "resumable": {
+	//         "multipart": true,
+	//         "path": "/resumable/upload/dfareporting/v2.4/userprofiles/{profileId}/creativeAssets/{advertiserId}/creativeAssets"
+	//       },
+	//       "simple": {
+	//         "multipart": true,
+	//         "path": "/upload/dfareporting/v2.4/userprofiles/{profileId}/creativeAssets/{advertiserId}/creativeAssets"
+	//       }
+	//     }
+	//   },
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "advertiserId"
+	//   ],
+	//   "parameters": {
+	//     "advertiserId": {
+	//       "description": "Advertiser ID of this creative. This is a required field.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeAssets/{advertiserId}/creativeAssets",
+	//   "request": {
+	//     "$ref": "CreativeAssetMetadata"
+	//   },
+	//   "response": {
+	//     "$ref": "CreativeAssetMetadata"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ],
+	//   "supportsMediaUpload": true
+	// }
+
+}
+
+// method id "dfareporting.creativeFieldValues.delete":
+
+type CreativeFieldValuesDeleteCall struct {
+	s               *Service
+	profileId       int64
+	creativeFieldId int64
+	id              int64
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+}
+
+// Delete: Deletes an existing creative field value.
+func (r *CreativeFieldValuesService) Delete(profileId int64, creativeFieldId int64, id int64) *CreativeFieldValuesDeleteCall {
+	c := &CreativeFieldValuesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.creativeFieldId = creativeFieldId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeFieldValuesDeleteCall) Fields(s ...googleapi.Field) *CreativeFieldValuesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeFieldValuesDeleteCall) Context(ctx context.Context) *CreativeFieldValuesDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeFieldValuesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":       strconv.FormatInt(c.profileId, 10),
+		"creativeFieldId": strconv.FormatInt(c.creativeFieldId, 10),
+		"id":              strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeFieldValues.delete" call.
+func (c *CreativeFieldValuesDeleteCall) Do(opts ...googleapi.CallOption) error {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if err != nil {
+		return err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return err
+	}
+	return nil
+	// {
+	//   "description": "Deletes an existing creative field value.",
+	//   "httpMethod": "DELETE",
+	//   "id": "dfareporting.creativeFieldValues.delete",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "creativeFieldId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "creativeFieldId": {
+	//       "description": "Creative field ID for this creative field value.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "id": {
+	//       "description": "Creative Field Value ID",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues/{id}",
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creativeFieldValues.get":
+
+type CreativeFieldValuesGetCall struct {
+	s               *Service
+	profileId       int64
+	creativeFieldId int64
+	id              int64
+	urlParams_      gensupport.URLParams
+	ifNoneMatch_    string
+	ctx_            context.Context
+}
+
+// Get: Gets one creative field value by ID.
+func (r *CreativeFieldValuesService) Get(profileId int64, creativeFieldId int64, id int64) *CreativeFieldValuesGetCall {
+	c := &CreativeFieldValuesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.creativeFieldId = creativeFieldId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeFieldValuesGetCall) Fields(s ...googleapi.Field) *CreativeFieldValuesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *CreativeFieldValuesGetCall) IfNoneMatch(entityTag string) *CreativeFieldValuesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeFieldValuesGetCall) Context(ctx context.Context) *CreativeFieldValuesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeFieldValuesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":       strconv.FormatInt(c.profileId, 10),
+		"creativeFieldId": strconv.FormatInt(c.creativeFieldId, 10),
+		"id":              strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeFieldValues.get" call.
+// Exactly one of *CreativeFieldValue or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *CreativeFieldValue.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeFieldValuesGetCall) Do(opts ...googleapi.CallOption) (*CreativeFieldValue, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeFieldValue{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one creative field value by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.creativeFieldValues.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "creativeFieldId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "creativeFieldId": {
+	//       "description": "Creative field ID for this creative field value.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "id": {
+	//       "description": "Creative Field Value ID",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues/{id}",
+	//   "response": {
+	//     "$ref": "CreativeFieldValue"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creativeFieldValues.insert":
+
+type CreativeFieldValuesInsertCall struct {
+	s                  *Service
+	profileId          int64
+	creativeFieldId    int64
+	creativefieldvalue *CreativeFieldValue
+	urlParams_         gensupport.URLParams
+	ctx_               context.Context
+}
+
+// Insert: Inserts a new creative field value.
+func (r *CreativeFieldValuesService) Insert(profileId int64, creativeFieldId int64, creativefieldvalue *CreativeFieldValue) *CreativeFieldValuesInsertCall {
+	c := &CreativeFieldValuesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.creativeFieldId = creativeFieldId
+	c.creativefieldvalue = creativefieldvalue
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeFieldValuesInsertCall) Fields(s ...googleapi.Field) *CreativeFieldValuesInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeFieldValuesInsertCall) Context(ctx context.Context) *CreativeFieldValuesInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeFieldValuesInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.creativefieldvalue)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":       strconv.FormatInt(c.profileId, 10),
+		"creativeFieldId": strconv.FormatInt(c.creativeFieldId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeFieldValues.insert" call.
+// Exactly one of *CreativeFieldValue or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *CreativeFieldValue.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeFieldValuesInsertCall) Do(opts ...googleapi.CallOption) (*CreativeFieldValue, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeFieldValue{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new creative field value.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.creativeFieldValues.insert",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "creativeFieldId"
+	//   ],
+	//   "parameters": {
+	//     "creativeFieldId": {
+	//       "description": "Creative field ID for this creative field value.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
+	//   "request": {
+	//     "$ref": "CreativeFieldValue"
+	//   },
+	//   "response": {
+	//     "$ref": "CreativeFieldValue"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creativeFieldValues.list":
+
+type CreativeFieldValuesListCall struct {
+	s               *Service
+	profileId       int64
+	creativeFieldId int64
+	urlParams_      gensupport.URLParams
+	ifNoneMatch_    string
+	ctx_            context.Context
+}
+
+// List: Retrieves a list of creative field values, possibly filtered.
+func (r *CreativeFieldValuesService) List(profileId int64, creativeFieldId int64) *CreativeFieldValuesListCall {
+	c := &CreativeFieldValuesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.creativeFieldId = creativeFieldId
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only creative field
+// values with these IDs.
+func (c *CreativeFieldValuesListCall) Ids(ids ...int64) *CreativeFieldValuesListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *CreativeFieldValuesListCall) MaxResults(maxResults int64) *CreativeFieldValuesListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *CreativeFieldValuesListCall) PageToken(pageToken string) *CreativeFieldValuesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for creative field values by their values. Wildcards (e.g.
+// *) are not allowed.
+func (c *CreativeFieldValuesListCall) SearchString(searchString string) *CreativeFieldValuesListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "VALUE"
+func (c *CreativeFieldValuesListCall) SortField(sortField string) *CreativeFieldValuesListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *CreativeFieldValuesListCall) SortOrder(sortOrder string) *CreativeFieldValuesListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeFieldValuesListCall) Fields(s ...googleapi.Field) *CreativeFieldValuesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *CreativeFieldValuesListCall) IfNoneMatch(entityTag string) *CreativeFieldValuesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeFieldValuesListCall) Context(ctx context.Context) *CreativeFieldValuesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeFieldValuesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":       strconv.FormatInt(c.profileId, 10),
+		"creativeFieldId": strconv.FormatInt(c.creativeFieldId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeFieldValues.list" call.
+// Exactly one of *CreativeFieldValuesListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *CreativeFieldValuesListResponse.ServerResponse.Header or (if
+// a response was returned at all) in error.(*googleapi.Error).Header.
+// Use googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeFieldValuesListCall) Do(opts ...googleapi.CallOption) (*CreativeFieldValuesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeFieldValuesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of creative field values, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.creativeFieldValues.list",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "creativeFieldId"
+	//   ],
+	//   "parameters": {
+	//     "creativeFieldId": {
+	//       "description": "Creative field ID for this creative field value.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only creative field values with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for creative field values by their values. Wildcards (e.g. *) are not allowed.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "VALUE"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
+	//   "response": {
+	//     "$ref": "CreativeFieldValuesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *CreativeFieldValuesListCall) Pages(ctx context.Context, f func(*CreativeFieldValuesListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.creativeFieldValues.patch":
+
+type CreativeFieldValuesPatchCall struct {
+	s                  *Service
+	profileId          int64
+	creativeFieldId    int64
+	creativefieldvalue *CreativeFieldValue
+	urlParams_         gensupport.URLParams
+	ctx_               context.Context
+}
+
+// Patch: Updates an existing creative field value. This method supports
+// patch semantics.
+func (r *CreativeFieldValuesService) Patch(profileId int64, creativeFieldId int64, id int64, creativefieldvalue *CreativeFieldValue) *CreativeFieldValuesPatchCall {
+	c := &CreativeFieldValuesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.creativeFieldId = creativeFieldId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.creativefieldvalue = creativefieldvalue
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeFieldValuesPatchCall) Fields(s ...googleapi.Field) *CreativeFieldValuesPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeFieldValuesPatchCall) Context(ctx context.Context) *CreativeFieldValuesPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeFieldValuesPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.creativefieldvalue)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":       strconv.FormatInt(c.profileId, 10),
+		"creativeFieldId": strconv.FormatInt(c.creativeFieldId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeFieldValues.patch" call.
+// Exactly one of *CreativeFieldValue or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *CreativeFieldValue.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeFieldValuesPatchCall) Do(opts ...googleapi.CallOption) (*CreativeFieldValue, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeFieldValue{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing creative field value. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.creativeFieldValues.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "creativeFieldId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "creativeFieldId": {
+	//       "description": "Creative field ID for this creative field value.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "id": {
+	//       "description": "Creative Field Value ID",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
+	//   "request": {
+	//     "$ref": "CreativeFieldValue"
+	//   },
+	//   "response": {
+	//     "$ref": "CreativeFieldValue"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creativeFieldValues.update":
+
+type CreativeFieldValuesUpdateCall struct {
+	s                  *Service
+	profileId          int64
+	creativeFieldId    int64
+	creativefieldvalue *CreativeFieldValue
+	urlParams_         gensupport.URLParams
+	ctx_               context.Context
+}
+
+// Update: Updates an existing creative field value.
+func (r *CreativeFieldValuesService) Update(profileId int64, creativeFieldId int64, creativefieldvalue *CreativeFieldValue) *CreativeFieldValuesUpdateCall {
+	c := &CreativeFieldValuesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.creativeFieldId = creativeFieldId
+	c.creativefieldvalue = creativefieldvalue
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeFieldValuesUpdateCall) Fields(s ...googleapi.Field) *CreativeFieldValuesUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeFieldValuesUpdateCall) Context(ctx context.Context) *CreativeFieldValuesUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeFieldValuesUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.creativefieldvalue)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":       strconv.FormatInt(c.profileId, 10),
+		"creativeFieldId": strconv.FormatInt(c.creativeFieldId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeFieldValues.update" call.
+// Exactly one of *CreativeFieldValue or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *CreativeFieldValue.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeFieldValuesUpdateCall) Do(opts ...googleapi.CallOption) (*CreativeFieldValue, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeFieldValue{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing creative field value.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.creativeFieldValues.update",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "creativeFieldId"
+	//   ],
+	//   "parameters": {
+	//     "creativeFieldId": {
+	//       "description": "Creative field ID for this creative field value.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeFields/{creativeFieldId}/creativeFieldValues",
+	//   "request": {
+	//     "$ref": "CreativeFieldValue"
+	//   },
+	//   "response": {
+	//     "$ref": "CreativeFieldValue"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creativeFields.delete":
+
+type CreativeFieldsDeleteCall struct {
+	s          *Service
+	profileId  int64
+	id         int64
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes an existing creative field.
+func (r *CreativeFieldsService) Delete(profileId int64, id int64) *CreativeFieldsDeleteCall {
+	c := &CreativeFieldsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeFieldsDeleteCall) Fields(s ...googleapi.Field) *CreativeFieldsDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeFieldsDeleteCall) Context(ctx context.Context) *CreativeFieldsDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeFieldsDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeFields/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeFields.delete" call.
+func (c *CreativeFieldsDeleteCall) Do(opts ...googleapi.CallOption) error {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if err != nil {
+		return err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return err
+	}
+	return nil
+	// {
+	//   "description": "Deletes an existing creative field.",
+	//   "httpMethod": "DELETE",
+	//   "id": "dfareporting.creativeFields.delete",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Creative Field ID",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeFields/{id}",
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creativeFields.get":
+
+type CreativeFieldsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one creative field by ID.
+func (r *CreativeFieldsService) Get(profileId int64, id int64) *CreativeFieldsGetCall {
+	c := &CreativeFieldsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeFieldsGetCall) Fields(s ...googleapi.Field) *CreativeFieldsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *CreativeFieldsGetCall) IfNoneMatch(entityTag string) *CreativeFieldsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeFieldsGetCall) Context(ctx context.Context) *CreativeFieldsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeFieldsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeFields/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeFields.get" call.
+// Exactly one of *CreativeField or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *CreativeField.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeFieldsGetCall) Do(opts ...googleapi.CallOption) (*CreativeField, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeField{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one creative field by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.creativeFields.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Creative Field ID",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeFields/{id}",
+	//   "response": {
+	//     "$ref": "CreativeField"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creativeFields.insert":
+
+type CreativeFieldsInsertCall struct {
+	s             *Service
+	profileId     int64
+	creativefield *CreativeField
+	urlParams_    gensupport.URLParams
+	ctx_          context.Context
+}
+
+// Insert: Inserts a new creative field.
+func (r *CreativeFieldsService) Insert(profileId int64, creativefield *CreativeField) *CreativeFieldsInsertCall {
+	c := &CreativeFieldsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.creativefield = creativefield
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeFieldsInsertCall) Fields(s ...googleapi.Field) *CreativeFieldsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeFieldsInsertCall) Context(ctx context.Context) *CreativeFieldsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeFieldsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.creativefield)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeFields")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeFields.insert" call.
+// Exactly one of *CreativeField or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *CreativeField.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeFieldsInsertCall) Do(opts ...googleapi.CallOption) (*CreativeField, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeField{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new creative field.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.creativeFields.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeFields",
+	//   "request": {
+	//     "$ref": "CreativeField"
+	//   },
+	//   "response": {
+	//     "$ref": "CreativeField"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creativeFields.list":
+
+type CreativeFieldsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of creative fields, possibly filtered.
+func (r *CreativeFieldsService) List(profileId int64) *CreativeFieldsListCall {
+	c := &CreativeFieldsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// AdvertiserIds sets the optional parameter "advertiserIds": Select
+// only creative fields that belong to these advertisers.
+func (c *CreativeFieldsListCall) AdvertiserIds(advertiserIds ...int64) *CreativeFieldsListCall {
+	var advertiserIds_ []string
+	for _, v := range advertiserIds {
+		advertiserIds_ = append(advertiserIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("advertiserIds", advertiserIds_)
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only creative fields
+// with these IDs.
+func (c *CreativeFieldsListCall) Ids(ids ...int64) *CreativeFieldsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *CreativeFieldsListCall) MaxResults(maxResults int64) *CreativeFieldsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *CreativeFieldsListCall) PageToken(pageToken string) *CreativeFieldsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for creative fields by name or ID. Wildcards (*) are
+// allowed. For example, "creativefield*2015" will return creative
+// fields with names like "creativefield June 2015", "creativefield
+// April 2015", or simply "creativefield 2015". Most of the searches
+// also add wild-cards implicitly at the start and the end of the search
+// string. For example, a search string of "creativefield" will match
+// creative fields with the name "my creativefield", "creativefield
+// 2015", or simply "creativefield".
+func (c *CreativeFieldsListCall) SearchString(searchString string) *CreativeFieldsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *CreativeFieldsListCall) SortField(sortField string) *CreativeFieldsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *CreativeFieldsListCall) SortOrder(sortOrder string) *CreativeFieldsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeFieldsListCall) Fields(s ...googleapi.Field) *CreativeFieldsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *CreativeFieldsListCall) IfNoneMatch(entityTag string) *CreativeFieldsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeFieldsListCall) Context(ctx context.Context) *CreativeFieldsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeFieldsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeFields")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeFields.list" call.
+// Exactly one of *CreativeFieldsListResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *CreativeFieldsListResponse.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeFieldsListCall) Do(opts ...googleapi.CallOption) (*CreativeFieldsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeFieldsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of creative fields, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.creativeFields.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "advertiserIds": {
+	//       "description": "Select only creative fields that belong to these advertisers.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only creative fields with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for creative fields by name or ID. Wildcards (*) are allowed. For example, \"creativefield*2015\" will return creative fields with names like \"creativefield June 2015\", \"creativefield April 2015\", or simply \"creativefield 2015\". Most of the searches also add wild-cards implicitly at the start and the end of the search string. For example, a search string of \"creativefield\" will match creative fields with the name \"my creativefield\", \"creativefield 2015\", or simply \"creativefield\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeFields",
+	//   "response": {
+	//     "$ref": "CreativeFieldsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *CreativeFieldsListCall) Pages(ctx context.Context, f func(*CreativeFieldsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.creativeFields.patch":
+
+type CreativeFieldsPatchCall struct {
+	s             *Service
+	profileId     int64
+	creativefield *CreativeField
+	urlParams_    gensupport.URLParams
+	ctx_          context.Context
+}
+
+// Patch: Updates an existing creative field. This method supports patch
+// semantics.
+func (r *CreativeFieldsService) Patch(profileId int64, id int64, creativefield *CreativeField) *CreativeFieldsPatchCall {
+	c := &CreativeFieldsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.creativefield = creativefield
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeFieldsPatchCall) Fields(s ...googleapi.Field) *CreativeFieldsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeFieldsPatchCall) Context(ctx context.Context) *CreativeFieldsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeFieldsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.creativefield)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeFields")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeFields.patch" call.
+// Exactly one of *CreativeField or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *CreativeField.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeFieldsPatchCall) Do(opts ...googleapi.CallOption) (*CreativeField, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeField{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing creative field. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.creativeFields.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Creative Field ID",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeFields",
+	//   "request": {
+	//     "$ref": "CreativeField"
+	//   },
+	//   "response": {
+	//     "$ref": "CreativeField"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creativeFields.update":
+
+type CreativeFieldsUpdateCall struct {
+	s             *Service
+	profileId     int64
+	creativefield *CreativeField
+	urlParams_    gensupport.URLParams
+	ctx_          context.Context
+}
+
+// Update: Updates an existing creative field.
+func (r *CreativeFieldsService) Update(profileId int64, creativefield *CreativeField) *CreativeFieldsUpdateCall {
+	c := &CreativeFieldsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.creativefield = creativefield
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeFieldsUpdateCall) Fields(s ...googleapi.Field) *CreativeFieldsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeFieldsUpdateCall) Context(ctx context.Context) *CreativeFieldsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeFieldsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.creativefield)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeFields")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeFields.update" call.
+// Exactly one of *CreativeField or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *CreativeField.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeFieldsUpdateCall) Do(opts ...googleapi.CallOption) (*CreativeField, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeField{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing creative field.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.creativeFields.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeFields",
+	//   "request": {
+	//     "$ref": "CreativeField"
+	//   },
+	//   "response": {
+	//     "$ref": "CreativeField"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creativeGroups.get":
+
+type CreativeGroupsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one creative group by ID.
+func (r *CreativeGroupsService) Get(profileId int64, id int64) *CreativeGroupsGetCall {
+	c := &CreativeGroupsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeGroupsGetCall) Fields(s ...googleapi.Field) *CreativeGroupsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *CreativeGroupsGetCall) IfNoneMatch(entityTag string) *CreativeGroupsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeGroupsGetCall) Context(ctx context.Context) *CreativeGroupsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeGroupsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeGroups/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeGroups.get" call.
+// Exactly one of *CreativeGroup or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *CreativeGroup.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeGroupsGetCall) Do(opts ...googleapi.CallOption) (*CreativeGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one creative group by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.creativeGroups.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Creative group ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeGroups/{id}",
+	//   "response": {
+	//     "$ref": "CreativeGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creativeGroups.insert":
+
+type CreativeGroupsInsertCall struct {
+	s             *Service
+	profileId     int64
+	creativegroup *CreativeGroup
+	urlParams_    gensupport.URLParams
+	ctx_          context.Context
+}
+
+// Insert: Inserts a new creative group.
+func (r *CreativeGroupsService) Insert(profileId int64, creativegroup *CreativeGroup) *CreativeGroupsInsertCall {
+	c := &CreativeGroupsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.creativegroup = creativegroup
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeGroupsInsertCall) Fields(s ...googleapi.Field) *CreativeGroupsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeGroupsInsertCall) Context(ctx context.Context) *CreativeGroupsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.creativegroup)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeGroups.insert" call.
+// Exactly one of *CreativeGroup or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *CreativeGroup.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeGroupsInsertCall) Do(opts ...googleapi.CallOption) (*CreativeGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new creative group.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.creativeGroups.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeGroups",
+	//   "request": {
+	//     "$ref": "CreativeGroup"
+	//   },
+	//   "response": {
+	//     "$ref": "CreativeGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creativeGroups.list":
+
+type CreativeGroupsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of creative groups, possibly filtered.
+func (r *CreativeGroupsService) List(profileId int64) *CreativeGroupsListCall {
+	c := &CreativeGroupsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// AdvertiserIds sets the optional parameter "advertiserIds": Select
+// only creative groups that belong to these advertisers.
+func (c *CreativeGroupsListCall) AdvertiserIds(advertiserIds ...int64) *CreativeGroupsListCall {
+	var advertiserIds_ []string
+	for _, v := range advertiserIds {
+		advertiserIds_ = append(advertiserIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("advertiserIds", advertiserIds_)
+	return c
+}
+
+// GroupNumber sets the optional parameter "groupNumber": Select only
+// creative groups that belong to this subgroup.
+func (c *CreativeGroupsListCall) GroupNumber(groupNumber int64) *CreativeGroupsListCall {
+	c.urlParams_.Set("groupNumber", fmt.Sprint(groupNumber))
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only creative groups
+// with these IDs.
+func (c *CreativeGroupsListCall) Ids(ids ...int64) *CreativeGroupsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *CreativeGroupsListCall) MaxResults(maxResults int64) *CreativeGroupsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *CreativeGroupsListCall) PageToken(pageToken string) *CreativeGroupsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for creative groups by name or ID. Wildcards (*) are
+// allowed. For example, "creativegroup*2015" will return creative
+// groups with names like "creativegroup June 2015", "creativegroup
+// April 2015", or simply "creativegroup 2015". Most of the searches
+// also add wild-cards implicitly at the start and the end of the search
+// string. For example, a search string of "creativegroup" will match
+// creative groups with the name "my creativegroup", "creativegroup
+// 2015", or simply "creativegroup".
+func (c *CreativeGroupsListCall) SearchString(searchString string) *CreativeGroupsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *CreativeGroupsListCall) SortField(sortField string) *CreativeGroupsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *CreativeGroupsListCall) SortOrder(sortOrder string) *CreativeGroupsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeGroupsListCall) Fields(s ...googleapi.Field) *CreativeGroupsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *CreativeGroupsListCall) IfNoneMatch(entityTag string) *CreativeGroupsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeGroupsListCall) Context(ctx context.Context) *CreativeGroupsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeGroupsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeGroups.list" call.
+// Exactly one of *CreativeGroupsListResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *CreativeGroupsListResponse.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeGroupsListCall) Do(opts ...googleapi.CallOption) (*CreativeGroupsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeGroupsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of creative groups, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.creativeGroups.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "advertiserIds": {
+	//       "description": "Select only creative groups that belong to these advertisers.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "groupNumber": {
+	//       "description": "Select only creative groups that belong to this subgroup.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "ids": {
+	//       "description": "Select only creative groups with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for creative groups by name or ID. Wildcards (*) are allowed. For example, \"creativegroup*2015\" will return creative groups with names like \"creativegroup June 2015\", \"creativegroup April 2015\", or simply \"creativegroup 2015\". Most of the searches also add wild-cards implicitly at the start and the end of the search string. For example, a search string of \"creativegroup\" will match creative groups with the name \"my creativegroup\", \"creativegroup 2015\", or simply \"creativegroup\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeGroups",
+	//   "response": {
+	//     "$ref": "CreativeGroupsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *CreativeGroupsListCall) Pages(ctx context.Context, f func(*CreativeGroupsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.creativeGroups.patch":
+
+type CreativeGroupsPatchCall struct {
+	s             *Service
+	profileId     int64
+	creativegroup *CreativeGroup
+	urlParams_    gensupport.URLParams
+	ctx_          context.Context
+}
+
+// Patch: Updates an existing creative group. This method supports patch
+// semantics.
+func (r *CreativeGroupsService) Patch(profileId int64, id int64, creativegroup *CreativeGroup) *CreativeGroupsPatchCall {
+	c := &CreativeGroupsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.creativegroup = creativegroup
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeGroupsPatchCall) Fields(s ...googleapi.Field) *CreativeGroupsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeGroupsPatchCall) Context(ctx context.Context) *CreativeGroupsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeGroupsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.creativegroup)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeGroups.patch" call.
+// Exactly one of *CreativeGroup or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *CreativeGroup.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeGroupsPatchCall) Do(opts ...googleapi.CallOption) (*CreativeGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing creative group. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.creativeGroups.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Creative group ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeGroups",
+	//   "request": {
+	//     "$ref": "CreativeGroup"
+	//   },
+	//   "response": {
+	//     "$ref": "CreativeGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creativeGroups.update":
+
+type CreativeGroupsUpdateCall struct {
+	s             *Service
+	profileId     int64
+	creativegroup *CreativeGroup
+	urlParams_    gensupport.URLParams
+	ctx_          context.Context
+}
+
+// Update: Updates an existing creative group.
+func (r *CreativeGroupsService) Update(profileId int64, creativegroup *CreativeGroup) *CreativeGroupsUpdateCall {
+	c := &CreativeGroupsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.creativegroup = creativegroup
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativeGroupsUpdateCall) Fields(s ...googleapi.Field) *CreativeGroupsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativeGroupsUpdateCall) Context(ctx context.Context) *CreativeGroupsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativeGroupsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.creativegroup)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creativeGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creativeGroups.update" call.
+// Exactly one of *CreativeGroup or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *CreativeGroup.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativeGroupsUpdateCall) Do(opts ...googleapi.CallOption) (*CreativeGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativeGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing creative group.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.creativeGroups.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creativeGroups",
+	//   "request": {
+	//     "$ref": "CreativeGroup"
+	//   },
+	//   "response": {
+	//     "$ref": "CreativeGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creatives.get":
+
+type CreativesGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one creative by ID.
+func (r *CreativesService) Get(profileId int64, id int64) *CreativesGetCall {
+	c := &CreativesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativesGetCall) Fields(s ...googleapi.Field) *CreativesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *CreativesGetCall) IfNoneMatch(entityTag string) *CreativesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativesGetCall) Context(ctx context.Context) *CreativesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creatives/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creatives.get" call.
+// Exactly one of *Creative or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Creative.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *CreativesGetCall) Do(opts ...googleapi.CallOption) (*Creative, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Creative{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one creative by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.creatives.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Creative ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creatives/{id}",
+	//   "response": {
+	//     "$ref": "Creative"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creatives.insert":
+
+type CreativesInsertCall struct {
+	s          *Service
+	profileId  int64
+	creative   *Creative
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Insert: Inserts a new creative.
+func (r *CreativesService) Insert(profileId int64, creative *Creative) *CreativesInsertCall {
+	c := &CreativesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.creative = creative
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativesInsertCall) Fields(s ...googleapi.Field) *CreativesInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativesInsertCall) Context(ctx context.Context) *CreativesInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativesInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.creative)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creatives")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creatives.insert" call.
+// Exactly one of *Creative or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Creative.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *CreativesInsertCall) Do(opts ...googleapi.CallOption) (*Creative, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Creative{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new creative.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.creatives.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creatives",
+	//   "request": {
+	//     "$ref": "Creative"
+	//   },
+	//   "response": {
+	//     "$ref": "Creative"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creatives.list":
+
+type CreativesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of creatives, possibly filtered.
+func (r *CreativesService) List(profileId int64) *CreativesListCall {
+	c := &CreativesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Active sets the optional parameter "active": Select only active
+// creatives. Leave blank to select active and inactive creatives.
+func (c *CreativesListCall) Active(active bool) *CreativesListCall {
+	c.urlParams_.Set("active", fmt.Sprint(active))
+	return c
+}
+
+// AdvertiserId sets the optional parameter "advertiserId": Select only
+// creatives with this advertiser ID.
+func (c *CreativesListCall) AdvertiserId(advertiserId int64) *CreativesListCall {
+	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
+	return c
+}
+
+// Archived sets the optional parameter "archived": Select only archived
+// creatives. Leave blank to select archived and unarchived creatives.
+func (c *CreativesListCall) Archived(archived bool) *CreativesListCall {
+	c.urlParams_.Set("archived", fmt.Sprint(archived))
+	return c
+}
+
+// CampaignId sets the optional parameter "campaignId": Select only
+// creatives with this campaign ID.
+func (c *CreativesListCall) CampaignId(campaignId int64) *CreativesListCall {
+	c.urlParams_.Set("campaignId", fmt.Sprint(campaignId))
+	return c
+}
+
+// CompanionCreativeIds sets the optional parameter
+// "companionCreativeIds": Select only in-stream video creatives with
+// these companion IDs.
+func (c *CreativesListCall) CompanionCreativeIds(companionCreativeIds ...int64) *CreativesListCall {
+	var companionCreativeIds_ []string
+	for _, v := range companionCreativeIds {
+		companionCreativeIds_ = append(companionCreativeIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("companionCreativeIds", companionCreativeIds_)
+	return c
+}
+
+// CreativeFieldIds sets the optional parameter "creativeFieldIds":
+// Select only creatives with these creative field IDs.
+func (c *CreativesListCall) CreativeFieldIds(creativeFieldIds ...int64) *CreativesListCall {
+	var creativeFieldIds_ []string
+	for _, v := range creativeFieldIds {
+		creativeFieldIds_ = append(creativeFieldIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("creativeFieldIds", creativeFieldIds_)
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only creatives with
+// these IDs.
+func (c *CreativesListCall) Ids(ids ...int64) *CreativesListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *CreativesListCall) MaxResults(maxResults int64) *CreativesListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *CreativesListCall) PageToken(pageToken string) *CreativesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// RenderingIds sets the optional parameter "renderingIds": Select only
+// creatives with these rendering IDs.
+func (c *CreativesListCall) RenderingIds(renderingIds ...int64) *CreativesListCall {
+	var renderingIds_ []string
+	for _, v := range renderingIds {
+		renderingIds_ = append(renderingIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("renderingIds", renderingIds_)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name or ID. Wildcards (*) are allowed. For
+// example, "creative*2015" will return objects with names like
+// "creative June 2015", "creative April 2015", or simply "creative
+// 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 "creative" will match objects with name "my creative", "creative
+// 2015", or simply "creative".
+func (c *CreativesListCall) SearchString(searchString string) *CreativesListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SizeIds sets the optional parameter "sizeIds": Select only creatives
+// with these size IDs.
+func (c *CreativesListCall) SizeIds(sizeIds ...int64) *CreativesListCall {
+	var sizeIds_ []string
+	for _, v := range sizeIds {
+		sizeIds_ = append(sizeIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("sizeIds", sizeIds_)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *CreativesListCall) SortField(sortField string) *CreativesListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *CreativesListCall) SortOrder(sortOrder string) *CreativesListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// StudioCreativeId sets the optional parameter "studioCreativeId":
+// Select only creatives corresponding to this Studio creative ID.
+func (c *CreativesListCall) StudioCreativeId(studioCreativeId int64) *CreativesListCall {
+	c.urlParams_.Set("studioCreativeId", fmt.Sprint(studioCreativeId))
+	return c
+}
+
+// Types sets the optional parameter "types": Select only creatives with
+// these creative types.
+//
+// Possible values:
+//   "BRAND_SAFE_DEFAULT_INSTREAM_VIDEO"
+//   "CUSTOM_INPAGE"
+//   "CUSTOM_INTERSTITIAL"
+//   "ENHANCED_BANNER"
+//   "ENHANCED_IMAGE"
+//   "FLASH_INPAGE"
+//   "HTML5_BANNER"
+//   "IMAGE"
+//   "INSTREAM_VIDEO"
+//   "INSTREAM_VIDEO_REDIRECT"
+//   "INTERNAL_REDIRECT"
+//   "INTERSTITIAL_INTERNAL_REDIRECT"
+//   "REDIRECT"
+//   "RICH_MEDIA_EXPANDING"
+//   "RICH_MEDIA_IM_EXPAND"
+//   "RICH_MEDIA_INPAGE"
+//   "RICH_MEDIA_INPAGE_FLOATING"
+//   "RICH_MEDIA_INTERSTITIAL_FLOAT"
+//   "RICH_MEDIA_MOBILE_IN_APP"
+//   "RICH_MEDIA_MULTI_FLOATING"
+//   "RICH_MEDIA_PEEL_DOWN"
+//   "TRACKING_TEXT"
+//   "VPAID_LINEAR"
+//   "VPAID_NON_LINEAR"
+func (c *CreativesListCall) Types(types ...string) *CreativesListCall {
+	c.urlParams_.SetMulti("types", append([]string{}, types...))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativesListCall) Fields(s ...googleapi.Field) *CreativesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *CreativesListCall) IfNoneMatch(entityTag string) *CreativesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativesListCall) Context(ctx context.Context) *CreativesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creatives")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creatives.list" call.
+// Exactly one of *CreativesListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *CreativesListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *CreativesListCall) Do(opts ...googleapi.CallOption) (*CreativesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CreativesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of creatives, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.creatives.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "active": {
+	//       "description": "Select only active creatives. Leave blank to select active and inactive creatives.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "advertiserId": {
+	//       "description": "Select only creatives with this advertiser ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "archived": {
+	//       "description": "Select only archived creatives. Leave blank to select archived and unarchived creatives.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "campaignId": {
+	//       "description": "Select only creatives with this campaign ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "companionCreativeIds": {
+	//       "description": "Select only in-stream video creatives with these companion IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "creativeFieldIds": {
+	//       "description": "Select only creatives with these creative field IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only creatives with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "renderingIds": {
+	//       "description": "Select only creatives with these rendering IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"creative*2015\" will return objects with names like \"creative June 2015\", \"creative April 2015\", or simply \"creative 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 \"creative\" will match objects with name \"my creative\", \"creative 2015\", or simply \"creative\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sizeIds": {
+	//       "description": "Select only creatives with these size IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "studioCreativeId": {
+	//       "description": "Select only creatives corresponding to this Studio creative ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "types": {
+	//       "description": "Select only creatives with these creative types.",
+	//       "enum": [
+	//         "BRAND_SAFE_DEFAULT_INSTREAM_VIDEO",
+	//         "CUSTOM_INPAGE",
+	//         "CUSTOM_INTERSTITIAL",
+	//         "ENHANCED_BANNER",
+	//         "ENHANCED_IMAGE",
+	//         "FLASH_INPAGE",
+	//         "HTML5_BANNER",
+	//         "IMAGE",
+	//         "INSTREAM_VIDEO",
+	//         "INSTREAM_VIDEO_REDIRECT",
+	//         "INTERNAL_REDIRECT",
+	//         "INTERSTITIAL_INTERNAL_REDIRECT",
+	//         "REDIRECT",
+	//         "RICH_MEDIA_EXPANDING",
+	//         "RICH_MEDIA_IM_EXPAND",
+	//         "RICH_MEDIA_INPAGE",
+	//         "RICH_MEDIA_INPAGE_FLOATING",
+	//         "RICH_MEDIA_INTERSTITIAL_FLOAT",
+	//         "RICH_MEDIA_MOBILE_IN_APP",
+	//         "RICH_MEDIA_MULTI_FLOATING",
+	//         "RICH_MEDIA_PEEL_DOWN",
+	//         "TRACKING_TEXT",
+	//         "VPAID_LINEAR",
+	//         "VPAID_NON_LINEAR"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creatives",
+	//   "response": {
+	//     "$ref": "CreativesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *CreativesListCall) Pages(ctx context.Context, f func(*CreativesListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.creatives.patch":
+
+type CreativesPatchCall struct {
+	s          *Service
+	profileId  int64
+	creative   *Creative
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Patch: Updates an existing creative. This method supports patch
+// semantics.
+func (r *CreativesService) Patch(profileId int64, id int64, creative *Creative) *CreativesPatchCall {
+	c := &CreativesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.creative = creative
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativesPatchCall) Fields(s ...googleapi.Field) *CreativesPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativesPatchCall) Context(ctx context.Context) *CreativesPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativesPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.creative)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creatives")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creatives.patch" call.
+// Exactly one of *Creative or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Creative.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *CreativesPatchCall) Do(opts ...googleapi.CallOption) (*Creative, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Creative{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing creative. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.creatives.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Creative ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creatives",
+	//   "request": {
+	//     "$ref": "Creative"
+	//   },
+	//   "response": {
+	//     "$ref": "Creative"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.creatives.update":
+
+type CreativesUpdateCall struct {
+	s          *Service
+	profileId  int64
+	creative   *Creative
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Update: Updates an existing creative.
+func (r *CreativesService) Update(profileId int64, creative *Creative) *CreativesUpdateCall {
+	c := &CreativesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.creative = creative
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *CreativesUpdateCall) Fields(s ...googleapi.Field) *CreativesUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *CreativesUpdateCall) Context(ctx context.Context) *CreativesUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *CreativesUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.creative)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/creatives")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.creatives.update" call.
+// Exactly one of *Creative or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Creative.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *CreativesUpdateCall) Do(opts ...googleapi.CallOption) (*Creative, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Creative{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing creative.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.creatives.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/creatives",
+	//   "request": {
+	//     "$ref": "Creative"
+	//   },
+	//   "response": {
+	//     "$ref": "Creative"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.dimensionValues.query":
+
+type DimensionValuesQueryCall struct {
+	s                     *Service
+	profileId             int64
+	dimensionvaluerequest *DimensionValueRequest
+	urlParams_            gensupport.URLParams
+	ctx_                  context.Context
+}
+
+// Query: Retrieves list of report dimension values for a list of
+// filters.
+func (r *DimensionValuesService) Query(profileId int64, dimensionvaluerequest *DimensionValueRequest) *DimensionValuesQueryCall {
+	c := &DimensionValuesQueryCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.dimensionvaluerequest = dimensionvaluerequest
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *DimensionValuesQueryCall) MaxResults(maxResults int64) *DimensionValuesQueryCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The value of the
+// nextToken from the previous result page.
+func (c *DimensionValuesQueryCall) PageToken(pageToken string) *DimensionValuesQueryCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *DimensionValuesQueryCall) Fields(s ...googleapi.Field) *DimensionValuesQueryCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *DimensionValuesQueryCall) Context(ctx context.Context) *DimensionValuesQueryCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *DimensionValuesQueryCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.dimensionvaluerequest)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/dimensionvalues/query")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.dimensionValues.query" call.
+// Exactly one of *DimensionValueList or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *DimensionValueList.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *DimensionValuesQueryCall) Do(opts ...googleapi.CallOption) (*DimensionValueList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &DimensionValueList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves list of report dimension values for a list of filters.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.dimensionValues.query",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "maximum": "100",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The value of the nextToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "The DFA user profile ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/dimensionvalues/query",
+	//   "request": {
+	//     "$ref": "DimensionValueRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "DimensionValueList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.directorySiteContacts.get":
+
+type DirectorySiteContactsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one directory site contact by ID.
+func (r *DirectorySiteContactsService) Get(profileId int64, id int64) *DirectorySiteContactsGetCall {
+	c := &DirectorySiteContactsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *DirectorySiteContactsGetCall) Fields(s ...googleapi.Field) *DirectorySiteContactsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *DirectorySiteContactsGetCall) IfNoneMatch(entityTag string) *DirectorySiteContactsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *DirectorySiteContactsGetCall) Context(ctx context.Context) *DirectorySiteContactsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *DirectorySiteContactsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/directorySiteContacts/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.directorySiteContacts.get" call.
+// Exactly one of *DirectorySiteContact or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *DirectorySiteContact.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *DirectorySiteContactsGetCall) Do(opts ...googleapi.CallOption) (*DirectorySiteContact, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &DirectorySiteContact{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one directory site contact by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.directorySiteContacts.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Directory site contact ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/directorySiteContacts/{id}",
+	//   "response": {
+	//     "$ref": "DirectorySiteContact"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.directorySiteContacts.list":
+
+type DirectorySiteContactsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of directory site contacts, possibly filtered.
+func (r *DirectorySiteContactsService) List(profileId int64) *DirectorySiteContactsListCall {
+	c := &DirectorySiteContactsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// DirectorySiteIds sets the optional parameter "directorySiteIds":
+// Select only directory site contacts with these directory site IDs.
+// This is a required field.
+func (c *DirectorySiteContactsListCall) DirectorySiteIds(directorySiteIds ...int64) *DirectorySiteContactsListCall {
+	var directorySiteIds_ []string
+	for _, v := range directorySiteIds {
+		directorySiteIds_ = append(directorySiteIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("directorySiteIds", directorySiteIds_)
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only directory site
+// contacts with these IDs.
+func (c *DirectorySiteContactsListCall) Ids(ids ...int64) *DirectorySiteContactsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *DirectorySiteContactsListCall) MaxResults(maxResults int64) *DirectorySiteContactsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *DirectorySiteContactsListCall) PageToken(pageToken string) *DirectorySiteContactsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name, ID or email. Wildcards (*) are
+// allowed. For example, "directory site contact*2015" will return
+// objects with names like "directory site contact June 2015",
+// "directory site contact April 2015", or simply "directory site
+// contact 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 "directory site contact" will match objects with name "my
+// directory site contact", "directory site contact 2015", or simply
+// "directory site contact".
+func (c *DirectorySiteContactsListCall) SearchString(searchString string) *DirectorySiteContactsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *DirectorySiteContactsListCall) SortField(sortField string) *DirectorySiteContactsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *DirectorySiteContactsListCall) SortOrder(sortOrder string) *DirectorySiteContactsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *DirectorySiteContactsListCall) Fields(s ...googleapi.Field) *DirectorySiteContactsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *DirectorySiteContactsListCall) IfNoneMatch(entityTag string) *DirectorySiteContactsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *DirectorySiteContactsListCall) Context(ctx context.Context) *DirectorySiteContactsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *DirectorySiteContactsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/directorySiteContacts")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.directorySiteContacts.list" call.
+// Exactly one of *DirectorySiteContactsListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *DirectorySiteContactsListResponse.ServerResponse.Header or
+// (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *DirectorySiteContactsListCall) Do(opts ...googleapi.CallOption) (*DirectorySiteContactsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &DirectorySiteContactsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of directory site contacts, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.directorySiteContacts.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "directorySiteIds": {
+	//       "description": "Select only directory site contacts with these directory site IDs. This is a required field.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only directory site contacts with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name, ID or email. Wildcards (*) are allowed. For example, \"directory site contact*2015\" will return objects with names like \"directory site contact June 2015\", \"directory site contact April 2015\", or simply \"directory site contact 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 \"directory site contact\" will match objects with name \"my directory site contact\", \"directory site contact 2015\", or simply \"directory site contact\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/directorySiteContacts",
+	//   "response": {
+	//     "$ref": "DirectorySiteContactsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *DirectorySiteContactsListCall) Pages(ctx context.Context, f func(*DirectorySiteContactsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.directorySites.get":
+
+type DirectorySitesGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one directory site by ID.
+func (r *DirectorySitesService) Get(profileId int64, id int64) *DirectorySitesGetCall {
+	c := &DirectorySitesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *DirectorySitesGetCall) Fields(s ...googleapi.Field) *DirectorySitesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *DirectorySitesGetCall) IfNoneMatch(entityTag string) *DirectorySitesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *DirectorySitesGetCall) Context(ctx context.Context) *DirectorySitesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *DirectorySitesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/directorySites/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.directorySites.get" call.
+// Exactly one of *DirectorySite or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *DirectorySite.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *DirectorySitesGetCall) Do(opts ...googleapi.CallOption) (*DirectorySite, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &DirectorySite{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one directory site by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.directorySites.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Directory site ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/directorySites/{id}",
+	//   "response": {
+	//     "$ref": "DirectorySite"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.directorySites.insert":
+
+type DirectorySitesInsertCall struct {
+	s             *Service
+	profileId     int64
+	directorysite *DirectorySite
+	urlParams_    gensupport.URLParams
+	ctx_          context.Context
+}
+
+// Insert: Inserts a new directory site.
+func (r *DirectorySitesService) Insert(profileId int64, directorysite *DirectorySite) *DirectorySitesInsertCall {
+	c := &DirectorySitesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.directorysite = directorysite
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *DirectorySitesInsertCall) Fields(s ...googleapi.Field) *DirectorySitesInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *DirectorySitesInsertCall) Context(ctx context.Context) *DirectorySitesInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *DirectorySitesInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.directorysite)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/directorySites")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.directorySites.insert" call.
+// Exactly one of *DirectorySite or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *DirectorySite.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *DirectorySitesInsertCall) Do(opts ...googleapi.CallOption) (*DirectorySite, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &DirectorySite{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new directory site.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.directorySites.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/directorySites",
+	//   "request": {
+	//     "$ref": "DirectorySite"
+	//   },
+	//   "response": {
+	//     "$ref": "DirectorySite"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.directorySites.list":
+
+type DirectorySitesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of directory sites, possibly filtered.
+func (r *DirectorySitesService) List(profileId int64) *DirectorySitesListCall {
+	c := &DirectorySitesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// AcceptsInStreamVideoPlacements sets the optional parameter
+// "acceptsInStreamVideoPlacements": This search filter is no longer
+// supported and will have no effect on the results returned.
+func (c *DirectorySitesListCall) AcceptsInStreamVideoPlacements(acceptsInStreamVideoPlacements bool) *DirectorySitesListCall {
+	c.urlParams_.Set("acceptsInStreamVideoPlacements", fmt.Sprint(acceptsInStreamVideoPlacements))
+	return c
+}
+
+// AcceptsInterstitialPlacements sets the optional parameter
+// "acceptsInterstitialPlacements": This search filter is no longer
+// supported and will have no effect on the results returned.
+func (c *DirectorySitesListCall) AcceptsInterstitialPlacements(acceptsInterstitialPlacements bool) *DirectorySitesListCall {
+	c.urlParams_.Set("acceptsInterstitialPlacements", fmt.Sprint(acceptsInterstitialPlacements))
+	return c
+}
+
+// AcceptsPublisherPaidPlacements sets the optional parameter
+// "acceptsPublisherPaidPlacements": Select only directory sites that
+// accept publisher paid placements. This field can be left blank.
+func (c *DirectorySitesListCall) AcceptsPublisherPaidPlacements(acceptsPublisherPaidPlacements bool) *DirectorySitesListCall {
+	c.urlParams_.Set("acceptsPublisherPaidPlacements", fmt.Sprint(acceptsPublisherPaidPlacements))
+	return c
+}
+
+// Active sets the optional parameter "active": Select only active
+// directory sites. Leave blank to retrieve both active and inactive
+// directory sites.
+func (c *DirectorySitesListCall) Active(active bool) *DirectorySitesListCall {
+	c.urlParams_.Set("active", fmt.Sprint(active))
+	return c
+}
+
+// CountryId sets the optional parameter "countryId": Select only
+// directory sites with this country ID.
+func (c *DirectorySitesListCall) CountryId(countryId int64) *DirectorySitesListCall {
+	c.urlParams_.Set("countryId", fmt.Sprint(countryId))
+	return c
+}
+
+// DfpNetworkCode sets the optional parameter "dfp_network_code": Select
+// only directory sites with this DFP network code.
+func (c *DirectorySitesListCall) DfpNetworkCode(dfpNetworkCode string) *DirectorySitesListCall {
+	c.urlParams_.Set("dfp_network_code", dfpNetworkCode)
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only directory sites
+// with these IDs.
+func (c *DirectorySitesListCall) Ids(ids ...int64) *DirectorySitesListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *DirectorySitesListCall) MaxResults(maxResults int64) *DirectorySitesListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *DirectorySitesListCall) PageToken(pageToken string) *DirectorySitesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// ParentId sets the optional parameter "parentId": Select only
+// directory sites with this parent ID.
+func (c *DirectorySitesListCall) ParentId(parentId int64) *DirectorySitesListCall {
+	c.urlParams_.Set("parentId", fmt.Sprint(parentId))
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name, ID or URL. Wildcards (*) are allowed.
+// For example, "directory site*2015" will return objects with names
+// like "directory site June 2015", "directory site April 2015", or
+// simply "directory site 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 "directory site" will match objects with
+// name "my directory site", "directory site 2015" or simply, "directory
+// site".
+func (c *DirectorySitesListCall) SearchString(searchString string) *DirectorySitesListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *DirectorySitesListCall) SortField(sortField string) *DirectorySitesListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *DirectorySitesListCall) SortOrder(sortOrder string) *DirectorySitesListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *DirectorySitesListCall) Fields(s ...googleapi.Field) *DirectorySitesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *DirectorySitesListCall) IfNoneMatch(entityTag string) *DirectorySitesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *DirectorySitesListCall) Context(ctx context.Context) *DirectorySitesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *DirectorySitesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/directorySites")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.directorySites.list" call.
+// Exactly one of *DirectorySitesListResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *DirectorySitesListResponse.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *DirectorySitesListCall) Do(opts ...googleapi.CallOption) (*DirectorySitesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &DirectorySitesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of directory sites, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.directorySites.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "acceptsInStreamVideoPlacements": {
+	//       "description": "This search filter is no longer supported and will have no effect on the results returned.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "acceptsInterstitialPlacements": {
+	//       "description": "This search filter is no longer supported and will have no effect on the results returned.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "acceptsPublisherPaidPlacements": {
+	//       "description": "Select only directory sites that accept publisher paid placements. This field can be left blank.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "active": {
+	//       "description": "Select only active directory sites. Leave blank to retrieve both active and inactive directory sites.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "countryId": {
+	//       "description": "Select only directory sites with this country ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "dfp_network_code": {
+	//       "description": "Select only directory sites with this DFP network code.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only directory sites with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parentId": {
+	//       "description": "Select only directory sites with this parent ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name, ID or URL. Wildcards (*) are allowed. For example, \"directory site*2015\" will return objects with names like \"directory site June 2015\", \"directory site April 2015\", or simply \"directory site 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 \"directory site\" will match objects with name \"my directory site\", \"directory site 2015\" or simply, \"directory site\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/directorySites",
+	//   "response": {
+	//     "$ref": "DirectorySitesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *DirectorySitesListCall) Pages(ctx context.Context, f func(*DirectorySitesListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.eventTags.delete":
+
+type EventTagsDeleteCall struct {
+	s          *Service
+	profileId  int64
+	id         int64
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes an existing event tag.
+func (r *EventTagsService) Delete(profileId int64, id int64) *EventTagsDeleteCall {
+	c := &EventTagsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *EventTagsDeleteCall) Fields(s ...googleapi.Field) *EventTagsDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *EventTagsDeleteCall) Context(ctx context.Context) *EventTagsDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *EventTagsDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/eventTags/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.eventTags.delete" call.
+func (c *EventTagsDeleteCall) Do(opts ...googleapi.CallOption) error {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if err != nil {
+		return err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return err
+	}
+	return nil
+	// {
+	//   "description": "Deletes an existing event tag.",
+	//   "httpMethod": "DELETE",
+	//   "id": "dfareporting.eventTags.delete",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Event tag ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/eventTags/{id}",
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.eventTags.get":
+
+type EventTagsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one event tag by ID.
+func (r *EventTagsService) Get(profileId int64, id int64) *EventTagsGetCall {
+	c := &EventTagsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *EventTagsGetCall) Fields(s ...googleapi.Field) *EventTagsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *EventTagsGetCall) IfNoneMatch(entityTag string) *EventTagsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *EventTagsGetCall) Context(ctx context.Context) *EventTagsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *EventTagsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/eventTags/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.eventTags.get" call.
+// Exactly one of *EventTag or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *EventTag.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *EventTagsGetCall) Do(opts ...googleapi.CallOption) (*EventTag, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &EventTag{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one event tag by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.eventTags.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Event tag ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/eventTags/{id}",
+	//   "response": {
+	//     "$ref": "EventTag"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.eventTags.insert":
+
+type EventTagsInsertCall struct {
+	s          *Service
+	profileId  int64
+	eventtag   *EventTag
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Insert: Inserts a new event tag.
+func (r *EventTagsService) Insert(profileId int64, eventtag *EventTag) *EventTagsInsertCall {
+	c := &EventTagsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.eventtag = eventtag
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *EventTagsInsertCall) Fields(s ...googleapi.Field) *EventTagsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *EventTagsInsertCall) Context(ctx context.Context) *EventTagsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *EventTagsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.eventtag)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/eventTags")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.eventTags.insert" call.
+// Exactly one of *EventTag or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *EventTag.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *EventTagsInsertCall) Do(opts ...googleapi.CallOption) (*EventTag, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &EventTag{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new event tag.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.eventTags.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/eventTags",
+	//   "request": {
+	//     "$ref": "EventTag"
+	//   },
+	//   "response": {
+	//     "$ref": "EventTag"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.eventTags.list":
+
+type EventTagsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of event tags, possibly filtered.
+func (r *EventTagsService) List(profileId int64) *EventTagsListCall {
+	c := &EventTagsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// AdId sets the optional parameter "adId": Select only event tags that
+// belong to this ad.
+func (c *EventTagsListCall) AdId(adId int64) *EventTagsListCall {
+	c.urlParams_.Set("adId", fmt.Sprint(adId))
+	return c
+}
+
+// AdvertiserId sets the optional parameter "advertiserId": Select only
+// event tags that belong to this advertiser.
+func (c *EventTagsListCall) AdvertiserId(advertiserId int64) *EventTagsListCall {
+	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
+	return c
+}
+
+// CampaignId sets the optional parameter "campaignId": Select only
+// event tags that belong to this campaign.
+func (c *EventTagsListCall) CampaignId(campaignId int64) *EventTagsListCall {
+	c.urlParams_.Set("campaignId", fmt.Sprint(campaignId))
+	return c
+}
+
+// DefinitionsOnly sets the optional parameter "definitionsOnly":
+// Examine only the specified campaign or advertiser's event tags for
+// matching selector criteria. When set to false, the parent advertiser
+// and parent campaign of the specified ad or campaign is examined as
+// well. In addition, when set to false, the status field is examined as
+// well, along with the enabledByDefault field. This parameter can not
+// be set to true when adId is specified as ads do not define their own
+// even tags.
+func (c *EventTagsListCall) DefinitionsOnly(definitionsOnly bool) *EventTagsListCall {
+	c.urlParams_.Set("definitionsOnly", fmt.Sprint(definitionsOnly))
+	return c
+}
+
+// Enabled sets the optional parameter "enabled": Select only enabled
+// event tags. What is considered enabled or disabled depends on the
+// definitionsOnly parameter. When definitionsOnly is set to true, only
+// the specified advertiser or campaign's event tags' enabledByDefault
+// field is examined. When definitionsOnly is set to false, the
+// specified ad or specified campaign's parent advertiser's or parent
+// campaign's event tags' enabledByDefault and status fields are
+// examined as well.
+func (c *EventTagsListCall) Enabled(enabled bool) *EventTagsListCall {
+	c.urlParams_.Set("enabled", fmt.Sprint(enabled))
+	return c
+}
+
+// EventTagTypes sets the optional parameter "eventTagTypes": Select
+// only event tags with the specified event tag types. Event tag types
+// can be used to specify whether to use a third-party pixel, a
+// third-party JavaScript URL, or a third-party click-through URL for
+// either impression or click tracking.
+//
+// Possible values:
+//   "CLICK_THROUGH_EVENT_TAG"
+//   "IMPRESSION_IMAGE_EVENT_TAG"
+//   "IMPRESSION_JAVASCRIPT_EVENT_TAG"
+func (c *EventTagsListCall) EventTagTypes(eventTagTypes ...string) *EventTagsListCall {
+	c.urlParams_.SetMulti("eventTagTypes", append([]string{}, eventTagTypes...))
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only event tags with
+// these IDs.
+func (c *EventTagsListCall) Ids(ids ...int64) *EventTagsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name or ID. Wildcards (*) are allowed. For
+// example, "eventtag*2015" will return objects with names like
+// "eventtag June 2015", "eventtag April 2015", or simply "eventtag
+// 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 "eventtag" will match objects with name "my eventtag", "eventtag
+// 2015", or simply "eventtag".
+func (c *EventTagsListCall) SearchString(searchString string) *EventTagsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *EventTagsListCall) SortField(sortField string) *EventTagsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *EventTagsListCall) SortOrder(sortOrder string) *EventTagsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *EventTagsListCall) Fields(s ...googleapi.Field) *EventTagsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *EventTagsListCall) IfNoneMatch(entityTag string) *EventTagsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *EventTagsListCall) Context(ctx context.Context) *EventTagsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *EventTagsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/eventTags")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.eventTags.list" call.
+// Exactly one of *EventTagsListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *EventTagsListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *EventTagsListCall) Do(opts ...googleapi.CallOption) (*EventTagsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &EventTagsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of event tags, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.eventTags.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "adId": {
+	//       "description": "Select only event tags that belong to this ad.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "advertiserId": {
+	//       "description": "Select only event tags that belong to this advertiser.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "campaignId": {
+	//       "description": "Select only event tags that belong to this campaign.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "definitionsOnly": {
+	//       "description": "Examine only the specified campaign or advertiser's event tags for matching selector criteria. When set to false, the parent advertiser and parent campaign of the specified ad or campaign is examined as well. In addition, when set to false, the status field is examined as well, along with the enabledByDefault field. This parameter can not be set to true when adId is specified as ads do not define their own even tags.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "enabled": {
+	//       "description": "Select only enabled event tags. What is considered enabled or disabled depends on the definitionsOnly parameter. When definitionsOnly is set to true, only the specified advertiser or campaign's event tags' enabledByDefault field is examined. When definitionsOnly is set to false, the specified ad or specified campaign's parent advertiser's or parent campaign's event tags' enabledByDefault and status fields are examined as well.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "eventTagTypes": {
+	//       "description": "Select only event tags with the specified event tag types. Event tag types can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking.",
+	//       "enum": [
+	//         "CLICK_THROUGH_EVENT_TAG",
+	//         "IMPRESSION_IMAGE_EVENT_TAG",
+	//         "IMPRESSION_JAVASCRIPT_EVENT_TAG"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only event tags with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"eventtag*2015\" will return objects with names like \"eventtag June 2015\", \"eventtag April 2015\", or simply \"eventtag 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 \"eventtag\" will match objects with name \"my eventtag\", \"eventtag 2015\", or simply \"eventtag\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/eventTags",
+	//   "response": {
+	//     "$ref": "EventTagsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.eventTags.patch":
+
+type EventTagsPatchCall struct {
+	s          *Service
+	profileId  int64
+	eventtag   *EventTag
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Patch: Updates an existing event tag. This method supports patch
+// semantics.
+func (r *EventTagsService) Patch(profileId int64, id int64, eventtag *EventTag) *EventTagsPatchCall {
+	c := &EventTagsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.eventtag = eventtag
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *EventTagsPatchCall) Fields(s ...googleapi.Field) *EventTagsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *EventTagsPatchCall) Context(ctx context.Context) *EventTagsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *EventTagsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.eventtag)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/eventTags")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.eventTags.patch" call.
+// Exactly one of *EventTag or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *EventTag.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *EventTagsPatchCall) Do(opts ...googleapi.CallOption) (*EventTag, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &EventTag{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing event tag. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.eventTags.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Event tag ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/eventTags",
+	//   "request": {
+	//     "$ref": "EventTag"
+	//   },
+	//   "response": {
+	//     "$ref": "EventTag"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.eventTags.update":
+
+type EventTagsUpdateCall struct {
+	s          *Service
+	profileId  int64
+	eventtag   *EventTag
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Update: Updates an existing event tag.
+func (r *EventTagsService) Update(profileId int64, eventtag *EventTag) *EventTagsUpdateCall {
+	c := &EventTagsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.eventtag = eventtag
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *EventTagsUpdateCall) Fields(s ...googleapi.Field) *EventTagsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *EventTagsUpdateCall) Context(ctx context.Context) *EventTagsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *EventTagsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.eventtag)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/eventTags")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.eventTags.update" call.
+// Exactly one of *EventTag or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *EventTag.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *EventTagsUpdateCall) Do(opts ...googleapi.CallOption) (*EventTag, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &EventTag{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing event tag.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.eventTags.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/eventTags",
+	//   "request": {
+	//     "$ref": "EventTag"
+	//   },
+	//   "response": {
+	//     "$ref": "EventTag"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.files.get":
+
+type FilesGetCall struct {
+	s            *Service
+	reportId     int64
+	fileId       int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Retrieves a report file by its report ID and file ID.
+func (r *FilesService) Get(reportId int64, fileId int64) *FilesGetCall {
+	c := &FilesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.reportId = reportId
+	c.fileId = fileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FilesGetCall) Fields(s ...googleapi.Field) *FilesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *FilesGetCall) IfNoneMatch(entityTag string) *FilesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do and Download
+// methods. Any pending HTTP request will be aborted if the provided
+// context is canceled.
+func (c *FilesGetCall) Context(ctx context.Context) *FilesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FilesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "reports/{reportId}/files/{fileId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"reportId": strconv.FormatInt(c.reportId, 10),
+		"fileId":   strconv.FormatInt(c.fileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Download fetches the API endpoint's "media" value, instead of the normal
+// API response value. If the returned error is nil, the Response is guaranteed to
+// have a 2xx status code. Callers must close the Response.Body as usual.
+func (c *FilesGetCall) Download(opts ...googleapi.CallOption) (*http.Response, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("media")
+	if err != nil {
+		return nil, err
+	}
+	if err := googleapi.CheckMediaResponse(res); err != nil {
+		res.Body.Close()
+		return nil, err
+	}
+	return res, nil
+}
+
+// Do executes the "dfareporting.files.get" call.
+// Exactly one of *File or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *File.ServerResponse.Header or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *FilesGetCall) Do(opts ...googleapi.CallOption) (*File, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &File{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a report file by its report ID and file ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.files.get",
+	//   "parameterOrder": [
+	//     "reportId",
+	//     "fileId"
+	//   ],
+	//   "parameters": {
+	//     "fileId": {
+	//       "description": "The ID of the report file.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "reportId": {
+	//       "description": "The ID of the report.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "reports/{reportId}/files/{fileId}",
+	//   "response": {
+	//     "$ref": "File"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting"
+	//   ],
+	//   "supportsMediaDownload": true
+	// }
+
+}
+
+// method id "dfareporting.files.list":
+
+type FilesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Lists files for a user profile.
+func (r *FilesService) List(profileId int64) *FilesListCall {
+	c := &FilesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *FilesListCall) MaxResults(maxResults int64) *FilesListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The value of the
+// nextToken from the previous result page.
+func (c *FilesListCall) PageToken(pageToken string) *FilesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Scope sets the optional parameter "scope": The scope that defines
+// which results are returned, default is 'MINE'.
+//
+// Possible values:
+//   "ALL" - All files in account.
+//   "MINE" (default) - My files.
+//   "SHARED_WITH_ME" - Files shared with me.
+func (c *FilesListCall) Scope(scope string) *FilesListCall {
+	c.urlParams_.Set("scope", scope)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": The field by which
+// to sort the list.
+//
+// Possible values:
+//   "ID" - Sort by file ID.
+//   "LAST_MODIFIED_TIME" (default) - Sort by 'lastmodifiedAt' field.
+func (c *FilesListCall) SortField(sortField string) *FilesListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is 'DESCENDING'.
+//
+// Possible values:
+//   "ASCENDING" - Ascending order.
+//   "DESCENDING" (default) - Descending order.
+func (c *FilesListCall) SortOrder(sortOrder string) *FilesListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FilesListCall) Fields(s ...googleapi.Field) *FilesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *FilesListCall) IfNoneMatch(entityTag string) *FilesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FilesListCall) Context(ctx context.Context) *FilesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FilesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/files")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.files.list" call.
+// Exactly one of *FileList or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *FileList.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *FilesListCall) Do(opts ...googleapi.CallOption) (*FileList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FileList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists files for a user profile.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.files.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "maximum": "10",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The value of the nextToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "The DFA profile ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "scope": {
+	//       "default": "MINE",
+	//       "description": "The scope that defines which results are returned, default is 'MINE'.",
+	//       "enum": [
+	//         "ALL",
+	//         "MINE",
+	//         "SHARED_WITH_ME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "All files in account.",
+	//         "My files.",
+	//         "Files shared with me."
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "default": "LAST_MODIFIED_TIME",
+	//       "description": "The field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "LAST_MODIFIED_TIME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "Sort by file ID.",
+	//         "Sort by 'lastmodifiedAt' field."
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "default": "DESCENDING",
+	//       "description": "Order of sorted results, default is 'DESCENDING'.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "Ascending order.",
+	//         "Descending order."
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/files",
+	//   "response": {
+	//     "$ref": "FileList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *FilesListCall) Pages(ctx context.Context, f func(*FileList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.floodlightActivities.delete":
+
+type FloodlightActivitiesDeleteCall struct {
+	s          *Service
+	profileId  int64
+	id         int64
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes an existing floodlight activity.
+func (r *FloodlightActivitiesService) Delete(profileId int64, id int64) *FloodlightActivitiesDeleteCall {
+	c := &FloodlightActivitiesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightActivitiesDeleteCall) Fields(s ...googleapi.Field) *FloodlightActivitiesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightActivitiesDeleteCall) Context(ctx context.Context) *FloodlightActivitiesDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightActivitiesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightActivities/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightActivities.delete" call.
+func (c *FloodlightActivitiesDeleteCall) Do(opts ...googleapi.CallOption) error {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if err != nil {
+		return err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return err
+	}
+	return nil
+	// {
+	//   "description": "Deletes an existing floodlight activity.",
+	//   "httpMethod": "DELETE",
+	//   "id": "dfareporting.floodlightActivities.delete",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Floodlight activity ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightActivities/{id}",
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.floodlightActivities.generatetag":
+
+type FloodlightActivitiesGeneratetagCall struct {
+	s          *Service
+	profileId  int64
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Generatetag: Generates a tag for a floodlight activity.
+func (r *FloodlightActivitiesService) Generatetag(profileId int64) *FloodlightActivitiesGeneratetagCall {
+	c := &FloodlightActivitiesGeneratetagCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// FloodlightActivityId sets the optional parameter
+// "floodlightActivityId": Floodlight activity ID for which we want to
+// generate a tag.
+func (c *FloodlightActivitiesGeneratetagCall) FloodlightActivityId(floodlightActivityId int64) *FloodlightActivitiesGeneratetagCall {
+	c.urlParams_.Set("floodlightActivityId", fmt.Sprint(floodlightActivityId))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightActivitiesGeneratetagCall) Fields(s ...googleapi.Field) *FloodlightActivitiesGeneratetagCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightActivitiesGeneratetagCall) Context(ctx context.Context) *FloodlightActivitiesGeneratetagCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightActivitiesGeneratetagCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightActivities/generatetag")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightActivities.generatetag" call.
+// Exactly one of *FloodlightActivitiesGenerateTagResponse or error will
+// be non-nil. Any non-2xx status code is an error. Response headers are
+// in either
+// *FloodlightActivitiesGenerateTagResponse.ServerResponse.Header or (if
+// a response was returned at all) in error.(*googleapi.Error).Header.
+// Use googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *FloodlightActivitiesGeneratetagCall) Do(opts ...googleapi.CallOption) (*FloodlightActivitiesGenerateTagResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightActivitiesGenerateTagResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Generates a tag for a floodlight activity.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.floodlightActivities.generatetag",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "floodlightActivityId": {
+	//       "description": "Floodlight activity ID for which we want to generate a tag.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightActivities/generatetag",
+	//   "response": {
+	//     "$ref": "FloodlightActivitiesGenerateTagResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.floodlightActivities.get":
+
+type FloodlightActivitiesGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one floodlight activity by ID.
+func (r *FloodlightActivitiesService) Get(profileId int64, id int64) *FloodlightActivitiesGetCall {
+	c := &FloodlightActivitiesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightActivitiesGetCall) Fields(s ...googleapi.Field) *FloodlightActivitiesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *FloodlightActivitiesGetCall) IfNoneMatch(entityTag string) *FloodlightActivitiesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightActivitiesGetCall) Context(ctx context.Context) *FloodlightActivitiesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightActivitiesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightActivities/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightActivities.get" call.
+// Exactly one of *FloodlightActivity or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *FloodlightActivity.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *FloodlightActivitiesGetCall) Do(opts ...googleapi.CallOption) (*FloodlightActivity, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightActivity{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one floodlight activity by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.floodlightActivities.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Floodlight activity ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightActivities/{id}",
+	//   "response": {
+	//     "$ref": "FloodlightActivity"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.floodlightActivities.insert":
+
+type FloodlightActivitiesInsertCall struct {
+	s                  *Service
+	profileId          int64
+	floodlightactivity *FloodlightActivity
+	urlParams_         gensupport.URLParams
+	ctx_               context.Context
+}
+
+// Insert: Inserts a new floodlight activity.
+func (r *FloodlightActivitiesService) Insert(profileId int64, floodlightactivity *FloodlightActivity) *FloodlightActivitiesInsertCall {
+	c := &FloodlightActivitiesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.floodlightactivity = floodlightactivity
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightActivitiesInsertCall) Fields(s ...googleapi.Field) *FloodlightActivitiesInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightActivitiesInsertCall) Context(ctx context.Context) *FloodlightActivitiesInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightActivitiesInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.floodlightactivity)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightActivities")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightActivities.insert" call.
+// Exactly one of *FloodlightActivity or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *FloodlightActivity.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *FloodlightActivitiesInsertCall) Do(opts ...googleapi.CallOption) (*FloodlightActivity, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightActivity{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new floodlight activity.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.floodlightActivities.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightActivities",
+	//   "request": {
+	//     "$ref": "FloodlightActivity"
+	//   },
+	//   "response": {
+	//     "$ref": "FloodlightActivity"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.floodlightActivities.list":
+
+type FloodlightActivitiesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of floodlight activities, possibly filtered.
+func (r *FloodlightActivitiesService) List(profileId int64) *FloodlightActivitiesListCall {
+	c := &FloodlightActivitiesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// AdvertiserId sets the optional parameter "advertiserId": Select only
+// floodlight activities for the specified advertiser ID. Must specify
+// either ids, advertiserId, or floodlightConfigurationId for a
+// non-empty result.
+func (c *FloodlightActivitiesListCall) AdvertiserId(advertiserId int64) *FloodlightActivitiesListCall {
+	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
+	return c
+}
+
+// FloodlightActivityGroupIds sets the optional parameter
+// "floodlightActivityGroupIds": Select only floodlight activities with
+// the specified floodlight activity group IDs.
+func (c *FloodlightActivitiesListCall) FloodlightActivityGroupIds(floodlightActivityGroupIds ...int64) *FloodlightActivitiesListCall {
+	var floodlightActivityGroupIds_ []string
+	for _, v := range floodlightActivityGroupIds {
+		floodlightActivityGroupIds_ = append(floodlightActivityGroupIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("floodlightActivityGroupIds", floodlightActivityGroupIds_)
+	return c
+}
+
+// FloodlightActivityGroupName sets the optional parameter
+// "floodlightActivityGroupName": Select only floodlight activities with
+// the specified floodlight activity group name.
+func (c *FloodlightActivitiesListCall) FloodlightActivityGroupName(floodlightActivityGroupName string) *FloodlightActivitiesListCall {
+	c.urlParams_.Set("floodlightActivityGroupName", floodlightActivityGroupName)
+	return c
+}
+
+// FloodlightActivityGroupTagString sets the optional parameter
+// "floodlightActivityGroupTagString": Select only floodlight activities
+// with the specified floodlight activity group tag string.
+func (c *FloodlightActivitiesListCall) FloodlightActivityGroupTagString(floodlightActivityGroupTagString string) *FloodlightActivitiesListCall {
+	c.urlParams_.Set("floodlightActivityGroupTagString", floodlightActivityGroupTagString)
+	return c
+}
+
+// FloodlightActivityGroupType sets the optional parameter
+// "floodlightActivityGroupType": Select only floodlight activities with
+// the specified floodlight activity group type.
+//
+// Possible values:
+//   "COUNTER"
+//   "SALE"
+func (c *FloodlightActivitiesListCall) FloodlightActivityGroupType(floodlightActivityGroupType string) *FloodlightActivitiesListCall {
+	c.urlParams_.Set("floodlightActivityGroupType", floodlightActivityGroupType)
+	return c
+}
+
+// FloodlightConfigurationId sets the optional parameter
+// "floodlightConfigurationId": Select only floodlight activities for
+// the specified floodlight configuration ID. Must specify either ids,
+// advertiserId, or floodlightConfigurationId for a non-empty result.
+func (c *FloodlightActivitiesListCall) FloodlightConfigurationId(floodlightConfigurationId int64) *FloodlightActivitiesListCall {
+	c.urlParams_.Set("floodlightConfigurationId", fmt.Sprint(floodlightConfigurationId))
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only floodlight
+// activities with the specified IDs. Must specify either ids,
+// advertiserId, or floodlightConfigurationId for a non-empty result.
+func (c *FloodlightActivitiesListCall) Ids(ids ...int64) *FloodlightActivitiesListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *FloodlightActivitiesListCall) MaxResults(maxResults int64) *FloodlightActivitiesListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *FloodlightActivitiesListCall) PageToken(pageToken string) *FloodlightActivitiesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name or ID. Wildcards (*) are allowed. For
+// example, "floodlightactivity*2015" will return objects with names
+// like "floodlightactivity June 2015", "floodlightactivity April 2015",
+// or simply "floodlightactivity 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 "floodlightactivity" will match
+// objects with name "my floodlightactivity activity",
+// "floodlightactivity 2015", or simply "floodlightactivity".
+func (c *FloodlightActivitiesListCall) SearchString(searchString string) *FloodlightActivitiesListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *FloodlightActivitiesListCall) SortField(sortField string) *FloodlightActivitiesListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *FloodlightActivitiesListCall) SortOrder(sortOrder string) *FloodlightActivitiesListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// TagString sets the optional parameter "tagString": Select only
+// floodlight activities with the specified tag string.
+func (c *FloodlightActivitiesListCall) TagString(tagString string) *FloodlightActivitiesListCall {
+	c.urlParams_.Set("tagString", tagString)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightActivitiesListCall) Fields(s ...googleapi.Field) *FloodlightActivitiesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *FloodlightActivitiesListCall) IfNoneMatch(entityTag string) *FloodlightActivitiesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightActivitiesListCall) Context(ctx context.Context) *FloodlightActivitiesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightActivitiesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightActivities")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightActivities.list" call.
+// Exactly one of *FloodlightActivitiesListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *FloodlightActivitiesListResponse.ServerResponse.Header or (if
+// a response was returned at all) in error.(*googleapi.Error).Header.
+// Use googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *FloodlightActivitiesListCall) Do(opts ...googleapi.CallOption) (*FloodlightActivitiesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightActivitiesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of floodlight activities, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.floodlightActivities.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "advertiserId": {
+	//       "description": "Select only floodlight activities for the specified advertiser ID. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "floodlightActivityGroupIds": {
+	//       "description": "Select only floodlight activities with the specified floodlight activity group IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "floodlightActivityGroupName": {
+	//       "description": "Select only floodlight activities with the specified floodlight activity group name.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "floodlightActivityGroupTagString": {
+	//       "description": "Select only floodlight activities with the specified floodlight activity group tag string.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "floodlightActivityGroupType": {
+	//       "description": "Select only floodlight activities with the specified floodlight activity group type.",
+	//       "enum": [
+	//         "COUNTER",
+	//         "SALE"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "floodlightConfigurationId": {
+	//       "description": "Select only floodlight activities for the specified floodlight configuration ID. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only floodlight activities with the specified IDs. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"floodlightactivity*2015\" will return objects with names like \"floodlightactivity June 2015\", \"floodlightactivity April 2015\", or simply \"floodlightactivity 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 \"floodlightactivity\" will match objects with name \"my floodlightactivity activity\", \"floodlightactivity 2015\", or simply \"floodlightactivity\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "tagString": {
+	//       "description": "Select only floodlight activities with the specified tag string.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightActivities",
+	//   "response": {
+	//     "$ref": "FloodlightActivitiesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *FloodlightActivitiesListCall) Pages(ctx context.Context, f func(*FloodlightActivitiesListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.floodlightActivities.patch":
+
+type FloodlightActivitiesPatchCall struct {
+	s                  *Service
+	profileId          int64
+	floodlightactivity *FloodlightActivity
+	urlParams_         gensupport.URLParams
+	ctx_               context.Context
+}
+
+// Patch: Updates an existing floodlight activity. This method supports
+// patch semantics.
+func (r *FloodlightActivitiesService) Patch(profileId int64, id int64, floodlightactivity *FloodlightActivity) *FloodlightActivitiesPatchCall {
+	c := &FloodlightActivitiesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.floodlightactivity = floodlightactivity
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightActivitiesPatchCall) Fields(s ...googleapi.Field) *FloodlightActivitiesPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightActivitiesPatchCall) Context(ctx context.Context) *FloodlightActivitiesPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightActivitiesPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.floodlightactivity)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightActivities")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightActivities.patch" call.
+// Exactly one of *FloodlightActivity or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *FloodlightActivity.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *FloodlightActivitiesPatchCall) Do(opts ...googleapi.CallOption) (*FloodlightActivity, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightActivity{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing floodlight activity. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.floodlightActivities.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Floodlight activity ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightActivities",
+	//   "request": {
+	//     "$ref": "FloodlightActivity"
+	//   },
+	//   "response": {
+	//     "$ref": "FloodlightActivity"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.floodlightActivities.update":
+
+type FloodlightActivitiesUpdateCall struct {
+	s                  *Service
+	profileId          int64
+	floodlightactivity *FloodlightActivity
+	urlParams_         gensupport.URLParams
+	ctx_               context.Context
+}
+
+// Update: Updates an existing floodlight activity.
+func (r *FloodlightActivitiesService) Update(profileId int64, floodlightactivity *FloodlightActivity) *FloodlightActivitiesUpdateCall {
+	c := &FloodlightActivitiesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.floodlightactivity = floodlightactivity
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightActivitiesUpdateCall) Fields(s ...googleapi.Field) *FloodlightActivitiesUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightActivitiesUpdateCall) Context(ctx context.Context) *FloodlightActivitiesUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightActivitiesUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.floodlightactivity)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightActivities")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightActivities.update" call.
+// Exactly one of *FloodlightActivity or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *FloodlightActivity.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *FloodlightActivitiesUpdateCall) Do(opts ...googleapi.CallOption) (*FloodlightActivity, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightActivity{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing floodlight activity.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.floodlightActivities.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightActivities",
+	//   "request": {
+	//     "$ref": "FloodlightActivity"
+	//   },
+	//   "response": {
+	//     "$ref": "FloodlightActivity"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.floodlightActivityGroups.get":
+
+type FloodlightActivityGroupsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one floodlight activity group by ID.
+func (r *FloodlightActivityGroupsService) Get(profileId int64, id int64) *FloodlightActivityGroupsGetCall {
+	c := &FloodlightActivityGroupsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightActivityGroupsGetCall) Fields(s ...googleapi.Field) *FloodlightActivityGroupsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *FloodlightActivityGroupsGetCall) IfNoneMatch(entityTag string) *FloodlightActivityGroupsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightActivityGroupsGetCall) Context(ctx context.Context) *FloodlightActivityGroupsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightActivityGroupsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightActivityGroups/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightActivityGroups.get" call.
+// Exactly one of *FloodlightActivityGroup or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *FloodlightActivityGroup.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *FloodlightActivityGroupsGetCall) Do(opts ...googleapi.CallOption) (*FloodlightActivityGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightActivityGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one floodlight activity group by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.floodlightActivityGroups.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Floodlight activity Group ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightActivityGroups/{id}",
+	//   "response": {
+	//     "$ref": "FloodlightActivityGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.floodlightActivityGroups.insert":
+
+type FloodlightActivityGroupsInsertCall struct {
+	s                       *Service
+	profileId               int64
+	floodlightactivitygroup *FloodlightActivityGroup
+	urlParams_              gensupport.URLParams
+	ctx_                    context.Context
+}
+
+// Insert: Inserts a new floodlight activity group.
+func (r *FloodlightActivityGroupsService) Insert(profileId int64, floodlightactivitygroup *FloodlightActivityGroup) *FloodlightActivityGroupsInsertCall {
+	c := &FloodlightActivityGroupsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.floodlightactivitygroup = floodlightactivitygroup
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightActivityGroupsInsertCall) Fields(s ...googleapi.Field) *FloodlightActivityGroupsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightActivityGroupsInsertCall) Context(ctx context.Context) *FloodlightActivityGroupsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightActivityGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.floodlightactivitygroup)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightActivityGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightActivityGroups.insert" call.
+// Exactly one of *FloodlightActivityGroup or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *FloodlightActivityGroup.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *FloodlightActivityGroupsInsertCall) Do(opts ...googleapi.CallOption) (*FloodlightActivityGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightActivityGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new floodlight activity group.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.floodlightActivityGroups.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightActivityGroups",
+	//   "request": {
+	//     "$ref": "FloodlightActivityGroup"
+	//   },
+	//   "response": {
+	//     "$ref": "FloodlightActivityGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.floodlightActivityGroups.list":
+
+type FloodlightActivityGroupsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of floodlight activity groups, possibly
+// filtered.
+func (r *FloodlightActivityGroupsService) List(profileId int64) *FloodlightActivityGroupsListCall {
+	c := &FloodlightActivityGroupsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// AdvertiserId sets the optional parameter "advertiserId": Select only
+// floodlight activity groups with the specified advertiser ID. Must
+// specify either advertiserId or floodlightConfigurationId for a
+// non-empty result.
+func (c *FloodlightActivityGroupsListCall) AdvertiserId(advertiserId int64) *FloodlightActivityGroupsListCall {
+	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
+	return c
+}
+
+// FloodlightConfigurationId sets the optional parameter
+// "floodlightConfigurationId": Select only floodlight activity groups
+// with the specified floodlight configuration ID. Must specify either
+// advertiserId, or floodlightConfigurationId for a non-empty result.
+func (c *FloodlightActivityGroupsListCall) FloodlightConfigurationId(floodlightConfigurationId int64) *FloodlightActivityGroupsListCall {
+	c.urlParams_.Set("floodlightConfigurationId", fmt.Sprint(floodlightConfigurationId))
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only floodlight
+// activity groups with the specified IDs. Must specify either
+// advertiserId or floodlightConfigurationId for a non-empty result.
+func (c *FloodlightActivityGroupsListCall) Ids(ids ...int64) *FloodlightActivityGroupsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *FloodlightActivityGroupsListCall) MaxResults(maxResults int64) *FloodlightActivityGroupsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *FloodlightActivityGroupsListCall) PageToken(pageToken string) *FloodlightActivityGroupsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name or ID. Wildcards (*) are allowed. For
+// example, "floodlightactivitygroup*2015" will return objects with
+// names like "floodlightactivitygroup June 2015",
+// "floodlightactivitygroup April 2015", or simply
+// "floodlightactivitygroup 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 "floodlightactivitygroup" will match
+// objects with name "my floodlightactivitygroup activity",
+// "floodlightactivitygroup 2015", or simply "floodlightactivitygroup".
+func (c *FloodlightActivityGroupsListCall) SearchString(searchString string) *FloodlightActivityGroupsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *FloodlightActivityGroupsListCall) SortField(sortField string) *FloodlightActivityGroupsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *FloodlightActivityGroupsListCall) SortOrder(sortOrder string) *FloodlightActivityGroupsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Type sets the optional parameter "type": Select only floodlight
+// activity groups with the specified floodlight activity group type.
+//
+// Possible values:
+//   "COUNTER"
+//   "SALE"
+func (c *FloodlightActivityGroupsListCall) Type(type_ string) *FloodlightActivityGroupsListCall {
+	c.urlParams_.Set("type", type_)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightActivityGroupsListCall) Fields(s ...googleapi.Field) *FloodlightActivityGroupsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *FloodlightActivityGroupsListCall) IfNoneMatch(entityTag string) *FloodlightActivityGroupsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightActivityGroupsListCall) Context(ctx context.Context) *FloodlightActivityGroupsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightActivityGroupsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightActivityGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightActivityGroups.list" call.
+// Exactly one of *FloodlightActivityGroupsListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *FloodlightActivityGroupsListResponse.ServerResponse.Header or
+// (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *FloodlightActivityGroupsListCall) Do(opts ...googleapi.CallOption) (*FloodlightActivityGroupsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightActivityGroupsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of floodlight activity groups, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.floodlightActivityGroups.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "advertiserId": {
+	//       "description": "Select only floodlight activity groups with the specified advertiser ID. Must specify either advertiserId or floodlightConfigurationId for a non-empty result.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "floodlightConfigurationId": {
+	//       "description": "Select only floodlight activity groups with the specified floodlight configuration ID. Must specify either advertiserId, or floodlightConfigurationId for a non-empty result.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only floodlight activity groups with the specified IDs. Must specify either advertiserId or floodlightConfigurationId for a non-empty result.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"floodlightactivitygroup*2015\" will return objects with names like \"floodlightactivitygroup June 2015\", \"floodlightactivitygroup April 2015\", or simply \"floodlightactivitygroup 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 \"floodlightactivitygroup\" will match objects with name \"my floodlightactivitygroup activity\", \"floodlightactivitygroup 2015\", or simply \"floodlightactivitygroup\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "type": {
+	//       "description": "Select only floodlight activity groups with the specified floodlight activity group type.",
+	//       "enum": [
+	//         "COUNTER",
+	//         "SALE"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightActivityGroups",
+	//   "response": {
+	//     "$ref": "FloodlightActivityGroupsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *FloodlightActivityGroupsListCall) Pages(ctx context.Context, f func(*FloodlightActivityGroupsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.floodlightActivityGroups.patch":
+
+type FloodlightActivityGroupsPatchCall struct {
+	s                       *Service
+	profileId               int64
+	floodlightactivitygroup *FloodlightActivityGroup
+	urlParams_              gensupport.URLParams
+	ctx_                    context.Context
+}
+
+// Patch: Updates an existing floodlight activity group. This method
+// supports patch semantics.
+func (r *FloodlightActivityGroupsService) Patch(profileId int64, id int64, floodlightactivitygroup *FloodlightActivityGroup) *FloodlightActivityGroupsPatchCall {
+	c := &FloodlightActivityGroupsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.floodlightactivitygroup = floodlightactivitygroup
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightActivityGroupsPatchCall) Fields(s ...googleapi.Field) *FloodlightActivityGroupsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightActivityGroupsPatchCall) Context(ctx context.Context) *FloodlightActivityGroupsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightActivityGroupsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.floodlightactivitygroup)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightActivityGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightActivityGroups.patch" call.
+// Exactly one of *FloodlightActivityGroup or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *FloodlightActivityGroup.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *FloodlightActivityGroupsPatchCall) Do(opts ...googleapi.CallOption) (*FloodlightActivityGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightActivityGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing floodlight activity group. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.floodlightActivityGroups.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Floodlight activity Group ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightActivityGroups",
+	//   "request": {
+	//     "$ref": "FloodlightActivityGroup"
+	//   },
+	//   "response": {
+	//     "$ref": "FloodlightActivityGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.floodlightActivityGroups.update":
+
+type FloodlightActivityGroupsUpdateCall struct {
+	s                       *Service
+	profileId               int64
+	floodlightactivitygroup *FloodlightActivityGroup
+	urlParams_              gensupport.URLParams
+	ctx_                    context.Context
+}
+
+// Update: Updates an existing floodlight activity group.
+func (r *FloodlightActivityGroupsService) Update(profileId int64, floodlightactivitygroup *FloodlightActivityGroup) *FloodlightActivityGroupsUpdateCall {
+	c := &FloodlightActivityGroupsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.floodlightactivitygroup = floodlightactivitygroup
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightActivityGroupsUpdateCall) Fields(s ...googleapi.Field) *FloodlightActivityGroupsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightActivityGroupsUpdateCall) Context(ctx context.Context) *FloodlightActivityGroupsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightActivityGroupsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.floodlightactivitygroup)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightActivityGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightActivityGroups.update" call.
+// Exactly one of *FloodlightActivityGroup or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *FloodlightActivityGroup.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *FloodlightActivityGroupsUpdateCall) Do(opts ...googleapi.CallOption) (*FloodlightActivityGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightActivityGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing floodlight activity group.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.floodlightActivityGroups.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightActivityGroups",
+	//   "request": {
+	//     "$ref": "FloodlightActivityGroup"
+	//   },
+	//   "response": {
+	//     "$ref": "FloodlightActivityGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.floodlightConfigurations.get":
+
+type FloodlightConfigurationsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one floodlight configuration by ID.
+func (r *FloodlightConfigurationsService) Get(profileId int64, id int64) *FloodlightConfigurationsGetCall {
+	c := &FloodlightConfigurationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightConfigurationsGetCall) Fields(s ...googleapi.Field) *FloodlightConfigurationsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *FloodlightConfigurationsGetCall) IfNoneMatch(entityTag string) *FloodlightConfigurationsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightConfigurationsGetCall) Context(ctx context.Context) *FloodlightConfigurationsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightConfigurationsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightConfigurations/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightConfigurations.get" call.
+// Exactly one of *FloodlightConfiguration or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *FloodlightConfiguration.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *FloodlightConfigurationsGetCall) Do(opts ...googleapi.CallOption) (*FloodlightConfiguration, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightConfiguration{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one floodlight configuration by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.floodlightConfigurations.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Floodlight configuration ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightConfigurations/{id}",
+	//   "response": {
+	//     "$ref": "FloodlightConfiguration"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.floodlightConfigurations.list":
+
+type FloodlightConfigurationsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of floodlight configurations, possibly
+// filtered.
+func (r *FloodlightConfigurationsService) List(profileId int64) *FloodlightConfigurationsListCall {
+	c := &FloodlightConfigurationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Ids sets the optional parameter "ids": Set of IDs of floodlight
+// configurations to retrieve. Required field; otherwise an empty list
+// will be returned.
+func (c *FloodlightConfigurationsListCall) Ids(ids ...int64) *FloodlightConfigurationsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightConfigurationsListCall) Fields(s ...googleapi.Field) *FloodlightConfigurationsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *FloodlightConfigurationsListCall) IfNoneMatch(entityTag string) *FloodlightConfigurationsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightConfigurationsListCall) Context(ctx context.Context) *FloodlightConfigurationsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightConfigurationsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightConfigurations")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightConfigurations.list" call.
+// Exactly one of *FloodlightConfigurationsListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *FloodlightConfigurationsListResponse.ServerResponse.Header or
+// (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *FloodlightConfigurationsListCall) Do(opts ...googleapi.CallOption) (*FloodlightConfigurationsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightConfigurationsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of floodlight configurations, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.floodlightConfigurations.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "ids": {
+	//       "description": "Set of IDs of floodlight configurations to retrieve. Required field; otherwise an empty list will be returned.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightConfigurations",
+	//   "response": {
+	//     "$ref": "FloodlightConfigurationsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.floodlightConfigurations.patch":
+
+type FloodlightConfigurationsPatchCall struct {
+	s                       *Service
+	profileId               int64
+	floodlightconfiguration *FloodlightConfiguration
+	urlParams_              gensupport.URLParams
+	ctx_                    context.Context
+}
+
+// Patch: Updates an existing floodlight configuration. This method
+// supports patch semantics.
+func (r *FloodlightConfigurationsService) Patch(profileId int64, id int64, floodlightconfiguration *FloodlightConfiguration) *FloodlightConfigurationsPatchCall {
+	c := &FloodlightConfigurationsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.floodlightconfiguration = floodlightconfiguration
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightConfigurationsPatchCall) Fields(s ...googleapi.Field) *FloodlightConfigurationsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightConfigurationsPatchCall) Context(ctx context.Context) *FloodlightConfigurationsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightConfigurationsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.floodlightconfiguration)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightConfigurations")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightConfigurations.patch" call.
+// Exactly one of *FloodlightConfiguration or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *FloodlightConfiguration.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *FloodlightConfigurationsPatchCall) Do(opts ...googleapi.CallOption) (*FloodlightConfiguration, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightConfiguration{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing floodlight configuration. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.floodlightConfigurations.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Floodlight configuration ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightConfigurations",
+	//   "request": {
+	//     "$ref": "FloodlightConfiguration"
+	//   },
+	//   "response": {
+	//     "$ref": "FloodlightConfiguration"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.floodlightConfigurations.update":
+
+type FloodlightConfigurationsUpdateCall struct {
+	s                       *Service
+	profileId               int64
+	floodlightconfiguration *FloodlightConfiguration
+	urlParams_              gensupport.URLParams
+	ctx_                    context.Context
+}
+
+// Update: Updates an existing floodlight configuration.
+func (r *FloodlightConfigurationsService) Update(profileId int64, floodlightconfiguration *FloodlightConfiguration) *FloodlightConfigurationsUpdateCall {
+	c := &FloodlightConfigurationsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.floodlightconfiguration = floodlightconfiguration
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *FloodlightConfigurationsUpdateCall) Fields(s ...googleapi.Field) *FloodlightConfigurationsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *FloodlightConfigurationsUpdateCall) Context(ctx context.Context) *FloodlightConfigurationsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *FloodlightConfigurationsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.floodlightconfiguration)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/floodlightConfigurations")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.floodlightConfigurations.update" call.
+// Exactly one of *FloodlightConfiguration or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *FloodlightConfiguration.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *FloodlightConfigurationsUpdateCall) Do(opts ...googleapi.CallOption) (*FloodlightConfiguration, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FloodlightConfiguration{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing floodlight configuration.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.floodlightConfigurations.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/floodlightConfigurations",
+	//   "request": {
+	//     "$ref": "FloodlightConfiguration"
+	//   },
+	//   "response": {
+	//     "$ref": "FloodlightConfiguration"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.inventoryItems.get":
+
+type InventoryItemsGetCall struct {
+	s            *Service
+	profileId    int64
+	projectId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one inventory item by ID.
+func (r *InventoryItemsService) Get(profileId int64, projectId int64, id int64) *InventoryItemsGetCall {
+	c := &InventoryItemsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.projectId = projectId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *InventoryItemsGetCall) Fields(s ...googleapi.Field) *InventoryItemsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *InventoryItemsGetCall) IfNoneMatch(entityTag string) *InventoryItemsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *InventoryItemsGetCall) Context(ctx context.Context) *InventoryItemsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *InventoryItemsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/projects/{projectId}/inventoryItems/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"projectId": strconv.FormatInt(c.projectId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.inventoryItems.get" call.
+// Exactly one of *InventoryItem or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *InventoryItem.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *InventoryItemsGetCall) Do(opts ...googleapi.CallOption) (*InventoryItem, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &InventoryItem{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one inventory item by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.inventoryItems.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "projectId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Inventory item ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "projectId": {
+	//       "description": "Project ID for order documents.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/projects/{projectId}/inventoryItems/{id}",
+	//   "response": {
+	//     "$ref": "InventoryItem"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.inventoryItems.list":
+
+type InventoryItemsListCall struct {
+	s            *Service
+	profileId    int64
+	projectId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of inventory items, possibly filtered.
+func (r *InventoryItemsService) List(profileId int64, projectId int64) *InventoryItemsListCall {
+	c := &InventoryItemsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.projectId = projectId
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only inventory items
+// with these IDs.
+func (c *InventoryItemsListCall) Ids(ids ...int64) *InventoryItemsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// InPlan sets the optional parameter "inPlan": Select only inventory
+// items that are in plan.
+func (c *InventoryItemsListCall) InPlan(inPlan bool) *InventoryItemsListCall {
+	c.urlParams_.Set("inPlan", fmt.Sprint(inPlan))
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *InventoryItemsListCall) MaxResults(maxResults int64) *InventoryItemsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OrderId sets the optional parameter "orderId": Select only inventory
+// items that belong to specified orders.
+func (c *InventoryItemsListCall) OrderId(orderId ...int64) *InventoryItemsListCall {
+	var orderId_ []string
+	for _, v := range orderId {
+		orderId_ = append(orderId_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("orderId", orderId_)
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *InventoryItemsListCall) PageToken(pageToken string) *InventoryItemsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SiteId sets the optional parameter "siteId": Select only inventory
+// items that are associated with these sites.
+func (c *InventoryItemsListCall) SiteId(siteId ...int64) *InventoryItemsListCall {
+	var siteId_ []string
+	for _, v := range siteId {
+		siteId_ = append(siteId_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("siteId", siteId_)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *InventoryItemsListCall) SortField(sortField string) *InventoryItemsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *InventoryItemsListCall) SortOrder(sortOrder string) *InventoryItemsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Type sets the optional parameter "type": Select only inventory items
+// with this type.
+//
+// Possible values:
+//   "PLANNING_PLACEMENT_TYPE_CREDIT"
+//   "PLANNING_PLACEMENT_TYPE_REGULAR"
+func (c *InventoryItemsListCall) Type(type_ string) *InventoryItemsListCall {
+	c.urlParams_.Set("type", type_)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *InventoryItemsListCall) Fields(s ...googleapi.Field) *InventoryItemsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *InventoryItemsListCall) IfNoneMatch(entityTag string) *InventoryItemsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *InventoryItemsListCall) Context(ctx context.Context) *InventoryItemsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *InventoryItemsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/projects/{projectId}/inventoryItems")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"projectId": strconv.FormatInt(c.projectId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.inventoryItems.list" call.
+// Exactly one of *InventoryItemsListResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *InventoryItemsListResponse.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *InventoryItemsListCall) Do(opts ...googleapi.CallOption) (*InventoryItemsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &InventoryItemsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of inventory items, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.inventoryItems.list",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "projectId"
+	//   ],
+	//   "parameters": {
+	//     "ids": {
+	//       "description": "Select only inventory items with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "inPlan": {
+	//       "description": "Select only inventory items that are in plan.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "orderId": {
+	//       "description": "Select only inventory items that belong to specified orders.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "projectId": {
+	//       "description": "Project ID for order documents.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "siteId": {
+	//       "description": "Select only inventory items that are associated with these sites.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "type": {
+	//       "description": "Select only inventory items with this type.",
+	//       "enum": [
+	//         "PLANNING_PLACEMENT_TYPE_CREDIT",
+	//         "PLANNING_PLACEMENT_TYPE_REGULAR"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/projects/{projectId}/inventoryItems",
+	//   "response": {
+	//     "$ref": "InventoryItemsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *InventoryItemsListCall) Pages(ctx context.Context, f func(*InventoryItemsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.landingPages.delete":
+
+type LandingPagesDeleteCall struct {
+	s          *Service
+	profileId  int64
+	campaignId int64
+	id         int64
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes an existing campaign landing page.
+func (r *LandingPagesService) Delete(profileId int64, campaignId int64, id int64) *LandingPagesDeleteCall {
+	c := &LandingPagesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.campaignId = campaignId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *LandingPagesDeleteCall) Fields(s ...googleapi.Field) *LandingPagesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *LandingPagesDeleteCall) Context(ctx context.Context) *LandingPagesDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *LandingPagesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/campaigns/{campaignId}/landingPages/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":  strconv.FormatInt(c.profileId, 10),
+		"campaignId": strconv.FormatInt(c.campaignId, 10),
+		"id":         strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.landingPages.delete" call.
+func (c *LandingPagesDeleteCall) Do(opts ...googleapi.CallOption) error {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if err != nil {
+		return err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return err
+	}
+	return nil
+	// {
+	//   "description": "Deletes an existing campaign landing page.",
+	//   "httpMethod": "DELETE",
+	//   "id": "dfareporting.landingPages.delete",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "campaignId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "campaignId": {
+	//       "description": "Landing page campaign ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "id": {
+	//       "description": "Landing page ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/campaigns/{campaignId}/landingPages/{id}",
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.landingPages.get":
+
+type LandingPagesGetCall struct {
+	s            *Service
+	profileId    int64
+	campaignId   int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one campaign landing page by ID.
+func (r *LandingPagesService) Get(profileId int64, campaignId int64, id int64) *LandingPagesGetCall {
+	c := &LandingPagesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.campaignId = campaignId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *LandingPagesGetCall) Fields(s ...googleapi.Field) *LandingPagesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *LandingPagesGetCall) IfNoneMatch(entityTag string) *LandingPagesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *LandingPagesGetCall) Context(ctx context.Context) *LandingPagesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *LandingPagesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/campaigns/{campaignId}/landingPages/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":  strconv.FormatInt(c.profileId, 10),
+		"campaignId": strconv.FormatInt(c.campaignId, 10),
+		"id":         strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.landingPages.get" call.
+// Exactly one of *LandingPage or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *LandingPage.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *LandingPagesGetCall) Do(opts ...googleapi.CallOption) (*LandingPage, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &LandingPage{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one campaign landing page by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.landingPages.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "campaignId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "campaignId": {
+	//       "description": "Landing page campaign ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "id": {
+	//       "description": "Landing page ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/campaigns/{campaignId}/landingPages/{id}",
+	//   "response": {
+	//     "$ref": "LandingPage"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.landingPages.insert":
+
+type LandingPagesInsertCall struct {
+	s           *Service
+	profileId   int64
+	campaignId  int64
+	landingpage *LandingPage
+	urlParams_  gensupport.URLParams
+	ctx_        context.Context
+}
+
+// Insert: Inserts a new landing page for the specified campaign.
+func (r *LandingPagesService) Insert(profileId int64, campaignId int64, landingpage *LandingPage) *LandingPagesInsertCall {
+	c := &LandingPagesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.campaignId = campaignId
+	c.landingpage = landingpage
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *LandingPagesInsertCall) Fields(s ...googleapi.Field) *LandingPagesInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *LandingPagesInsertCall) Context(ctx context.Context) *LandingPagesInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *LandingPagesInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.landingpage)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/campaigns/{campaignId}/landingPages")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":  strconv.FormatInt(c.profileId, 10),
+		"campaignId": strconv.FormatInt(c.campaignId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.landingPages.insert" call.
+// Exactly one of *LandingPage or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *LandingPage.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *LandingPagesInsertCall) Do(opts ...googleapi.CallOption) (*LandingPage, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &LandingPage{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new landing page for the specified campaign.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.landingPages.insert",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "campaignId"
+	//   ],
+	//   "parameters": {
+	//     "campaignId": {
+	//       "description": "Landing page campaign ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/campaigns/{campaignId}/landingPages",
+	//   "request": {
+	//     "$ref": "LandingPage"
+	//   },
+	//   "response": {
+	//     "$ref": "LandingPage"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.landingPages.list":
+
+type LandingPagesListCall struct {
+	s            *Service
+	profileId    int64
+	campaignId   int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves the list of landing pages for the specified campaign.
+func (r *LandingPagesService) List(profileId int64, campaignId int64) *LandingPagesListCall {
+	c := &LandingPagesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.campaignId = campaignId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *LandingPagesListCall) Fields(s ...googleapi.Field) *LandingPagesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *LandingPagesListCall) IfNoneMatch(entityTag string) *LandingPagesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *LandingPagesListCall) Context(ctx context.Context) *LandingPagesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *LandingPagesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/campaigns/{campaignId}/landingPages")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":  strconv.FormatInt(c.profileId, 10),
+		"campaignId": strconv.FormatInt(c.campaignId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.landingPages.list" call.
+// Exactly one of *LandingPagesListResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *LandingPagesListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *LandingPagesListCall) Do(opts ...googleapi.CallOption) (*LandingPagesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &LandingPagesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of landing pages for the specified campaign.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.landingPages.list",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "campaignId"
+	//   ],
+	//   "parameters": {
+	//     "campaignId": {
+	//       "description": "Landing page campaign ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/campaigns/{campaignId}/landingPages",
+	//   "response": {
+	//     "$ref": "LandingPagesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.landingPages.patch":
+
+type LandingPagesPatchCall struct {
+	s           *Service
+	profileId   int64
+	campaignId  int64
+	landingpage *LandingPage
+	urlParams_  gensupport.URLParams
+	ctx_        context.Context
+}
+
+// Patch: Updates an existing campaign landing page. This method
+// supports patch semantics.
+func (r *LandingPagesService) Patch(profileId int64, campaignId int64, id int64, landingpage *LandingPage) *LandingPagesPatchCall {
+	c := &LandingPagesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.campaignId = campaignId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.landingpage = landingpage
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *LandingPagesPatchCall) Fields(s ...googleapi.Field) *LandingPagesPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *LandingPagesPatchCall) Context(ctx context.Context) *LandingPagesPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *LandingPagesPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.landingpage)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/campaigns/{campaignId}/landingPages")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":  strconv.FormatInt(c.profileId, 10),
+		"campaignId": strconv.FormatInt(c.campaignId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.landingPages.patch" call.
+// Exactly one of *LandingPage or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *LandingPage.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *LandingPagesPatchCall) Do(opts ...googleapi.CallOption) (*LandingPage, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &LandingPage{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing campaign landing page. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.landingPages.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "campaignId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "campaignId": {
+	//       "description": "Landing page campaign ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "id": {
+	//       "description": "Landing page ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/campaigns/{campaignId}/landingPages",
+	//   "request": {
+	//     "$ref": "LandingPage"
+	//   },
+	//   "response": {
+	//     "$ref": "LandingPage"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.landingPages.update":
+
+type LandingPagesUpdateCall struct {
+	s           *Service
+	profileId   int64
+	campaignId  int64
+	landingpage *LandingPage
+	urlParams_  gensupport.URLParams
+	ctx_        context.Context
+}
+
+// Update: Updates an existing campaign landing page.
+func (r *LandingPagesService) Update(profileId int64, campaignId int64, landingpage *LandingPage) *LandingPagesUpdateCall {
+	c := &LandingPagesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.campaignId = campaignId
+	c.landingpage = landingpage
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *LandingPagesUpdateCall) Fields(s ...googleapi.Field) *LandingPagesUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *LandingPagesUpdateCall) Context(ctx context.Context) *LandingPagesUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *LandingPagesUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.landingpage)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/campaigns/{campaignId}/landingPages")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":  strconv.FormatInt(c.profileId, 10),
+		"campaignId": strconv.FormatInt(c.campaignId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.landingPages.update" call.
+// Exactly one of *LandingPage or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *LandingPage.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *LandingPagesUpdateCall) Do(opts ...googleapi.CallOption) (*LandingPage, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &LandingPage{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing campaign landing page.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.landingPages.update",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "campaignId"
+	//   ],
+	//   "parameters": {
+	//     "campaignId": {
+	//       "description": "Landing page campaign ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/campaigns/{campaignId}/landingPages",
+	//   "request": {
+	//     "$ref": "LandingPage"
+	//   },
+	//   "response": {
+	//     "$ref": "LandingPage"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.metros.list":
+
+type MetrosListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of metros.
+func (r *MetrosService) List(profileId int64) *MetrosListCall {
+	c := &MetrosListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *MetrosListCall) Fields(s ...googleapi.Field) *MetrosListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *MetrosListCall) IfNoneMatch(entityTag string) *MetrosListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *MetrosListCall) Context(ctx context.Context) *MetrosListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *MetrosListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/metros")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.metros.list" call.
+// Exactly one of *MetrosListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *MetrosListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *MetrosListCall) Do(opts ...googleapi.CallOption) (*MetrosListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &MetrosListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of metros.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.metros.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/metros",
+	//   "response": {
+	//     "$ref": "MetrosListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.mobileCarriers.get":
+
+type MobileCarriersGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one mobile carrier by ID.
+func (r *MobileCarriersService) Get(profileId int64, id int64) *MobileCarriersGetCall {
+	c := &MobileCarriersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *MobileCarriersGetCall) Fields(s ...googleapi.Field) *MobileCarriersGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *MobileCarriersGetCall) IfNoneMatch(entityTag string) *MobileCarriersGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *MobileCarriersGetCall) Context(ctx context.Context) *MobileCarriersGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *MobileCarriersGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/mobileCarriers/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.mobileCarriers.get" call.
+// Exactly one of *MobileCarrier or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *MobileCarrier.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *MobileCarriersGetCall) Do(opts ...googleapi.CallOption) (*MobileCarrier, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &MobileCarrier{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one mobile carrier by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.mobileCarriers.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Mobile carrier ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/mobileCarriers/{id}",
+	//   "response": {
+	//     "$ref": "MobileCarrier"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.mobileCarriers.list":
+
+type MobileCarriersListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of mobile carriers.
+func (r *MobileCarriersService) List(profileId int64) *MobileCarriersListCall {
+	c := &MobileCarriersListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *MobileCarriersListCall) Fields(s ...googleapi.Field) *MobileCarriersListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *MobileCarriersListCall) IfNoneMatch(entityTag string) *MobileCarriersListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *MobileCarriersListCall) Context(ctx context.Context) *MobileCarriersListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *MobileCarriersListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/mobileCarriers")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.mobileCarriers.list" call.
+// Exactly one of *MobileCarriersListResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *MobileCarriersListResponse.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *MobileCarriersListCall) Do(opts ...googleapi.CallOption) (*MobileCarriersListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &MobileCarriersListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of mobile carriers.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.mobileCarriers.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/mobileCarriers",
+	//   "response": {
+	//     "$ref": "MobileCarriersListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.operatingSystemVersions.get":
+
+type OperatingSystemVersionsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one operating system version by ID.
+func (r *OperatingSystemVersionsService) Get(profileId int64, id int64) *OperatingSystemVersionsGetCall {
+	c := &OperatingSystemVersionsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OperatingSystemVersionsGetCall) Fields(s ...googleapi.Field) *OperatingSystemVersionsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OperatingSystemVersionsGetCall) IfNoneMatch(entityTag string) *OperatingSystemVersionsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OperatingSystemVersionsGetCall) Context(ctx context.Context) *OperatingSystemVersionsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OperatingSystemVersionsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/operatingSystemVersions/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.operatingSystemVersions.get" call.
+// Exactly one of *OperatingSystemVersion or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *OperatingSystemVersion.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *OperatingSystemVersionsGetCall) Do(opts ...googleapi.CallOption) (*OperatingSystemVersion, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &OperatingSystemVersion{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one operating system version by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.operatingSystemVersions.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Operating system version ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/operatingSystemVersions/{id}",
+	//   "response": {
+	//     "$ref": "OperatingSystemVersion"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.operatingSystemVersions.list":
+
+type OperatingSystemVersionsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of operating system versions.
+func (r *OperatingSystemVersionsService) List(profileId int64) *OperatingSystemVersionsListCall {
+	c := &OperatingSystemVersionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OperatingSystemVersionsListCall) Fields(s ...googleapi.Field) *OperatingSystemVersionsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OperatingSystemVersionsListCall) IfNoneMatch(entityTag string) *OperatingSystemVersionsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OperatingSystemVersionsListCall) Context(ctx context.Context) *OperatingSystemVersionsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OperatingSystemVersionsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/operatingSystemVersions")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.operatingSystemVersions.list" call.
+// Exactly one of *OperatingSystemVersionsListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *OperatingSystemVersionsListResponse.ServerResponse.Header or
+// (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *OperatingSystemVersionsListCall) Do(opts ...googleapi.CallOption) (*OperatingSystemVersionsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &OperatingSystemVersionsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of operating system versions.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.operatingSystemVersions.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/operatingSystemVersions",
+	//   "response": {
+	//     "$ref": "OperatingSystemVersionsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.operatingSystems.get":
+
+type OperatingSystemsGetCall struct {
+	s            *Service
+	profileId    int64
+	dartId       int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one operating system by DART ID.
+func (r *OperatingSystemsService) Get(profileId int64, dartId int64) *OperatingSystemsGetCall {
+	c := &OperatingSystemsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.dartId = dartId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OperatingSystemsGetCall) Fields(s ...googleapi.Field) *OperatingSystemsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OperatingSystemsGetCall) IfNoneMatch(entityTag string) *OperatingSystemsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OperatingSystemsGetCall) Context(ctx context.Context) *OperatingSystemsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OperatingSystemsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/operatingSystems/{dartId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"dartId":    strconv.FormatInt(c.dartId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.operatingSystems.get" call.
+// Exactly one of *OperatingSystem or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *OperatingSystem.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *OperatingSystemsGetCall) Do(opts ...googleapi.CallOption) (*OperatingSystem, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &OperatingSystem{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one operating system by DART ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.operatingSystems.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "dartId"
+	//   ],
+	//   "parameters": {
+	//     "dartId": {
+	//       "description": "Operating system DART ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/operatingSystems/{dartId}",
+	//   "response": {
+	//     "$ref": "OperatingSystem"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.operatingSystems.list":
+
+type OperatingSystemsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of operating systems.
+func (r *OperatingSystemsService) List(profileId int64) *OperatingSystemsListCall {
+	c := &OperatingSystemsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OperatingSystemsListCall) Fields(s ...googleapi.Field) *OperatingSystemsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OperatingSystemsListCall) IfNoneMatch(entityTag string) *OperatingSystemsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OperatingSystemsListCall) Context(ctx context.Context) *OperatingSystemsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OperatingSystemsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/operatingSystems")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.operatingSystems.list" call.
+// Exactly one of *OperatingSystemsListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *OperatingSystemsListResponse.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *OperatingSystemsListCall) Do(opts ...googleapi.CallOption) (*OperatingSystemsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &OperatingSystemsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of operating systems.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.operatingSystems.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/operatingSystems",
+	//   "response": {
+	//     "$ref": "OperatingSystemsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.orderDocuments.get":
+
+type OrderDocumentsGetCall struct {
+	s            *Service
+	profileId    int64
+	projectId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one order document by ID.
+func (r *OrderDocumentsService) Get(profileId int64, projectId int64, id int64) *OrderDocumentsGetCall {
+	c := &OrderDocumentsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.projectId = projectId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OrderDocumentsGetCall) Fields(s ...googleapi.Field) *OrderDocumentsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OrderDocumentsGetCall) IfNoneMatch(entityTag string) *OrderDocumentsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OrderDocumentsGetCall) Context(ctx context.Context) *OrderDocumentsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OrderDocumentsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/projects/{projectId}/orderDocuments/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"projectId": strconv.FormatInt(c.projectId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.orderDocuments.get" call.
+// Exactly one of *OrderDocument or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *OrderDocument.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *OrderDocumentsGetCall) Do(opts ...googleapi.CallOption) (*OrderDocument, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &OrderDocument{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one order document by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.orderDocuments.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "projectId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Order document ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "projectId": {
+	//       "description": "Project ID for order documents.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/projects/{projectId}/orderDocuments/{id}",
+	//   "response": {
+	//     "$ref": "OrderDocument"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.orderDocuments.list":
+
+type OrderDocumentsListCall struct {
+	s            *Service
+	profileId    int64
+	projectId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of order documents, possibly filtered.
+func (r *OrderDocumentsService) List(profileId int64, projectId int64) *OrderDocumentsListCall {
+	c := &OrderDocumentsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.projectId = projectId
+	return c
+}
+
+// Approved sets the optional parameter "approved": Select only order
+// documents that have been approved by at least one user.
+func (c *OrderDocumentsListCall) Approved(approved bool) *OrderDocumentsListCall {
+	c.urlParams_.Set("approved", fmt.Sprint(approved))
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only order documents
+// with these IDs.
+func (c *OrderDocumentsListCall) Ids(ids ...int64) *OrderDocumentsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *OrderDocumentsListCall) MaxResults(maxResults int64) *OrderDocumentsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OrderId sets the optional parameter "orderId": Select only order
+// documents for specified orders.
+func (c *OrderDocumentsListCall) OrderId(orderId ...int64) *OrderDocumentsListCall {
+	var orderId_ []string
+	for _, v := range orderId {
+		orderId_ = append(orderId_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("orderId", orderId_)
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *OrderDocumentsListCall) PageToken(pageToken string) *OrderDocumentsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for order documents by name or ID. Wildcards (*) are
+// allowed. For example, "orderdocument*2015" will return order
+// documents with names like "orderdocument June 2015", "orderdocument
+// April 2015", or simply "orderdocument 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 "orderdocument" will match
+// order documents with name "my orderdocument", "orderdocument 2015",
+// or simply "orderdocument".
+func (c *OrderDocumentsListCall) SearchString(searchString string) *OrderDocumentsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SiteId sets the optional parameter "siteId": Select only order
+// documents that are associated with these sites.
+func (c *OrderDocumentsListCall) SiteId(siteId ...int64) *OrderDocumentsListCall {
+	var siteId_ []string
+	for _, v := range siteId {
+		siteId_ = append(siteId_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("siteId", siteId_)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *OrderDocumentsListCall) SortField(sortField string) *OrderDocumentsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *OrderDocumentsListCall) SortOrder(sortOrder string) *OrderDocumentsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OrderDocumentsListCall) Fields(s ...googleapi.Field) *OrderDocumentsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OrderDocumentsListCall) IfNoneMatch(entityTag string) *OrderDocumentsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OrderDocumentsListCall) Context(ctx context.Context) *OrderDocumentsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OrderDocumentsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/projects/{projectId}/orderDocuments")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"projectId": strconv.FormatInt(c.projectId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.orderDocuments.list" call.
+// Exactly one of *OrderDocumentsListResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *OrderDocumentsListResponse.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *OrderDocumentsListCall) Do(opts ...googleapi.CallOption) (*OrderDocumentsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &OrderDocumentsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of order documents, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.orderDocuments.list",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "projectId"
+	//   ],
+	//   "parameters": {
+	//     "approved": {
+	//       "description": "Select only order documents that have been approved by at least one user.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "ids": {
+	//       "description": "Select only order documents with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "orderId": {
+	//       "description": "Select only order documents for specified orders.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "projectId": {
+	//       "description": "Project ID for order documents.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for order documents by name or ID. Wildcards (*) are allowed. For example, \"orderdocument*2015\" will return order documents with names like \"orderdocument June 2015\", \"orderdocument April 2015\", or simply \"orderdocument 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 \"orderdocument\" will match order documents with name \"my orderdocument\", \"orderdocument 2015\", or simply \"orderdocument\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "siteId": {
+	//       "description": "Select only order documents that are associated with these sites.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/projects/{projectId}/orderDocuments",
+	//   "response": {
+	//     "$ref": "OrderDocumentsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *OrderDocumentsListCall) Pages(ctx context.Context, f func(*OrderDocumentsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.orders.get":
+
+type OrdersGetCall struct {
+	s            *Service
+	profileId    int64
+	projectId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one order by ID.
+func (r *OrdersService) Get(profileId int64, projectId int64, id int64) *OrdersGetCall {
+	c := &OrdersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.projectId = projectId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OrdersGetCall) Fields(s ...googleapi.Field) *OrdersGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OrdersGetCall) IfNoneMatch(entityTag string) *OrdersGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OrdersGetCall) Context(ctx context.Context) *OrdersGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OrdersGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/projects/{projectId}/orders/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"projectId": strconv.FormatInt(c.projectId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.orders.get" call.
+// Exactly one of *Order or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Order.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *OrdersGetCall) Do(opts ...googleapi.CallOption) (*Order, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Order{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one order by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.orders.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "projectId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Order ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "projectId": {
+	//       "description": "Project ID for orders.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/projects/{projectId}/orders/{id}",
+	//   "response": {
+	//     "$ref": "Order"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.orders.list":
+
+type OrdersListCall struct {
+	s            *Service
+	profileId    int64
+	projectId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of orders, possibly filtered.
+func (r *OrdersService) List(profileId int64, projectId int64) *OrdersListCall {
+	c := &OrdersListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.projectId = projectId
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only orders with these
+// IDs.
+func (c *OrdersListCall) Ids(ids ...int64) *OrdersListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *OrdersListCall) MaxResults(maxResults int64) *OrdersListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *OrdersListCall) PageToken(pageToken string) *OrdersListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for orders by name or ID. Wildcards (*) are allowed. For
+// example, "order*2015" will return orders with names like "order June
+// 2015", "order April 2015", or simply "order 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 "order" will match
+// orders with name "my order", "order 2015", or simply "order".
+func (c *OrdersListCall) SearchString(searchString string) *OrdersListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SiteId sets the optional parameter "siteId": Select only orders that
+// are associated with these site IDs.
+func (c *OrdersListCall) SiteId(siteId ...int64) *OrdersListCall {
+	var siteId_ []string
+	for _, v := range siteId {
+		siteId_ = append(siteId_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("siteId", siteId_)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *OrdersListCall) SortField(sortField string) *OrdersListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *OrdersListCall) SortOrder(sortOrder string) *OrdersListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OrdersListCall) Fields(s ...googleapi.Field) *OrdersListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OrdersListCall) IfNoneMatch(entityTag string) *OrdersListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OrdersListCall) Context(ctx context.Context) *OrdersListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OrdersListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/projects/{projectId}/orders")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"projectId": strconv.FormatInt(c.projectId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.orders.list" call.
+// Exactly one of *OrdersListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *OrdersListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *OrdersListCall) Do(opts ...googleapi.CallOption) (*OrdersListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &OrdersListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of orders, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.orders.list",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "projectId"
+	//   ],
+	//   "parameters": {
+	//     "ids": {
+	//       "description": "Select only orders with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "projectId": {
+	//       "description": "Project ID for orders.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for orders by name or ID. Wildcards (*) are allowed. For example, \"order*2015\" will return orders with names like \"order June 2015\", \"order April 2015\", or simply \"order 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 \"order\" will match orders with name \"my order\", \"order 2015\", or simply \"order\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "siteId": {
+	//       "description": "Select only orders that are associated with these site IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/projects/{projectId}/orders",
+	//   "response": {
+	//     "$ref": "OrdersListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *OrdersListCall) Pages(ctx context.Context, f func(*OrdersListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.placementGroups.get":
+
+type PlacementGroupsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one placement group by ID.
+func (r *PlacementGroupsService) Get(profileId int64, id int64) *PlacementGroupsGetCall {
+	c := &PlacementGroupsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementGroupsGetCall) Fields(s ...googleapi.Field) *PlacementGroupsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *PlacementGroupsGetCall) IfNoneMatch(entityTag string) *PlacementGroupsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementGroupsGetCall) Context(ctx context.Context) *PlacementGroupsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementGroupsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placementGroups/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placementGroups.get" call.
+// Exactly one of *PlacementGroup or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *PlacementGroup.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *PlacementGroupsGetCall) Do(opts ...googleapi.CallOption) (*PlacementGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PlacementGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one placement group by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.placementGroups.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Placement group ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placementGroups/{id}",
+	//   "response": {
+	//     "$ref": "PlacementGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.placementGroups.insert":
+
+type PlacementGroupsInsertCall struct {
+	s              *Service
+	profileId      int64
+	placementgroup *PlacementGroup
+	urlParams_     gensupport.URLParams
+	ctx_           context.Context
+}
+
+// Insert: Inserts a new placement group.
+func (r *PlacementGroupsService) Insert(profileId int64, placementgroup *PlacementGroup) *PlacementGroupsInsertCall {
+	c := &PlacementGroupsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.placementgroup = placementgroup
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementGroupsInsertCall) Fields(s ...googleapi.Field) *PlacementGroupsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementGroupsInsertCall) Context(ctx context.Context) *PlacementGroupsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementGroupsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.placementgroup)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placementGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placementGroups.insert" call.
+// Exactly one of *PlacementGroup or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *PlacementGroup.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *PlacementGroupsInsertCall) Do(opts ...googleapi.CallOption) (*PlacementGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PlacementGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new placement group.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.placementGroups.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placementGroups",
+	//   "request": {
+	//     "$ref": "PlacementGroup"
+	//   },
+	//   "response": {
+	//     "$ref": "PlacementGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.placementGroups.list":
+
+type PlacementGroupsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of placement groups, possibly filtered.
+func (r *PlacementGroupsService) List(profileId int64) *PlacementGroupsListCall {
+	c := &PlacementGroupsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// AdvertiserIds sets the optional parameter "advertiserIds": Select
+// only placement groups that belong to these advertisers.
+func (c *PlacementGroupsListCall) AdvertiserIds(advertiserIds ...int64) *PlacementGroupsListCall {
+	var advertiserIds_ []string
+	for _, v := range advertiserIds {
+		advertiserIds_ = append(advertiserIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("advertiserIds", advertiserIds_)
+	return c
+}
+
+// Archived sets the optional parameter "archived": Select only archived
+// placements. Don't set this field to select both archived and
+// non-archived placements.
+func (c *PlacementGroupsListCall) Archived(archived bool) *PlacementGroupsListCall {
+	c.urlParams_.Set("archived", fmt.Sprint(archived))
+	return c
+}
+
+// CampaignIds sets the optional parameter "campaignIds": Select only
+// placement groups that belong to these campaigns.
+func (c *PlacementGroupsListCall) CampaignIds(campaignIds ...int64) *PlacementGroupsListCall {
+	var campaignIds_ []string
+	for _, v := range campaignIds {
+		campaignIds_ = append(campaignIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("campaignIds", campaignIds_)
+	return c
+}
+
+// ContentCategoryIds sets the optional parameter "contentCategoryIds":
+// Select only placement groups that are associated with these content
+// categories.
+func (c *PlacementGroupsListCall) ContentCategoryIds(contentCategoryIds ...int64) *PlacementGroupsListCall {
+	var contentCategoryIds_ []string
+	for _, v := range contentCategoryIds {
+		contentCategoryIds_ = append(contentCategoryIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("contentCategoryIds", contentCategoryIds_)
+	return c
+}
+
+// DirectorySiteIds sets the optional parameter "directorySiteIds":
+// Select only placement groups that are associated with these directory
+// sites.
+func (c *PlacementGroupsListCall) DirectorySiteIds(directorySiteIds ...int64) *PlacementGroupsListCall {
+	var directorySiteIds_ []string
+	for _, v := range directorySiteIds {
+		directorySiteIds_ = append(directorySiteIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("directorySiteIds", directorySiteIds_)
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only placement groups
+// with these IDs.
+func (c *PlacementGroupsListCall) Ids(ids ...int64) *PlacementGroupsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxEndDate sets the optional parameter "maxEndDate": Select only
+// placements or placement groups whose end date is on or before the
+// specified maxEndDate. The date should be formatted as "yyyy-MM-dd".
+func (c *PlacementGroupsListCall) MaxEndDate(maxEndDate string) *PlacementGroupsListCall {
+	c.urlParams_.Set("maxEndDate", maxEndDate)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *PlacementGroupsListCall) MaxResults(maxResults int64) *PlacementGroupsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// MaxStartDate sets the optional parameter "maxStartDate": Select only
+// placements or placement groups whose start date is on or before the
+// specified maxStartDate. The date should be formatted as "yyyy-MM-dd".
+func (c *PlacementGroupsListCall) MaxStartDate(maxStartDate string) *PlacementGroupsListCall {
+	c.urlParams_.Set("maxStartDate", maxStartDate)
+	return c
+}
+
+// MinEndDate sets the optional parameter "minEndDate": Select only
+// placements or placement groups whose end date is on or after the
+// specified minEndDate. The date should be formatted as "yyyy-MM-dd".
+func (c *PlacementGroupsListCall) MinEndDate(minEndDate string) *PlacementGroupsListCall {
+	c.urlParams_.Set("minEndDate", minEndDate)
+	return c
+}
+
+// MinStartDate sets the optional parameter "minStartDate": Select only
+// placements or placement groups whose start date is on or after the
+// specified minStartDate. The date should be formatted as "yyyy-MM-dd".
+func (c *PlacementGroupsListCall) MinStartDate(minStartDate string) *PlacementGroupsListCall {
+	c.urlParams_.Set("minStartDate", minStartDate)
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *PlacementGroupsListCall) PageToken(pageToken string) *PlacementGroupsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// PlacementGroupType sets the optional parameter "placementGroupType":
+// Select only placement groups belonging with this group type. A
+// package is a simple group of placements that acts as a single pricing
+// point for a group of tags. A roadblock is a group of placements that
+// not only acts as a single pricing point but also assumes that all the
+// tags in it will be served at the same time. A roadblock requires one
+// of its assigned placements to be marked as primary for reporting.
+//
+// Possible values:
+//   "PLACEMENT_PACKAGE"
+//   "PLACEMENT_ROADBLOCK"
+func (c *PlacementGroupsListCall) PlacementGroupType(placementGroupType string) *PlacementGroupsListCall {
+	c.urlParams_.Set("placementGroupType", placementGroupType)
+	return c
+}
+
+// PlacementStrategyIds sets the optional parameter
+// "placementStrategyIds": Select only placement groups that are
+// associated with these placement strategies.
+func (c *PlacementGroupsListCall) PlacementStrategyIds(placementStrategyIds ...int64) *PlacementGroupsListCall {
+	var placementStrategyIds_ []string
+	for _, v := range placementStrategyIds {
+		placementStrategyIds_ = append(placementStrategyIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("placementStrategyIds", placementStrategyIds_)
+	return c
+}
+
+// PricingTypes sets the optional parameter "pricingTypes": Select only
+// placement groups with these pricing types.
+//
+// Possible values:
+//   "PRICING_TYPE_CPA"
+//   "PRICING_TYPE_CPC"
+//   "PRICING_TYPE_CPM"
+//   "PRICING_TYPE_FLAT_RATE_CLICKS"
+//   "PRICING_TYPE_FLAT_RATE_IMPRESSIONS"
+func (c *PlacementGroupsListCall) PricingTypes(pricingTypes ...string) *PlacementGroupsListCall {
+	c.urlParams_.SetMulti("pricingTypes", append([]string{}, pricingTypes...))
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for placement groups by name or ID. Wildcards (*) are
+// allowed. For example, "placement*2015" will return placement groups
+// with names like "placement group June 2015", "placement group May
+// 2015", or simply "placements 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 "placementgroup" will match placement
+// groups with name "my placementgroup", "placementgroup 2015", or
+// simply "placementgroup".
+func (c *PlacementGroupsListCall) SearchString(searchString string) *PlacementGroupsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SiteIds sets the optional parameter "siteIds": Select only placement
+// groups that are associated with these sites.
+func (c *PlacementGroupsListCall) SiteIds(siteIds ...int64) *PlacementGroupsListCall {
+	var siteIds_ []string
+	for _, v := range siteIds {
+		siteIds_ = append(siteIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("siteIds", siteIds_)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *PlacementGroupsListCall) SortField(sortField string) *PlacementGroupsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *PlacementGroupsListCall) SortOrder(sortOrder string) *PlacementGroupsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementGroupsListCall) Fields(s ...googleapi.Field) *PlacementGroupsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *PlacementGroupsListCall) IfNoneMatch(entityTag string) *PlacementGroupsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementGroupsListCall) Context(ctx context.Context) *PlacementGroupsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementGroupsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placementGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placementGroups.list" call.
+// Exactly one of *PlacementGroupsListResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *PlacementGroupsListResponse.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *PlacementGroupsListCall) Do(opts ...googleapi.CallOption) (*PlacementGroupsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PlacementGroupsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of placement groups, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.placementGroups.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "advertiserIds": {
+	//       "description": "Select only placement groups that belong to these advertisers.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "archived": {
+	//       "description": "Select only archived placements. Don't set this field to select both archived and non-archived placements.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "campaignIds": {
+	//       "description": "Select only placement groups that belong to these campaigns.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "contentCategoryIds": {
+	//       "description": "Select only placement groups that are associated with these content categories.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "directorySiteIds": {
+	//       "description": "Select only placement groups that are associated with these directory sites.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only placement groups with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxEndDate": {
+	//       "description": "Select only placements or placement groups whose end date is on or before the specified maxEndDate. The date should be formatted as \"yyyy-MM-dd\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "maxStartDate": {
+	//       "description": "Select only placements or placement groups whose start date is on or before the specified maxStartDate. The date should be formatted as \"yyyy-MM-dd\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "minEndDate": {
+	//       "description": "Select only placements or placement groups whose end date is on or after the specified minEndDate. The date should be formatted as \"yyyy-MM-dd\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "minStartDate": {
+	//       "description": "Select only placements or placement groups whose start date is on or after the specified minStartDate. The date should be formatted as \"yyyy-MM-dd\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "placementGroupType": {
+	//       "description": "Select only placement groups belonging with this group type. A package is a simple group of placements that acts as a single pricing point for a group of tags. A roadblock is a group of placements that not only acts as a single pricing point but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned placements to be marked as primary for reporting.",
+	//       "enum": [
+	//         "PLACEMENT_PACKAGE",
+	//         "PLACEMENT_ROADBLOCK"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "placementStrategyIds": {
+	//       "description": "Select only placement groups that are associated with these placement strategies.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "pricingTypes": {
+	//       "description": "Select only placement groups with these pricing types.",
+	//       "enum": [
+	//         "PRICING_TYPE_CPA",
+	//         "PRICING_TYPE_CPC",
+	//         "PRICING_TYPE_CPM",
+	//         "PRICING_TYPE_FLAT_RATE_CLICKS",
+	//         "PRICING_TYPE_FLAT_RATE_IMPRESSIONS"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for placement groups by name or ID. Wildcards (*) are allowed. For example, \"placement*2015\" will return placement groups with names like \"placement group June 2015\", \"placement group May 2015\", or simply \"placements 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 \"placementgroup\" will match placement groups with name \"my placementgroup\", \"placementgroup 2015\", or simply \"placementgroup\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "siteIds": {
+	//       "description": "Select only placement groups that are associated with these sites.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placementGroups",
+	//   "response": {
+	//     "$ref": "PlacementGroupsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *PlacementGroupsListCall) Pages(ctx context.Context, f func(*PlacementGroupsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.placementGroups.patch":
+
+type PlacementGroupsPatchCall struct {
+	s              *Service
+	profileId      int64
+	placementgroup *PlacementGroup
+	urlParams_     gensupport.URLParams
+	ctx_           context.Context
+}
+
+// Patch: Updates an existing placement group. This method supports
+// patch semantics.
+func (r *PlacementGroupsService) Patch(profileId int64, id int64, placementgroup *PlacementGroup) *PlacementGroupsPatchCall {
+	c := &PlacementGroupsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.placementgroup = placementgroup
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementGroupsPatchCall) Fields(s ...googleapi.Field) *PlacementGroupsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementGroupsPatchCall) Context(ctx context.Context) *PlacementGroupsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementGroupsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.placementgroup)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placementGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placementGroups.patch" call.
+// Exactly one of *PlacementGroup or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *PlacementGroup.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *PlacementGroupsPatchCall) Do(opts ...googleapi.CallOption) (*PlacementGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PlacementGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing placement group. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.placementGroups.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Placement group ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placementGroups",
+	//   "request": {
+	//     "$ref": "PlacementGroup"
+	//   },
+	//   "response": {
+	//     "$ref": "PlacementGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.placementGroups.update":
+
+type PlacementGroupsUpdateCall struct {
+	s              *Service
+	profileId      int64
+	placementgroup *PlacementGroup
+	urlParams_     gensupport.URLParams
+	ctx_           context.Context
+}
+
+// Update: Updates an existing placement group.
+func (r *PlacementGroupsService) Update(profileId int64, placementgroup *PlacementGroup) *PlacementGroupsUpdateCall {
+	c := &PlacementGroupsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.placementgroup = placementgroup
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementGroupsUpdateCall) Fields(s ...googleapi.Field) *PlacementGroupsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementGroupsUpdateCall) Context(ctx context.Context) *PlacementGroupsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementGroupsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.placementgroup)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placementGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placementGroups.update" call.
+// Exactly one of *PlacementGroup or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *PlacementGroup.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *PlacementGroupsUpdateCall) Do(opts ...googleapi.CallOption) (*PlacementGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PlacementGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing placement group.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.placementGroups.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placementGroups",
+	//   "request": {
+	//     "$ref": "PlacementGroup"
+	//   },
+	//   "response": {
+	//     "$ref": "PlacementGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.placementStrategies.delete":
+
+type PlacementStrategiesDeleteCall struct {
+	s          *Service
+	profileId  int64
+	id         int64
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes an existing placement strategy.
+func (r *PlacementStrategiesService) Delete(profileId int64, id int64) *PlacementStrategiesDeleteCall {
+	c := &PlacementStrategiesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementStrategiesDeleteCall) Fields(s ...googleapi.Field) *PlacementStrategiesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementStrategiesDeleteCall) Context(ctx context.Context) *PlacementStrategiesDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementStrategiesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placementStrategies/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placementStrategies.delete" call.
+func (c *PlacementStrategiesDeleteCall) Do(opts ...googleapi.CallOption) error {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if err != nil {
+		return err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return err
+	}
+	return nil
+	// {
+	//   "description": "Deletes an existing placement strategy.",
+	//   "httpMethod": "DELETE",
+	//   "id": "dfareporting.placementStrategies.delete",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Placement strategy ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placementStrategies/{id}",
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.placementStrategies.get":
+
+type PlacementStrategiesGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one placement strategy by ID.
+func (r *PlacementStrategiesService) Get(profileId int64, id int64) *PlacementStrategiesGetCall {
+	c := &PlacementStrategiesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementStrategiesGetCall) Fields(s ...googleapi.Field) *PlacementStrategiesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *PlacementStrategiesGetCall) IfNoneMatch(entityTag string) *PlacementStrategiesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementStrategiesGetCall) Context(ctx context.Context) *PlacementStrategiesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementStrategiesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placementStrategies/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placementStrategies.get" call.
+// Exactly one of *PlacementStrategy or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *PlacementStrategy.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *PlacementStrategiesGetCall) Do(opts ...googleapi.CallOption) (*PlacementStrategy, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PlacementStrategy{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one placement strategy by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.placementStrategies.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Placement strategy ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placementStrategies/{id}",
+	//   "response": {
+	//     "$ref": "PlacementStrategy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.placementStrategies.insert":
+
+type PlacementStrategiesInsertCall struct {
+	s                 *Service
+	profileId         int64
+	placementstrategy *PlacementStrategy
+	urlParams_        gensupport.URLParams
+	ctx_              context.Context
+}
+
+// Insert: Inserts a new placement strategy.
+func (r *PlacementStrategiesService) Insert(profileId int64, placementstrategy *PlacementStrategy) *PlacementStrategiesInsertCall {
+	c := &PlacementStrategiesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.placementstrategy = placementstrategy
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementStrategiesInsertCall) Fields(s ...googleapi.Field) *PlacementStrategiesInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementStrategiesInsertCall) Context(ctx context.Context) *PlacementStrategiesInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementStrategiesInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.placementstrategy)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placementStrategies")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placementStrategies.insert" call.
+// Exactly one of *PlacementStrategy or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *PlacementStrategy.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *PlacementStrategiesInsertCall) Do(opts ...googleapi.CallOption) (*PlacementStrategy, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PlacementStrategy{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new placement strategy.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.placementStrategies.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placementStrategies",
+	//   "request": {
+	//     "$ref": "PlacementStrategy"
+	//   },
+	//   "response": {
+	//     "$ref": "PlacementStrategy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.placementStrategies.list":
+
+type PlacementStrategiesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of placement strategies, possibly filtered.
+func (r *PlacementStrategiesService) List(profileId int64) *PlacementStrategiesListCall {
+	c := &PlacementStrategiesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only placement
+// strategies with these IDs.
+func (c *PlacementStrategiesListCall) Ids(ids ...int64) *PlacementStrategiesListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *PlacementStrategiesListCall) MaxResults(maxResults int64) *PlacementStrategiesListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *PlacementStrategiesListCall) PageToken(pageToken string) *PlacementStrategiesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name or ID. Wildcards (*) are allowed. For
+// example, "placementstrategy*2015" will return objects with names like
+// "placementstrategy June 2015", "placementstrategy April 2015", or
+// simply "placementstrategy 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 "placementstrategy" will match
+// objects with name "my placementstrategy", "placementstrategy 2015",
+// or simply "placementstrategy".
+func (c *PlacementStrategiesListCall) SearchString(searchString string) *PlacementStrategiesListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *PlacementStrategiesListCall) SortField(sortField string) *PlacementStrategiesListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *PlacementStrategiesListCall) SortOrder(sortOrder string) *PlacementStrategiesListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementStrategiesListCall) Fields(s ...googleapi.Field) *PlacementStrategiesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *PlacementStrategiesListCall) IfNoneMatch(entityTag string) *PlacementStrategiesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementStrategiesListCall) Context(ctx context.Context) *PlacementStrategiesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementStrategiesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placementStrategies")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placementStrategies.list" call.
+// Exactly one of *PlacementStrategiesListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *PlacementStrategiesListResponse.ServerResponse.Header or (if
+// a response was returned at all) in error.(*googleapi.Error).Header.
+// Use googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *PlacementStrategiesListCall) Do(opts ...googleapi.CallOption) (*PlacementStrategiesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PlacementStrategiesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of placement strategies, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.placementStrategies.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "ids": {
+	//       "description": "Select only placement strategies with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"placementstrategy*2015\" will return objects with names like \"placementstrategy June 2015\", \"placementstrategy April 2015\", or simply \"placementstrategy 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 \"placementstrategy\" will match objects with name \"my placementstrategy\", \"placementstrategy 2015\", or simply \"placementstrategy\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placementStrategies",
+	//   "response": {
+	//     "$ref": "PlacementStrategiesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *PlacementStrategiesListCall) Pages(ctx context.Context, f func(*PlacementStrategiesListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.placementStrategies.patch":
+
+type PlacementStrategiesPatchCall struct {
+	s                 *Service
+	profileId         int64
+	placementstrategy *PlacementStrategy
+	urlParams_        gensupport.URLParams
+	ctx_              context.Context
+}
+
+// Patch: Updates an existing placement strategy. This method supports
+// patch semantics.
+func (r *PlacementStrategiesService) Patch(profileId int64, id int64, placementstrategy *PlacementStrategy) *PlacementStrategiesPatchCall {
+	c := &PlacementStrategiesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.placementstrategy = placementstrategy
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementStrategiesPatchCall) Fields(s ...googleapi.Field) *PlacementStrategiesPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementStrategiesPatchCall) Context(ctx context.Context) *PlacementStrategiesPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementStrategiesPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.placementstrategy)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placementStrategies")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placementStrategies.patch" call.
+// Exactly one of *PlacementStrategy or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *PlacementStrategy.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *PlacementStrategiesPatchCall) Do(opts ...googleapi.CallOption) (*PlacementStrategy, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PlacementStrategy{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing placement strategy. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.placementStrategies.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Placement strategy ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placementStrategies",
+	//   "request": {
+	//     "$ref": "PlacementStrategy"
+	//   },
+	//   "response": {
+	//     "$ref": "PlacementStrategy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.placementStrategies.update":
+
+type PlacementStrategiesUpdateCall struct {
+	s                 *Service
+	profileId         int64
+	placementstrategy *PlacementStrategy
+	urlParams_        gensupport.URLParams
+	ctx_              context.Context
+}
+
+// Update: Updates an existing placement strategy.
+func (r *PlacementStrategiesService) Update(profileId int64, placementstrategy *PlacementStrategy) *PlacementStrategiesUpdateCall {
+	c := &PlacementStrategiesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.placementstrategy = placementstrategy
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementStrategiesUpdateCall) Fields(s ...googleapi.Field) *PlacementStrategiesUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementStrategiesUpdateCall) Context(ctx context.Context) *PlacementStrategiesUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementStrategiesUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.placementstrategy)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placementStrategies")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placementStrategies.update" call.
+// Exactly one of *PlacementStrategy or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *PlacementStrategy.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *PlacementStrategiesUpdateCall) Do(opts ...googleapi.CallOption) (*PlacementStrategy, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PlacementStrategy{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing placement strategy.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.placementStrategies.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placementStrategies",
+	//   "request": {
+	//     "$ref": "PlacementStrategy"
+	//   },
+	//   "response": {
+	//     "$ref": "PlacementStrategy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.placements.generatetags":
+
+type PlacementsGeneratetagsCall struct {
+	s          *Service
+	profileId  int64
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Generatetags: Generates tags for a placement.
+func (r *PlacementsService) Generatetags(profileId int64) *PlacementsGeneratetagsCall {
+	c := &PlacementsGeneratetagsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// CampaignId sets the optional parameter "campaignId": Generate
+// placements belonging to this campaign. This is a required field.
+func (c *PlacementsGeneratetagsCall) CampaignId(campaignId int64) *PlacementsGeneratetagsCall {
+	c.urlParams_.Set("campaignId", fmt.Sprint(campaignId))
+	return c
+}
+
+// PlacementIds sets the optional parameter "placementIds": Generate
+// tags for these placements.
+func (c *PlacementsGeneratetagsCall) PlacementIds(placementIds ...int64) *PlacementsGeneratetagsCall {
+	var placementIds_ []string
+	for _, v := range placementIds {
+		placementIds_ = append(placementIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("placementIds", placementIds_)
+	return c
+}
+
+// TagFormats sets the optional parameter "tagFormats": Tag formats to
+// generate for these placements.
+//
+// Possible values:
+//   "PLACEMENT_TAG_CLICK_COMMANDS"
+//   "PLACEMENT_TAG_IFRAME_ILAYER"
+//   "PLACEMENT_TAG_IFRAME_JAVASCRIPT"
+//   "PLACEMENT_TAG_IFRAME_JAVASCRIPT_LEGACY"
+//   "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH"
+//   "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3"
+//   "PLACEMENT_TAG_INTERNAL_REDIRECT"
+//   "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT"
+//   "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT_LEGACY"
+//   "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT"
+//   "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT"
+//   "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT_LEGACY"
+//   "PLACEMENT_TAG_JAVASCRIPT"
+//   "PLACEMENT_TAG_JAVASCRIPT_LEGACY"
+//   "PLACEMENT_TAG_STANDARD"
+//   "PLACEMENT_TAG_TRACKING"
+//   "PLACEMENT_TAG_TRACKING_IFRAME"
+//   "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+func (c *PlacementsGeneratetagsCall) TagFormats(tagFormats ...string) *PlacementsGeneratetagsCall {
+	c.urlParams_.SetMulti("tagFormats", append([]string{}, tagFormats...))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementsGeneratetagsCall) Fields(s ...googleapi.Field) *PlacementsGeneratetagsCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementsGeneratetagsCall) Context(ctx context.Context) *PlacementsGeneratetagsCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementsGeneratetagsCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placements/generatetags")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placements.generatetags" call.
+// Exactly one of *PlacementsGenerateTagsResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *PlacementsGenerateTagsResponse.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *PlacementsGeneratetagsCall) Do(opts ...googleapi.CallOption) (*PlacementsGenerateTagsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PlacementsGenerateTagsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Generates tags for a placement.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.placements.generatetags",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "campaignId": {
+	//       "description": "Generate placements belonging to this campaign. This is a required field.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "placementIds": {
+	//       "description": "Generate tags for these placements.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "tagFormats": {
+	//       "description": "Tag formats to generate for these placements.",
+	//       "enum": [
+	//         "PLACEMENT_TAG_CLICK_COMMANDS",
+	//         "PLACEMENT_TAG_IFRAME_ILAYER",
+	//         "PLACEMENT_TAG_IFRAME_JAVASCRIPT",
+	//         "PLACEMENT_TAG_IFRAME_JAVASCRIPT_LEGACY",
+	//         "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH",
+	//         "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3",
+	//         "PLACEMENT_TAG_INTERNAL_REDIRECT",
+	//         "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT",
+	//         "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT_LEGACY",
+	//         "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT",
+	//         "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT",
+	//         "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT_LEGACY",
+	//         "PLACEMENT_TAG_JAVASCRIPT",
+	//         "PLACEMENT_TAG_JAVASCRIPT_LEGACY",
+	//         "PLACEMENT_TAG_STANDARD",
+	//         "PLACEMENT_TAG_TRACKING",
+	//         "PLACEMENT_TAG_TRACKING_IFRAME",
+	//         "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placements/generatetags",
+	//   "response": {
+	//     "$ref": "PlacementsGenerateTagsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.placements.get":
+
+type PlacementsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one placement by ID.
+func (r *PlacementsService) Get(profileId int64, id int64) *PlacementsGetCall {
+	c := &PlacementsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementsGetCall) Fields(s ...googleapi.Field) *PlacementsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *PlacementsGetCall) IfNoneMatch(entityTag string) *PlacementsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementsGetCall) Context(ctx context.Context) *PlacementsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placements/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placements.get" call.
+// Exactly one of *Placement or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Placement.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *PlacementsGetCall) Do(opts ...googleapi.CallOption) (*Placement, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Placement{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one placement by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.placements.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Placement ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placements/{id}",
+	//   "response": {
+	//     "$ref": "Placement"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.placements.insert":
+
+type PlacementsInsertCall struct {
+	s          *Service
+	profileId  int64
+	placement  *Placement
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Insert: Inserts a new placement.
+func (r *PlacementsService) Insert(profileId int64, placement *Placement) *PlacementsInsertCall {
+	c := &PlacementsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.placement = placement
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementsInsertCall) Fields(s ...googleapi.Field) *PlacementsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementsInsertCall) Context(ctx context.Context) *PlacementsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.placement)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placements")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placements.insert" call.
+// Exactly one of *Placement or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Placement.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *PlacementsInsertCall) Do(opts ...googleapi.CallOption) (*Placement, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Placement{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new placement.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.placements.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placements",
+	//   "request": {
+	//     "$ref": "Placement"
+	//   },
+	//   "response": {
+	//     "$ref": "Placement"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.placements.list":
+
+type PlacementsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of placements, possibly filtered.
+func (r *PlacementsService) List(profileId int64) *PlacementsListCall {
+	c := &PlacementsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// AdvertiserIds sets the optional parameter "advertiserIds": Select
+// only placements that belong to these advertisers.
+func (c *PlacementsListCall) AdvertiserIds(advertiserIds ...int64) *PlacementsListCall {
+	var advertiserIds_ []string
+	for _, v := range advertiserIds {
+		advertiserIds_ = append(advertiserIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("advertiserIds", advertiserIds_)
+	return c
+}
+
+// Archived sets the optional parameter "archived": Select only archived
+// placements. Don't set this field to select both archived and
+// non-archived placements.
+func (c *PlacementsListCall) Archived(archived bool) *PlacementsListCall {
+	c.urlParams_.Set("archived", fmt.Sprint(archived))
+	return c
+}
+
+// CampaignIds sets the optional parameter "campaignIds": Select only
+// placements that belong to these campaigns.
+func (c *PlacementsListCall) CampaignIds(campaignIds ...int64) *PlacementsListCall {
+	var campaignIds_ []string
+	for _, v := range campaignIds {
+		campaignIds_ = append(campaignIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("campaignIds", campaignIds_)
+	return c
+}
+
+// Compatibilities sets the optional parameter "compatibilities": Select
+// only placements that are associated with these compatibilities.
+// DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop
+// or on mobile devices for regular or interstitial ads respectively.
+// APP and APP_INTERSTITIAL are for rendering in mobile
+// apps.IN_STREAM_VIDEO refers to rendering in in-stream video ads
+// developed with the VAST standard.
+//
+// Possible values:
+//   "APP"
+//   "APP_INTERSTITIAL"
+//   "DISPLAY"
+//   "DISPLAY_INTERSTITIAL"
+//   "IN_STREAM_VIDEO"
+func (c *PlacementsListCall) Compatibilities(compatibilities ...string) *PlacementsListCall {
+	c.urlParams_.SetMulti("compatibilities", append([]string{}, compatibilities...))
+	return c
+}
+
+// ContentCategoryIds sets the optional parameter "contentCategoryIds":
+// Select only placements that are associated with these content
+// categories.
+func (c *PlacementsListCall) ContentCategoryIds(contentCategoryIds ...int64) *PlacementsListCall {
+	var contentCategoryIds_ []string
+	for _, v := range contentCategoryIds {
+		contentCategoryIds_ = append(contentCategoryIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("contentCategoryIds", contentCategoryIds_)
+	return c
+}
+
+// DirectorySiteIds sets the optional parameter "directorySiteIds":
+// Select only placements that are associated with these directory
+// sites.
+func (c *PlacementsListCall) DirectorySiteIds(directorySiteIds ...int64) *PlacementsListCall {
+	var directorySiteIds_ []string
+	for _, v := range directorySiteIds {
+		directorySiteIds_ = append(directorySiteIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("directorySiteIds", directorySiteIds_)
+	return c
+}
+
+// GroupIds sets the optional parameter "groupIds": Select only
+// placements that belong to these placement groups.
+func (c *PlacementsListCall) GroupIds(groupIds ...int64) *PlacementsListCall {
+	var groupIds_ []string
+	for _, v := range groupIds {
+		groupIds_ = append(groupIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("groupIds", groupIds_)
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only placements with
+// these IDs.
+func (c *PlacementsListCall) Ids(ids ...int64) *PlacementsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxEndDate sets the optional parameter "maxEndDate": Select only
+// placements or placement groups whose end date is on or before the
+// specified maxEndDate. The date should be formatted as "yyyy-MM-dd".
+func (c *PlacementsListCall) MaxEndDate(maxEndDate string) *PlacementsListCall {
+	c.urlParams_.Set("maxEndDate", maxEndDate)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *PlacementsListCall) MaxResults(maxResults int64) *PlacementsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// MaxStartDate sets the optional parameter "maxStartDate": Select only
+// placements or placement groups whose start date is on or before the
+// specified maxStartDate. The date should be formatted as "yyyy-MM-dd".
+func (c *PlacementsListCall) MaxStartDate(maxStartDate string) *PlacementsListCall {
+	c.urlParams_.Set("maxStartDate", maxStartDate)
+	return c
+}
+
+// MinEndDate sets the optional parameter "minEndDate": Select only
+// placements or placement groups whose end date is on or after the
+// specified minEndDate. The date should be formatted as "yyyy-MM-dd".
+func (c *PlacementsListCall) MinEndDate(minEndDate string) *PlacementsListCall {
+	c.urlParams_.Set("minEndDate", minEndDate)
+	return c
+}
+
+// MinStartDate sets the optional parameter "minStartDate": Select only
+// placements or placement groups whose start date is on or after the
+// specified minStartDate. The date should be formatted as "yyyy-MM-dd".
+func (c *PlacementsListCall) MinStartDate(minStartDate string) *PlacementsListCall {
+	c.urlParams_.Set("minStartDate", minStartDate)
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *PlacementsListCall) PageToken(pageToken string) *PlacementsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// PaymentSource sets the optional parameter "paymentSource": Select
+// only placements with this payment source.
+//
+// Possible values:
+//   "PLACEMENT_AGENCY_PAID"
+//   "PLACEMENT_PUBLISHER_PAID"
+func (c *PlacementsListCall) PaymentSource(paymentSource string) *PlacementsListCall {
+	c.urlParams_.Set("paymentSource", paymentSource)
+	return c
+}
+
+// PlacementStrategyIds sets the optional parameter
+// "placementStrategyIds": Select only placements that are associated
+// with these placement strategies.
+func (c *PlacementsListCall) PlacementStrategyIds(placementStrategyIds ...int64) *PlacementsListCall {
+	var placementStrategyIds_ []string
+	for _, v := range placementStrategyIds {
+		placementStrategyIds_ = append(placementStrategyIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("placementStrategyIds", placementStrategyIds_)
+	return c
+}
+
+// PricingTypes sets the optional parameter "pricingTypes": Select only
+// placements with these pricing types.
+//
+// Possible values:
+//   "PRICING_TYPE_CPA"
+//   "PRICING_TYPE_CPC"
+//   "PRICING_TYPE_CPM"
+//   "PRICING_TYPE_FLAT_RATE_CLICKS"
+//   "PRICING_TYPE_FLAT_RATE_IMPRESSIONS"
+func (c *PlacementsListCall) PricingTypes(pricingTypes ...string) *PlacementsListCall {
+	c.urlParams_.SetMulti("pricingTypes", append([]string{}, pricingTypes...))
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for placements by name or ID. Wildcards (*) are allowed.
+// For example, "placement*2015" will return placements with names like
+// "placement June 2015", "placement May 2015", or simply "placements
+// 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 "placement" will match placements with name "my placement",
+// "placement 2015", or simply "placement".
+func (c *PlacementsListCall) SearchString(searchString string) *PlacementsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SiteIds sets the optional parameter "siteIds": Select only placements
+// that are associated with these sites.
+func (c *PlacementsListCall) SiteIds(siteIds ...int64) *PlacementsListCall {
+	var siteIds_ []string
+	for _, v := range siteIds {
+		siteIds_ = append(siteIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("siteIds", siteIds_)
+	return c
+}
+
+// SizeIds sets the optional parameter "sizeIds": Select only placements
+// that are associated with these sizes.
+func (c *PlacementsListCall) SizeIds(sizeIds ...int64) *PlacementsListCall {
+	var sizeIds_ []string
+	for _, v := range sizeIds {
+		sizeIds_ = append(sizeIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("sizeIds", sizeIds_)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *PlacementsListCall) SortField(sortField string) *PlacementsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *PlacementsListCall) SortOrder(sortOrder string) *PlacementsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementsListCall) Fields(s ...googleapi.Field) *PlacementsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *PlacementsListCall) IfNoneMatch(entityTag string) *PlacementsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementsListCall) Context(ctx context.Context) *PlacementsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placements")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placements.list" call.
+// Exactly one of *PlacementsListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *PlacementsListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *PlacementsListCall) Do(opts ...googleapi.CallOption) (*PlacementsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PlacementsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of placements, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.placements.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "advertiserIds": {
+	//       "description": "Select only placements that belong to these advertisers.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "archived": {
+	//       "description": "Select only archived placements. Don't set this field to select both archived and non-archived placements.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "campaignIds": {
+	//       "description": "Select only placements that belong to these campaigns.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "compatibilities": {
+	//       "description": "Select only placements that are associated with these compatibilities. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps.IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard.",
+	//       "enum": [
+	//         "APP",
+	//         "APP_INTERSTITIAL",
+	//         "DISPLAY",
+	//         "DISPLAY_INTERSTITIAL",
+	//         "IN_STREAM_VIDEO"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "contentCategoryIds": {
+	//       "description": "Select only placements that are associated with these content categories.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "directorySiteIds": {
+	//       "description": "Select only placements that are associated with these directory sites.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "groupIds": {
+	//       "description": "Select only placements that belong to these placement groups.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only placements with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxEndDate": {
+	//       "description": "Select only placements or placement groups whose end date is on or before the specified maxEndDate. The date should be formatted as \"yyyy-MM-dd\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "maxStartDate": {
+	//       "description": "Select only placements or placement groups whose start date is on or before the specified maxStartDate. The date should be formatted as \"yyyy-MM-dd\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "minEndDate": {
+	//       "description": "Select only placements or placement groups whose end date is on or after the specified minEndDate. The date should be formatted as \"yyyy-MM-dd\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "minStartDate": {
+	//       "description": "Select only placements or placement groups whose start date is on or after the specified minStartDate. The date should be formatted as \"yyyy-MM-dd\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "paymentSource": {
+	//       "description": "Select only placements with this payment source.",
+	//       "enum": [
+	//         "PLACEMENT_AGENCY_PAID",
+	//         "PLACEMENT_PUBLISHER_PAID"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "placementStrategyIds": {
+	//       "description": "Select only placements that are associated with these placement strategies.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "pricingTypes": {
+	//       "description": "Select only placements with these pricing types.",
+	//       "enum": [
+	//         "PRICING_TYPE_CPA",
+	//         "PRICING_TYPE_CPC",
+	//         "PRICING_TYPE_CPM",
+	//         "PRICING_TYPE_FLAT_RATE_CLICKS",
+	//         "PRICING_TYPE_FLAT_RATE_IMPRESSIONS"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         "",
+	//         "",
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for placements by name or ID. Wildcards (*) are allowed. For example, \"placement*2015\" will return placements with names like \"placement June 2015\", \"placement May 2015\", or simply \"placements 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 \"placement\" will match placements with name \"my placement\", \"placement 2015\", or simply \"placement\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "siteIds": {
+	//       "description": "Select only placements that are associated with these sites.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "sizeIds": {
+	//       "description": "Select only placements that are associated with these sizes.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placements",
+	//   "response": {
+	//     "$ref": "PlacementsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *PlacementsListCall) Pages(ctx context.Context, f func(*PlacementsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.placements.patch":
+
+type PlacementsPatchCall struct {
+	s          *Service
+	profileId  int64
+	placement  *Placement
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Patch: Updates an existing placement. This method supports patch
+// semantics.
+func (r *PlacementsService) Patch(profileId int64, id int64, placement *Placement) *PlacementsPatchCall {
+	c := &PlacementsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.placement = placement
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementsPatchCall) Fields(s ...googleapi.Field) *PlacementsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementsPatchCall) Context(ctx context.Context) *PlacementsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.placement)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placements")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placements.patch" call.
+// Exactly one of *Placement or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Placement.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *PlacementsPatchCall) Do(opts ...googleapi.CallOption) (*Placement, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Placement{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing placement. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.placements.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Placement ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placements",
+	//   "request": {
+	//     "$ref": "Placement"
+	//   },
+	//   "response": {
+	//     "$ref": "Placement"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.placements.update":
+
+type PlacementsUpdateCall struct {
+	s          *Service
+	profileId  int64
+	placement  *Placement
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Update: Updates an existing placement.
+func (r *PlacementsService) Update(profileId int64, placement *Placement) *PlacementsUpdateCall {
+	c := &PlacementsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.placement = placement
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlacementsUpdateCall) Fields(s ...googleapi.Field) *PlacementsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlacementsUpdateCall) Context(ctx context.Context) *PlacementsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlacementsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.placement)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/placements")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.placements.update" call.
+// Exactly one of *Placement or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Placement.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *PlacementsUpdateCall) Do(opts ...googleapi.CallOption) (*Placement, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Placement{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing placement.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.placements.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/placements",
+	//   "request": {
+	//     "$ref": "Placement"
+	//   },
+	//   "response": {
+	//     "$ref": "Placement"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.platformTypes.get":
+
+type PlatformTypesGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one platform type by ID.
+func (r *PlatformTypesService) Get(profileId int64, id int64) *PlatformTypesGetCall {
+	c := &PlatformTypesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlatformTypesGetCall) Fields(s ...googleapi.Field) *PlatformTypesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *PlatformTypesGetCall) IfNoneMatch(entityTag string) *PlatformTypesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlatformTypesGetCall) Context(ctx context.Context) *PlatformTypesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlatformTypesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/platformTypes/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.platformTypes.get" call.
+// Exactly one of *PlatformType or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *PlatformType.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *PlatformTypesGetCall) Do(opts ...googleapi.CallOption) (*PlatformType, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PlatformType{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one platform type by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.platformTypes.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Platform type ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/platformTypes/{id}",
+	//   "response": {
+	//     "$ref": "PlatformType"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.platformTypes.list":
+
+type PlatformTypesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of platform types.
+func (r *PlatformTypesService) List(profileId int64) *PlatformTypesListCall {
+	c := &PlatformTypesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PlatformTypesListCall) Fields(s ...googleapi.Field) *PlatformTypesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *PlatformTypesListCall) IfNoneMatch(entityTag string) *PlatformTypesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PlatformTypesListCall) Context(ctx context.Context) *PlatformTypesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PlatformTypesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/platformTypes")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.platformTypes.list" call.
+// Exactly one of *PlatformTypesListResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *PlatformTypesListResponse.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *PlatformTypesListCall) Do(opts ...googleapi.CallOption) (*PlatformTypesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PlatformTypesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of platform types.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.platformTypes.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/platformTypes",
+	//   "response": {
+	//     "$ref": "PlatformTypesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.postalCodes.get":
+
+type PostalCodesGetCall struct {
+	s            *Service
+	profileId    int64
+	code         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one postal code by ID.
+func (r *PostalCodesService) Get(profileId int64, code string) *PostalCodesGetCall {
+	c := &PostalCodesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.code = code
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PostalCodesGetCall) Fields(s ...googleapi.Field) *PostalCodesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *PostalCodesGetCall) IfNoneMatch(entityTag string) *PostalCodesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PostalCodesGetCall) Context(ctx context.Context) *PostalCodesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PostalCodesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/postalCodes/{code}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"code":      c.code,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.postalCodes.get" call.
+// Exactly one of *PostalCode or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *PostalCode.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *PostalCodesGetCall) Do(opts ...googleapi.CallOption) (*PostalCode, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PostalCode{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one postal code by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.postalCodes.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "code"
+	//   ],
+	//   "parameters": {
+	//     "code": {
+	//       "description": "Postal code ID.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/postalCodes/{code}",
+	//   "response": {
+	//     "$ref": "PostalCode"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.postalCodes.list":
+
+type PostalCodesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of postal codes.
+func (r *PostalCodesService) List(profileId int64) *PostalCodesListCall {
+	c := &PostalCodesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PostalCodesListCall) Fields(s ...googleapi.Field) *PostalCodesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *PostalCodesListCall) IfNoneMatch(entityTag string) *PostalCodesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PostalCodesListCall) Context(ctx context.Context) *PostalCodesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *PostalCodesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/postalCodes")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.postalCodes.list" call.
+// Exactly one of *PostalCodesListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *PostalCodesListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *PostalCodesListCall) Do(opts ...googleapi.CallOption) (*PostalCodesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &PostalCodesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of postal codes.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.postalCodes.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/postalCodes",
+	//   "response": {
+	//     "$ref": "PostalCodesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.projects.get":
+
+type ProjectsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one project by ID.
+func (r *ProjectsService) Get(profileId int64, id int64) *ProjectsGetCall {
+	c := &ProjectsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsGetCall) Fields(s ...googleapi.Field) *ProjectsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsGetCall) IfNoneMatch(entityTag string) *ProjectsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsGetCall) Context(ctx context.Context) *ProjectsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/projects/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.projects.get" call.
+// Exactly one of *Project or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Project.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsGetCall) Do(opts ...googleapi.CallOption) (*Project, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Project{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one project by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.projects.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Project ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/projects/{id}",
+	//   "response": {
+	//     "$ref": "Project"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.projects.list":
+
+type ProjectsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of projects, possibly filtered.
+func (r *ProjectsService) List(profileId int64) *ProjectsListCall {
+	c := &ProjectsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// AdvertiserIds sets the optional parameter "advertiserIds": Select
+// only projects with these advertiser IDs.
+func (c *ProjectsListCall) AdvertiserIds(advertiserIds ...int64) *ProjectsListCall {
+	var advertiserIds_ []string
+	for _, v := range advertiserIds {
+		advertiserIds_ = append(advertiserIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("advertiserIds", advertiserIds_)
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only projects with
+// these IDs.
+func (c *ProjectsListCall) Ids(ids ...int64) *ProjectsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *ProjectsListCall) MaxResults(maxResults int64) *ProjectsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *ProjectsListCall) PageToken(pageToken string) *ProjectsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": 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".
+func (c *ProjectsListCall) SearchString(searchString string) *ProjectsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *ProjectsListCall) SortField(sortField string) *ProjectsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *ProjectsListCall) SortOrder(sortOrder string) *ProjectsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsListCall) Fields(s ...googleapi.Field) *ProjectsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsListCall) IfNoneMatch(entityTag string) *ProjectsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsListCall) Context(ctx context.Context) *ProjectsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/projects")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.projects.list" call.
+// Exactly one of *ProjectsListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ProjectsListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsListCall) Do(opts ...googleapi.CallOption) (*ProjectsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ProjectsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of projects, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.projects.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "advertiserIds": {
+	//       "description": "Select only projects with these advertiser IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only projects with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "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\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/projects",
+	//   "response": {
+	//     "$ref": "ProjectsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsListCall) Pages(ctx context.Context, f func(*ProjectsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.regions.list":
+
+type RegionsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of regions.
+func (r *RegionsService) List(profileId int64) *RegionsListCall {
+	c := &RegionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionsListCall) Fields(s ...googleapi.Field) *RegionsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionsListCall) IfNoneMatch(entityTag string) *RegionsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionsListCall) Context(ctx context.Context) *RegionsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *RegionsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/regions")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.regions.list" call.
+// Exactly one of *RegionsListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *RegionsListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RegionsListCall) Do(opts ...googleapi.CallOption) (*RegionsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &RegionsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of regions.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.regions.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/regions",
+	//   "response": {
+	//     "$ref": "RegionsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.remarketingListShares.get":
+
+type RemarketingListSharesGetCall struct {
+	s                 *Service
+	profileId         int64
+	remarketingListId int64
+	urlParams_        gensupport.URLParams
+	ifNoneMatch_      string
+	ctx_              context.Context
+}
+
+// Get: Gets one remarketing list share by remarketing list ID.
+func (r *RemarketingListSharesService) Get(profileId int64, remarketingListId int64) *RemarketingListSharesGetCall {
+	c := &RemarketingListSharesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.remarketingListId = remarketingListId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RemarketingListSharesGetCall) Fields(s ...googleapi.Field) *RemarketingListSharesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RemarketingListSharesGetCall) IfNoneMatch(entityTag string) *RemarketingListSharesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RemarketingListSharesGetCall) Context(ctx context.Context) *RemarketingListSharesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *RemarketingListSharesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/remarketingListShares/{remarketingListId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId":         strconv.FormatInt(c.profileId, 10),
+		"remarketingListId": strconv.FormatInt(c.remarketingListId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.remarketingListShares.get" call.
+// Exactly one of *RemarketingListShare or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *RemarketingListShare.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RemarketingListSharesGetCall) Do(opts ...googleapi.CallOption) (*RemarketingListShare, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &RemarketingListShare{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one remarketing list share by remarketing list ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.remarketingListShares.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "remarketingListId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "remarketingListId": {
+	//       "description": "Remarketing list ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/remarketingListShares/{remarketingListId}",
+	//   "response": {
+	//     "$ref": "RemarketingListShare"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.remarketingListShares.patch":
+
+type RemarketingListSharesPatchCall struct {
+	s                    *Service
+	profileId            int64
+	remarketinglistshare *RemarketingListShare
+	urlParams_           gensupport.URLParams
+	ctx_                 context.Context
+}
+
+// Patch: Updates an existing remarketing list share. This method
+// supports patch semantics.
+func (r *RemarketingListSharesService) Patch(profileId int64, remarketingListId int64, remarketinglistshare *RemarketingListShare) *RemarketingListSharesPatchCall {
+	c := &RemarketingListSharesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("remarketingListId", fmt.Sprint(remarketingListId))
+	c.remarketinglistshare = remarketinglistshare
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RemarketingListSharesPatchCall) Fields(s ...googleapi.Field) *RemarketingListSharesPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RemarketingListSharesPatchCall) Context(ctx context.Context) *RemarketingListSharesPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *RemarketingListSharesPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.remarketinglistshare)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/remarketingListShares")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.remarketingListShares.patch" call.
+// Exactly one of *RemarketingListShare or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *RemarketingListShare.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RemarketingListSharesPatchCall) Do(opts ...googleapi.CallOption) (*RemarketingListShare, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &RemarketingListShare{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing remarketing list share. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.remarketingListShares.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "remarketingListId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "remarketingListId": {
+	//       "description": "Remarketing list ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/remarketingListShares",
+	//   "request": {
+	//     "$ref": "RemarketingListShare"
+	//   },
+	//   "response": {
+	//     "$ref": "RemarketingListShare"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.remarketingListShares.update":
+
+type RemarketingListSharesUpdateCall struct {
+	s                    *Service
+	profileId            int64
+	remarketinglistshare *RemarketingListShare
+	urlParams_           gensupport.URLParams
+	ctx_                 context.Context
+}
+
+// Update: Updates an existing remarketing list share.
+func (r *RemarketingListSharesService) Update(profileId int64, remarketinglistshare *RemarketingListShare) *RemarketingListSharesUpdateCall {
+	c := &RemarketingListSharesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.remarketinglistshare = remarketinglistshare
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RemarketingListSharesUpdateCall) Fields(s ...googleapi.Field) *RemarketingListSharesUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RemarketingListSharesUpdateCall) Context(ctx context.Context) *RemarketingListSharesUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *RemarketingListSharesUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.remarketinglistshare)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/remarketingListShares")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.remarketingListShares.update" call.
+// Exactly one of *RemarketingListShare or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *RemarketingListShare.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RemarketingListSharesUpdateCall) Do(opts ...googleapi.CallOption) (*RemarketingListShare, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &RemarketingListShare{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing remarketing list share.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.remarketingListShares.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/remarketingListShares",
+	//   "request": {
+	//     "$ref": "RemarketingListShare"
+	//   },
+	//   "response": {
+	//     "$ref": "RemarketingListShare"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.remarketingLists.get":
+
+type RemarketingListsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one remarketing list by ID.
+func (r *RemarketingListsService) Get(profileId int64, id int64) *RemarketingListsGetCall {
+	c := &RemarketingListsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RemarketingListsGetCall) Fields(s ...googleapi.Field) *RemarketingListsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RemarketingListsGetCall) IfNoneMatch(entityTag string) *RemarketingListsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RemarketingListsGetCall) Context(ctx context.Context) *RemarketingListsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *RemarketingListsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/remarketingLists/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.remarketingLists.get" call.
+// Exactly one of *RemarketingList or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *RemarketingList.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RemarketingListsGetCall) Do(opts ...googleapi.CallOption) (*RemarketingList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &RemarketingList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one remarketing list by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.remarketingLists.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Remarketing list ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/remarketingLists/{id}",
+	//   "response": {
+	//     "$ref": "RemarketingList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.remarketingLists.insert":
+
+type RemarketingListsInsertCall struct {
+	s               *Service
+	profileId       int64
+	remarketinglist *RemarketingList
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+}
+
+// Insert: Inserts a new remarketing list.
+func (r *RemarketingListsService) Insert(profileId int64, remarketinglist *RemarketingList) *RemarketingListsInsertCall {
+	c := &RemarketingListsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.remarketinglist = remarketinglist
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RemarketingListsInsertCall) Fields(s ...googleapi.Field) *RemarketingListsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RemarketingListsInsertCall) Context(ctx context.Context) *RemarketingListsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *RemarketingListsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.remarketinglist)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/remarketingLists")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.remarketingLists.insert" call.
+// Exactly one of *RemarketingList or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *RemarketingList.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RemarketingListsInsertCall) Do(opts ...googleapi.CallOption) (*RemarketingList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &RemarketingList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new remarketing list.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.remarketingLists.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/remarketingLists",
+	//   "request": {
+	//     "$ref": "RemarketingList"
+	//   },
+	//   "response": {
+	//     "$ref": "RemarketingList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.remarketingLists.list":
+
+type RemarketingListsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of remarketing lists, possibly filtered.
+func (r *RemarketingListsService) List(profileId int64, advertiserId int64) *RemarketingListsListCall {
+	c := &RemarketingListsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
+	return c
+}
+
+// Active sets the optional parameter "active": Select only active or
+// only inactive remarketing lists.
+func (c *RemarketingListsListCall) Active(active bool) *RemarketingListsListCall {
+	c.urlParams_.Set("active", fmt.Sprint(active))
+	return c
+}
+
+// FloodlightActivityId sets the optional parameter
+// "floodlightActivityId": Select only remarketing lists that have this
+// floodlight activity ID.
+func (c *RemarketingListsListCall) FloodlightActivityId(floodlightActivityId int64) *RemarketingListsListCall {
+	c.urlParams_.Set("floodlightActivityId", fmt.Sprint(floodlightActivityId))
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *RemarketingListsListCall) MaxResults(maxResults int64) *RemarketingListsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// Name sets the optional parameter "name": Allows searching for objects
+// by name or ID. Wildcards (*) are allowed. For example, "remarketing
+// list*2015" will return objects with names like "remarketing list June
+// 2015", "remarketing list April 2015", or simply "remarketing list
+// 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 "remarketing list" will match objects with name "my remarketing
+// list", "remarketing list 2015", or simply "remarketing list".
+func (c *RemarketingListsListCall) Name(name string) *RemarketingListsListCall {
+	c.urlParams_.Set("name", name)
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *RemarketingListsListCall) PageToken(pageToken string) *RemarketingListsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *RemarketingListsListCall) SortField(sortField string) *RemarketingListsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *RemarketingListsListCall) SortOrder(sortOrder string) *RemarketingListsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RemarketingListsListCall) Fields(s ...googleapi.Field) *RemarketingListsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RemarketingListsListCall) IfNoneMatch(entityTag string) *RemarketingListsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RemarketingListsListCall) Context(ctx context.Context) *RemarketingListsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *RemarketingListsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/remarketingLists")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.remarketingLists.list" call.
+// Exactly one of *RemarketingListsListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *RemarketingListsListResponse.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RemarketingListsListCall) Do(opts ...googleapi.CallOption) (*RemarketingListsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &RemarketingListsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of remarketing lists, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.remarketingLists.list",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "advertiserId"
+	//   ],
+	//   "parameters": {
+	//     "active": {
+	//       "description": "Select only active or only inactive remarketing lists.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "advertiserId": {
+	//       "description": "Select only remarketing lists owned by this advertiser.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "floodlightActivityId": {
+	//       "description": "Select only remarketing lists that have this floodlight activity ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "name": {
+	//       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"remarketing list*2015\" will return objects with names like \"remarketing list June 2015\", \"remarketing list April 2015\", or simply \"remarketing list 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 \"remarketing list\" will match objects with name \"my remarketing list\", \"remarketing list 2015\", or simply \"remarketing list\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/remarketingLists",
+	//   "response": {
+	//     "$ref": "RemarketingListsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *RemarketingListsListCall) Pages(ctx context.Context, f func(*RemarketingListsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.remarketingLists.patch":
+
+type RemarketingListsPatchCall struct {
+	s               *Service
+	profileId       int64
+	remarketinglist *RemarketingList
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+}
+
+// Patch: Updates an existing remarketing list. This method supports
+// patch semantics.
+func (r *RemarketingListsService) Patch(profileId int64, id int64, remarketinglist *RemarketingList) *RemarketingListsPatchCall {
+	c := &RemarketingListsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.remarketinglist = remarketinglist
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RemarketingListsPatchCall) Fields(s ...googleapi.Field) *RemarketingListsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RemarketingListsPatchCall) Context(ctx context.Context) *RemarketingListsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *RemarketingListsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.remarketinglist)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/remarketingLists")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.remarketingLists.patch" call.
+// Exactly one of *RemarketingList or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *RemarketingList.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RemarketingListsPatchCall) Do(opts ...googleapi.CallOption) (*RemarketingList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &RemarketingList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing remarketing list. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.remarketingLists.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Remarketing list ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/remarketingLists",
+	//   "request": {
+	//     "$ref": "RemarketingList"
+	//   },
+	//   "response": {
+	//     "$ref": "RemarketingList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.remarketingLists.update":
+
+type RemarketingListsUpdateCall struct {
+	s               *Service
+	profileId       int64
+	remarketinglist *RemarketingList
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+}
+
+// Update: Updates an existing remarketing list.
+func (r *RemarketingListsService) Update(profileId int64, remarketinglist *RemarketingList) *RemarketingListsUpdateCall {
+	c := &RemarketingListsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.remarketinglist = remarketinglist
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RemarketingListsUpdateCall) Fields(s ...googleapi.Field) *RemarketingListsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RemarketingListsUpdateCall) Context(ctx context.Context) *RemarketingListsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *RemarketingListsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.remarketinglist)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/remarketingLists")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.remarketingLists.update" call.
+// Exactly one of *RemarketingList or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *RemarketingList.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RemarketingListsUpdateCall) Do(opts ...googleapi.CallOption) (*RemarketingList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &RemarketingList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing remarketing list.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.remarketingLists.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/remarketingLists",
+	//   "request": {
+	//     "$ref": "RemarketingList"
+	//   },
+	//   "response": {
+	//     "$ref": "RemarketingList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.reports.delete":
+
+type ReportsDeleteCall struct {
+	s          *Service
+	profileId  int64
+	reportId   int64
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes a report by its ID.
+func (r *ReportsService) Delete(profileId int64, reportId int64) *ReportsDeleteCall {
+	c := &ReportsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.reportId = reportId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ReportsDeleteCall) Fields(s ...googleapi.Field) *ReportsDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ReportsDeleteCall) Context(ctx context.Context) *ReportsDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ReportsDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/reports/{reportId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"reportId":  strconv.FormatInt(c.reportId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.reports.delete" call.
+func (c *ReportsDeleteCall) Do(opts ...googleapi.CallOption) error {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if err != nil {
+		return err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return err
+	}
+	return nil
+	// {
+	//   "description": "Deletes a report by its ID.",
+	//   "httpMethod": "DELETE",
+	//   "id": "dfareporting.reports.delete",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "reportId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "The DFA user profile ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "reportId": {
+	//       "description": "The ID of the report.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/reports/{reportId}",
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.reports.get":
+
+type ReportsGetCall struct {
+	s            *Service
+	profileId    int64
+	reportId     int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Retrieves a report by its ID.
+func (r *ReportsService) Get(profileId int64, reportId int64) *ReportsGetCall {
+	c := &ReportsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.reportId = reportId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ReportsGetCall) Fields(s ...googleapi.Field) *ReportsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ReportsGetCall) IfNoneMatch(entityTag string) *ReportsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ReportsGetCall) Context(ctx context.Context) *ReportsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ReportsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/reports/{reportId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"reportId":  strconv.FormatInt(c.reportId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.reports.get" call.
+// Exactly one of *Report or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Report.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ReportsGetCall) Do(opts ...googleapi.CallOption) (*Report, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Report{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a report by its ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.reports.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "reportId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "The DFA user profile ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "reportId": {
+	//       "description": "The ID of the report.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/reports/{reportId}",
+	//   "response": {
+	//     "$ref": "Report"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.reports.insert":
+
+type ReportsInsertCall struct {
+	s          *Service
+	profileId  int64
+	report     *Report
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Insert: Creates a report.
+func (r *ReportsService) Insert(profileId int64, report *Report) *ReportsInsertCall {
+	c := &ReportsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.report = report
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ReportsInsertCall) Fields(s ...googleapi.Field) *ReportsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ReportsInsertCall) Context(ctx context.Context) *ReportsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ReportsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.report)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/reports")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.reports.insert" call.
+// Exactly one of *Report or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Report.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ReportsInsertCall) Do(opts ...googleapi.CallOption) (*Report, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Report{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates a report.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.reports.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "The DFA user profile ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/reports",
+	//   "request": {
+	//     "$ref": "Report"
+	//   },
+	//   "response": {
+	//     "$ref": "Report"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.reports.list":
+
+type ReportsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves list of reports.
+func (r *ReportsService) List(profileId int64) *ReportsListCall {
+	c := &ReportsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *ReportsListCall) MaxResults(maxResults int64) *ReportsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The value of the
+// nextToken from the previous result page.
+func (c *ReportsListCall) PageToken(pageToken string) *ReportsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Scope sets the optional parameter "scope": The scope that defines
+// which results are returned, default is 'MINE'.
+//
+// Possible values:
+//   "ALL" - All reports in account.
+//   "MINE" (default) - My reports.
+func (c *ReportsListCall) Scope(scope string) *ReportsListCall {
+	c.urlParams_.Set("scope", scope)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": The field by which
+// to sort the list.
+//
+// Possible values:
+//   "ID" - Sort by report ID.
+//   "LAST_MODIFIED_TIME" (default) - Sort by 'lastModifiedTime' field.
+//   "NAME" - Sort by name of reports.
+func (c *ReportsListCall) SortField(sortField string) *ReportsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is 'DESCENDING'.
+//
+// Possible values:
+//   "ASCENDING" - Ascending order.
+//   "DESCENDING" (default) - Descending order.
+func (c *ReportsListCall) SortOrder(sortOrder string) *ReportsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ReportsListCall) Fields(s ...googleapi.Field) *ReportsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ReportsListCall) IfNoneMatch(entityTag string) *ReportsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ReportsListCall) Context(ctx context.Context) *ReportsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ReportsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/reports")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.reports.list" call.
+// Exactly one of *ReportList or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *ReportList.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ReportsListCall) Do(opts ...googleapi.CallOption) (*ReportList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ReportList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves list of reports.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.reports.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "maximum": "10",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The value of the nextToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "The DFA user profile ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "scope": {
+	//       "default": "MINE",
+	//       "description": "The scope that defines which results are returned, default is 'MINE'.",
+	//       "enum": [
+	//         "ALL",
+	//         "MINE"
+	//       ],
+	//       "enumDescriptions": [
+	//         "All reports in account.",
+	//         "My reports."
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "default": "LAST_MODIFIED_TIME",
+	//       "description": "The field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "LAST_MODIFIED_TIME",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "Sort by report ID.",
+	//         "Sort by 'lastModifiedTime' field.",
+	//         "Sort by name of reports."
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "default": "DESCENDING",
+	//       "description": "Order of sorted results, default is 'DESCENDING'.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "Ascending order.",
+	//         "Descending order."
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/reports",
+	//   "response": {
+	//     "$ref": "ReportList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ReportsListCall) Pages(ctx context.Context, f func(*ReportList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.reports.patch":
+
+type ReportsPatchCall struct {
+	s          *Service
+	profileId  int64
+	reportId   int64
+	report     *Report
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Patch: Updates a report. This method supports patch semantics.
+func (r *ReportsService) Patch(profileId int64, reportId int64, report *Report) *ReportsPatchCall {
+	c := &ReportsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.reportId = reportId
+	c.report = report
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ReportsPatchCall) Fields(s ...googleapi.Field) *ReportsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ReportsPatchCall) Context(ctx context.Context) *ReportsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ReportsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.report)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/reports/{reportId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"reportId":  strconv.FormatInt(c.reportId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.reports.patch" call.
+// Exactly one of *Report or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Report.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ReportsPatchCall) Do(opts ...googleapi.CallOption) (*Report, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Report{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates a report. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.reports.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "reportId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "The DFA user profile ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "reportId": {
+	//       "description": "The ID of the report.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/reports/{reportId}",
+	//   "request": {
+	//     "$ref": "Report"
+	//   },
+	//   "response": {
+	//     "$ref": "Report"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.reports.run":
+
+type ReportsRunCall struct {
+	s          *Service
+	profileId  int64
+	reportId   int64
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Run: Runs a report.
+func (r *ReportsService) Run(profileId int64, reportId int64) *ReportsRunCall {
+	c := &ReportsRunCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.reportId = reportId
+	return c
+}
+
+// Synchronous sets the optional parameter "synchronous": If set and
+// true, tries to run the report synchronously.
+func (c *ReportsRunCall) Synchronous(synchronous bool) *ReportsRunCall {
+	c.urlParams_.Set("synchronous", fmt.Sprint(synchronous))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ReportsRunCall) Fields(s ...googleapi.Field) *ReportsRunCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ReportsRunCall) Context(ctx context.Context) *ReportsRunCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ReportsRunCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/reports/{reportId}/run")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"reportId":  strconv.FormatInt(c.reportId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.reports.run" call.
+// Exactly one of *File or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *File.ServerResponse.Header or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *ReportsRunCall) Do(opts ...googleapi.CallOption) (*File, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &File{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Runs a report.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.reports.run",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "reportId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "The DFA profile ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "reportId": {
+	//       "description": "The ID of the report.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "synchronous": {
+	//       "description": "If set and true, tries to run the report synchronously.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/reports/{reportId}/run",
+	//   "response": {
+	//     "$ref": "File"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.reports.update":
+
+type ReportsUpdateCall struct {
+	s          *Service
+	profileId  int64
+	reportId   int64
+	report     *Report
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Update: Updates a report.
+func (r *ReportsService) Update(profileId int64, reportId int64, report *Report) *ReportsUpdateCall {
+	c := &ReportsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.reportId = reportId
+	c.report = report
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ReportsUpdateCall) Fields(s ...googleapi.Field) *ReportsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ReportsUpdateCall) Context(ctx context.Context) *ReportsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ReportsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.report)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/reports/{reportId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"reportId":  strconv.FormatInt(c.reportId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.reports.update" call.
+// Exactly one of *Report or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Report.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ReportsUpdateCall) Do(opts ...googleapi.CallOption) (*Report, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Report{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates a report.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.reports.update",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "reportId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "The DFA user profile ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "reportId": {
+	//       "description": "The ID of the report.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/reports/{reportId}",
+	//   "request": {
+	//     "$ref": "Report"
+	//   },
+	//   "response": {
+	//     "$ref": "Report"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.reports.compatibleFields.query":
+
+type ReportsCompatibleFieldsQueryCall struct {
+	s          *Service
+	profileId  int64
+	report     *Report
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Query: Returns the fields that are compatible to be selected in the
+// respective sections of a report criteria, given the fields already
+// selected in the input report and user permissions.
+func (r *ReportsCompatibleFieldsService) Query(profileId int64, report *Report) *ReportsCompatibleFieldsQueryCall {
+	c := &ReportsCompatibleFieldsQueryCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.report = report
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ReportsCompatibleFieldsQueryCall) Fields(s ...googleapi.Field) *ReportsCompatibleFieldsQueryCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ReportsCompatibleFieldsQueryCall) Context(ctx context.Context) *ReportsCompatibleFieldsQueryCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ReportsCompatibleFieldsQueryCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.report)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/reports/compatiblefields/query")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.reports.compatibleFields.query" call.
+// Exactly one of *CompatibleFields or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *CompatibleFields.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ReportsCompatibleFieldsQueryCall) Do(opts ...googleapi.CallOption) (*CompatibleFields, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &CompatibleFields{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Returns the fields that are compatible to be selected in the respective sections of a report criteria, given the fields already selected in the input report and user permissions.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.reports.compatibleFields.query",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "The DFA user profile ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/reports/compatiblefields/query",
+	//   "request": {
+	//     "$ref": "Report"
+	//   },
+	//   "response": {
+	//     "$ref": "CompatibleFields"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.reports.files.get":
+
+type ReportsFilesGetCall struct {
+	s            *Service
+	profileId    int64
+	reportId     int64
+	fileId       int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Retrieves a report file.
+func (r *ReportsFilesService) Get(profileId int64, reportId int64, fileId int64) *ReportsFilesGetCall {
+	c := &ReportsFilesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.reportId = reportId
+	c.fileId = fileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ReportsFilesGetCall) Fields(s ...googleapi.Field) *ReportsFilesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ReportsFilesGetCall) IfNoneMatch(entityTag string) *ReportsFilesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do and Download
+// methods. Any pending HTTP request will be aborted if the provided
+// context is canceled.
+func (c *ReportsFilesGetCall) Context(ctx context.Context) *ReportsFilesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ReportsFilesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/reports/{reportId}/files/{fileId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"reportId":  strconv.FormatInt(c.reportId, 10),
+		"fileId":    strconv.FormatInt(c.fileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Download fetches the API endpoint's "media" value, instead of the normal
+// API response value. If the returned error is nil, the Response is guaranteed to
+// have a 2xx status code. Callers must close the Response.Body as usual.
+func (c *ReportsFilesGetCall) Download(opts ...googleapi.CallOption) (*http.Response, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("media")
+	if err != nil {
+		return nil, err
+	}
+	if err := googleapi.CheckMediaResponse(res); err != nil {
+		res.Body.Close()
+		return nil, err
+	}
+	return res, nil
+}
+
+// Do executes the "dfareporting.reports.files.get" call.
+// Exactly one of *File or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *File.ServerResponse.Header or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *ReportsFilesGetCall) Do(opts ...googleapi.CallOption) (*File, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &File{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a report file.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.reports.files.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "reportId",
+	//     "fileId"
+	//   ],
+	//   "parameters": {
+	//     "fileId": {
+	//       "description": "The ID of the report file.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "The DFA profile ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "reportId": {
+	//       "description": "The ID of the report.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/reports/{reportId}/files/{fileId}",
+	//   "response": {
+	//     "$ref": "File"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting"
+	//   ],
+	//   "supportsMediaDownload": true
+	// }
+
+}
+
+// method id "dfareporting.reports.files.list":
+
+type ReportsFilesListCall struct {
+	s            *Service
+	profileId    int64
+	reportId     int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Lists files for a report.
+func (r *ReportsFilesService) List(profileId int64, reportId int64) *ReportsFilesListCall {
+	c := &ReportsFilesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.reportId = reportId
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *ReportsFilesListCall) MaxResults(maxResults int64) *ReportsFilesListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The value of the
+// nextToken from the previous result page.
+func (c *ReportsFilesListCall) PageToken(pageToken string) *ReportsFilesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": The field by which
+// to sort the list.
+//
+// Possible values:
+//   "ID" - Sort by file ID.
+//   "LAST_MODIFIED_TIME" (default) - Sort by 'lastmodifiedAt' field.
+func (c *ReportsFilesListCall) SortField(sortField string) *ReportsFilesListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is 'DESCENDING'.
+//
+// Possible values:
+//   "ASCENDING" - Ascending order.
+//   "DESCENDING" (default) - Descending order.
+func (c *ReportsFilesListCall) SortOrder(sortOrder string) *ReportsFilesListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ReportsFilesListCall) Fields(s ...googleapi.Field) *ReportsFilesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ReportsFilesListCall) IfNoneMatch(entityTag string) *ReportsFilesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ReportsFilesListCall) Context(ctx context.Context) *ReportsFilesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ReportsFilesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/reports/{reportId}/files")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"reportId":  strconv.FormatInt(c.reportId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.reports.files.list" call.
+// Exactly one of *FileList or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *FileList.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ReportsFilesListCall) Do(opts ...googleapi.CallOption) (*FileList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &FileList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists files for a report.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.reports.files.list",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "reportId"
+	//   ],
+	//   "parameters": {
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "maximum": "10",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The value of the nextToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "The DFA profile ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "reportId": {
+	//       "description": "The ID of the parent report.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "default": "LAST_MODIFIED_TIME",
+	//       "description": "The field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "LAST_MODIFIED_TIME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "Sort by file ID.",
+	//         "Sort by 'lastmodifiedAt' field."
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "default": "DESCENDING",
+	//       "description": "Order of sorted results, default is 'DESCENDING'.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "Ascending order.",
+	//         "Descending order."
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/reports/{reportId}/files",
+	//   "response": {
+	//     "$ref": "FileList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ReportsFilesListCall) Pages(ctx context.Context, f func(*FileList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.sites.get":
+
+type SitesGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one site by ID.
+func (r *SitesService) Get(profileId int64, id int64) *SitesGetCall {
+	c := &SitesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SitesGetCall) Fields(s ...googleapi.Field) *SitesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *SitesGetCall) IfNoneMatch(entityTag string) *SitesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SitesGetCall) Context(ctx context.Context) *SitesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SitesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/sites/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.sites.get" call.
+// Exactly one of *Site or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Site.ServerResponse.Header or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *SitesGetCall) Do(opts ...googleapi.CallOption) (*Site, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Site{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one site by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.sites.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Site ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/sites/{id}",
+	//   "response": {
+	//     "$ref": "Site"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.sites.insert":
+
+type SitesInsertCall struct {
+	s          *Service
+	profileId  int64
+	site       *Site
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Insert: Inserts a new site.
+func (r *SitesService) Insert(profileId int64, site *Site) *SitesInsertCall {
+	c := &SitesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.site = site
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SitesInsertCall) Fields(s ...googleapi.Field) *SitesInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SitesInsertCall) Context(ctx context.Context) *SitesInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SitesInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.site)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/sites")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.sites.insert" call.
+// Exactly one of *Site or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Site.ServerResponse.Header or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *SitesInsertCall) Do(opts ...googleapi.CallOption) (*Site, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Site{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new site.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.sites.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/sites",
+	//   "request": {
+	//     "$ref": "Site"
+	//   },
+	//   "response": {
+	//     "$ref": "Site"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.sites.list":
+
+type SitesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of sites, possibly filtered.
+func (r *SitesService) List(profileId int64) *SitesListCall {
+	c := &SitesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// AcceptsInStreamVideoPlacements sets the optional parameter
+// "acceptsInStreamVideoPlacements": This search filter is no longer
+// supported and will have no effect on the results returned.
+func (c *SitesListCall) AcceptsInStreamVideoPlacements(acceptsInStreamVideoPlacements bool) *SitesListCall {
+	c.urlParams_.Set("acceptsInStreamVideoPlacements", fmt.Sprint(acceptsInStreamVideoPlacements))
+	return c
+}
+
+// AcceptsInterstitialPlacements sets the optional parameter
+// "acceptsInterstitialPlacements": This search filter is no longer
+// supported and will have no effect on the results returned.
+func (c *SitesListCall) AcceptsInterstitialPlacements(acceptsInterstitialPlacements bool) *SitesListCall {
+	c.urlParams_.Set("acceptsInterstitialPlacements", fmt.Sprint(acceptsInterstitialPlacements))
+	return c
+}
+
+// AcceptsPublisherPaidPlacements sets the optional parameter
+// "acceptsPublisherPaidPlacements": Select only sites that accept
+// publisher paid placements.
+func (c *SitesListCall) AcceptsPublisherPaidPlacements(acceptsPublisherPaidPlacements bool) *SitesListCall {
+	c.urlParams_.Set("acceptsPublisherPaidPlacements", fmt.Sprint(acceptsPublisherPaidPlacements))
+	return c
+}
+
+// AdWordsSite sets the optional parameter "adWordsSite": Select only
+// AdWords sites.
+func (c *SitesListCall) AdWordsSite(adWordsSite bool) *SitesListCall {
+	c.urlParams_.Set("adWordsSite", fmt.Sprint(adWordsSite))
+	return c
+}
+
+// Approved sets the optional parameter "approved": Select only approved
+// sites.
+func (c *SitesListCall) Approved(approved bool) *SitesListCall {
+	c.urlParams_.Set("approved", fmt.Sprint(approved))
+	return c
+}
+
+// CampaignIds sets the optional parameter "campaignIds": Select only
+// sites with these campaign IDs.
+func (c *SitesListCall) CampaignIds(campaignIds ...int64) *SitesListCall {
+	var campaignIds_ []string
+	for _, v := range campaignIds {
+		campaignIds_ = append(campaignIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("campaignIds", campaignIds_)
+	return c
+}
+
+// DirectorySiteIds sets the optional parameter "directorySiteIds":
+// Select only sites with these directory site IDs.
+func (c *SitesListCall) DirectorySiteIds(directorySiteIds ...int64) *SitesListCall {
+	var directorySiteIds_ []string
+	for _, v := range directorySiteIds {
+		directorySiteIds_ = append(directorySiteIds_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("directorySiteIds", directorySiteIds_)
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only sites with these
+// IDs.
+func (c *SitesListCall) Ids(ids ...int64) *SitesListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *SitesListCall) MaxResults(maxResults int64) *SitesListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *SitesListCall) PageToken(pageToken string) *SitesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name, ID or keyName. Wildcards (*) are
+// allowed. For example, "site*2015" will return objects with names like
+// "site June 2015", "site April 2015", or simply "site 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 "site" will
+// match objects with name "my site", "site 2015", or simply "site".
+func (c *SitesListCall) SearchString(searchString string) *SitesListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *SitesListCall) SortField(sortField string) *SitesListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *SitesListCall) SortOrder(sortOrder string) *SitesListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// SubaccountId sets the optional parameter "subaccountId": Select only
+// sites with this subaccount ID.
+func (c *SitesListCall) SubaccountId(subaccountId int64) *SitesListCall {
+	c.urlParams_.Set("subaccountId", fmt.Sprint(subaccountId))
+	return c
+}
+
+// UnmappedSite sets the optional parameter "unmappedSite": Select only
+// sites that have not been mapped to a directory site.
+func (c *SitesListCall) UnmappedSite(unmappedSite bool) *SitesListCall {
+	c.urlParams_.Set("unmappedSite", fmt.Sprint(unmappedSite))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SitesListCall) Fields(s ...googleapi.Field) *SitesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *SitesListCall) IfNoneMatch(entityTag string) *SitesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SitesListCall) Context(ctx context.Context) *SitesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SitesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/sites")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.sites.list" call.
+// Exactly one of *SitesListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *SitesListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *SitesListCall) Do(opts ...googleapi.CallOption) (*SitesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &SitesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of sites, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.sites.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "acceptsInStreamVideoPlacements": {
+	//       "description": "This search filter is no longer supported and will have no effect on the results returned.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "acceptsInterstitialPlacements": {
+	//       "description": "This search filter is no longer supported and will have no effect on the results returned.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "acceptsPublisherPaidPlacements": {
+	//       "description": "Select only sites that accept publisher paid placements.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "adWordsSite": {
+	//       "description": "Select only AdWords sites.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "approved": {
+	//       "description": "Select only approved sites.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "campaignIds": {
+	//       "description": "Select only sites with these campaign IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "directorySiteIds": {
+	//       "description": "Select only sites with these directory site IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "ids": {
+	//       "description": "Select only sites with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name, ID or keyName. Wildcards (*) are allowed. For example, \"site*2015\" will return objects with names like \"site June 2015\", \"site April 2015\", or simply \"site 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 \"site\" will match objects with name \"my site\", \"site 2015\", or simply \"site\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "subaccountId": {
+	//       "description": "Select only sites with this subaccount ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "unmappedSite": {
+	//       "description": "Select only sites that have not been mapped to a directory site.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/sites",
+	//   "response": {
+	//     "$ref": "SitesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *SitesListCall) Pages(ctx context.Context, f func(*SitesListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.sites.patch":
+
+type SitesPatchCall struct {
+	s          *Service
+	profileId  int64
+	site       *Site
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Patch: Updates an existing site. This method supports patch
+// semantics.
+func (r *SitesService) Patch(profileId int64, id int64, site *Site) *SitesPatchCall {
+	c := &SitesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.site = site
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SitesPatchCall) Fields(s ...googleapi.Field) *SitesPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SitesPatchCall) Context(ctx context.Context) *SitesPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SitesPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.site)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/sites")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.sites.patch" call.
+// Exactly one of *Site or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Site.ServerResponse.Header or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *SitesPatchCall) Do(opts ...googleapi.CallOption) (*Site, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Site{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing site. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.sites.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Site ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/sites",
+	//   "request": {
+	//     "$ref": "Site"
+	//   },
+	//   "response": {
+	//     "$ref": "Site"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.sites.update":
+
+type SitesUpdateCall struct {
+	s          *Service
+	profileId  int64
+	site       *Site
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Update: Updates an existing site.
+func (r *SitesService) Update(profileId int64, site *Site) *SitesUpdateCall {
+	c := &SitesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.site = site
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SitesUpdateCall) Fields(s ...googleapi.Field) *SitesUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SitesUpdateCall) Context(ctx context.Context) *SitesUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SitesUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.site)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/sites")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.sites.update" call.
+// Exactly one of *Site or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Site.ServerResponse.Header or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *SitesUpdateCall) Do(opts ...googleapi.CallOption) (*Site, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Site{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing site.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.sites.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/sites",
+	//   "request": {
+	//     "$ref": "Site"
+	//   },
+	//   "response": {
+	//     "$ref": "Site"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.sizes.get":
+
+type SizesGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one size by ID.
+func (r *SizesService) Get(profileId int64, id int64) *SizesGetCall {
+	c := &SizesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SizesGetCall) Fields(s ...googleapi.Field) *SizesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *SizesGetCall) IfNoneMatch(entityTag string) *SizesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SizesGetCall) Context(ctx context.Context) *SizesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SizesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/sizes/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.sizes.get" call.
+// Exactly one of *Size or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Size.ServerResponse.Header or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *SizesGetCall) Do(opts ...googleapi.CallOption) (*Size, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Size{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one size by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.sizes.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Size ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/sizes/{id}",
+	//   "response": {
+	//     "$ref": "Size"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.sizes.insert":
+
+type SizesInsertCall struct {
+	s          *Service
+	profileId  int64
+	size       *Size
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Insert: Inserts a new size.
+func (r *SizesService) Insert(profileId int64, size *Size) *SizesInsertCall {
+	c := &SizesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.size = size
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SizesInsertCall) Fields(s ...googleapi.Field) *SizesInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SizesInsertCall) Context(ctx context.Context) *SizesInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SizesInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.size)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/sizes")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.sizes.insert" call.
+// Exactly one of *Size or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Size.ServerResponse.Header or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *SizesInsertCall) Do(opts ...googleapi.CallOption) (*Size, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Size{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new size.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.sizes.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/sizes",
+	//   "request": {
+	//     "$ref": "Size"
+	//   },
+	//   "response": {
+	//     "$ref": "Size"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.sizes.list":
+
+type SizesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of sizes, possibly filtered.
+func (r *SizesService) List(profileId int64) *SizesListCall {
+	c := &SizesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Height sets the optional parameter "height": Select only sizes with
+// this height.
+func (c *SizesListCall) Height(height int64) *SizesListCall {
+	c.urlParams_.Set("height", fmt.Sprint(height))
+	return c
+}
+
+// IabStandard sets the optional parameter "iabStandard": Select only
+// IAB standard sizes.
+func (c *SizesListCall) IabStandard(iabStandard bool) *SizesListCall {
+	c.urlParams_.Set("iabStandard", fmt.Sprint(iabStandard))
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only sizes with these
+// IDs.
+func (c *SizesListCall) Ids(ids ...int64) *SizesListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// Width sets the optional parameter "width": Select only sizes with
+// this width.
+func (c *SizesListCall) Width(width int64) *SizesListCall {
+	c.urlParams_.Set("width", fmt.Sprint(width))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SizesListCall) Fields(s ...googleapi.Field) *SizesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *SizesListCall) IfNoneMatch(entityTag string) *SizesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SizesListCall) Context(ctx context.Context) *SizesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SizesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/sizes")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.sizes.list" call.
+// Exactly one of *SizesListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *SizesListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *SizesListCall) Do(opts ...googleapi.CallOption) (*SizesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &SizesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of sizes, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.sizes.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "height": {
+	//       "description": "Select only sizes with this height.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "iabStandard": {
+	//       "description": "Select only IAB standard sizes.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "ids": {
+	//       "description": "Select only sizes with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "width": {
+	//       "description": "Select only sizes with this width.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/sizes",
+	//   "response": {
+	//     "$ref": "SizesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.subaccounts.get":
+
+type SubaccountsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one subaccount by ID.
+func (r *SubaccountsService) Get(profileId int64, id int64) *SubaccountsGetCall {
+	c := &SubaccountsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SubaccountsGetCall) Fields(s ...googleapi.Field) *SubaccountsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *SubaccountsGetCall) IfNoneMatch(entityTag string) *SubaccountsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SubaccountsGetCall) Context(ctx context.Context) *SubaccountsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SubaccountsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/subaccounts/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.subaccounts.get" call.
+// Exactly one of *Subaccount or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Subaccount.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *SubaccountsGetCall) Do(opts ...googleapi.CallOption) (*Subaccount, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Subaccount{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one subaccount by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.subaccounts.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Subaccount ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/subaccounts/{id}",
+	//   "response": {
+	//     "$ref": "Subaccount"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.subaccounts.insert":
+
+type SubaccountsInsertCall struct {
+	s          *Service
+	profileId  int64
+	subaccount *Subaccount
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Insert: Inserts a new subaccount.
+func (r *SubaccountsService) Insert(profileId int64, subaccount *Subaccount) *SubaccountsInsertCall {
+	c := &SubaccountsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.subaccount = subaccount
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SubaccountsInsertCall) Fields(s ...googleapi.Field) *SubaccountsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SubaccountsInsertCall) Context(ctx context.Context) *SubaccountsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SubaccountsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.subaccount)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/subaccounts")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.subaccounts.insert" call.
+// Exactly one of *Subaccount or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Subaccount.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *SubaccountsInsertCall) Do(opts ...googleapi.CallOption) (*Subaccount, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Subaccount{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new subaccount.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.subaccounts.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/subaccounts",
+	//   "request": {
+	//     "$ref": "Subaccount"
+	//   },
+	//   "response": {
+	//     "$ref": "Subaccount"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.subaccounts.list":
+
+type SubaccountsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Gets a list of subaccounts, possibly filtered.
+func (r *SubaccountsService) List(profileId int64) *SubaccountsListCall {
+	c := &SubaccountsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only subaccounts with
+// these IDs.
+func (c *SubaccountsListCall) Ids(ids ...int64) *SubaccountsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *SubaccountsListCall) MaxResults(maxResults int64) *SubaccountsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *SubaccountsListCall) PageToken(pageToken string) *SubaccountsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name or ID. Wildcards (*) are allowed. For
+// example, "subaccount*2015" will return objects with names like
+// "subaccount June 2015", "subaccount April 2015", or simply
+// "subaccount 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 "subaccount" will match objects with name "my subaccount",
+// "subaccount 2015", or simply "subaccount".
+func (c *SubaccountsListCall) SearchString(searchString string) *SubaccountsListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *SubaccountsListCall) SortField(sortField string) *SubaccountsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *SubaccountsListCall) SortOrder(sortOrder string) *SubaccountsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SubaccountsListCall) Fields(s ...googleapi.Field) *SubaccountsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *SubaccountsListCall) IfNoneMatch(entityTag string) *SubaccountsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SubaccountsListCall) Context(ctx context.Context) *SubaccountsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SubaccountsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/subaccounts")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.subaccounts.list" call.
+// Exactly one of *SubaccountsListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *SubaccountsListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *SubaccountsListCall) Do(opts ...googleapi.CallOption) (*SubaccountsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &SubaccountsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets a list of subaccounts, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.subaccounts.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "ids": {
+	//       "description": "Select only subaccounts with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"subaccount*2015\" will return objects with names like \"subaccount June 2015\", \"subaccount April 2015\", or simply \"subaccount 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 \"subaccount\" will match objects with name \"my subaccount\", \"subaccount 2015\", or simply \"subaccount\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/subaccounts",
+	//   "response": {
+	//     "$ref": "SubaccountsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *SubaccountsListCall) Pages(ctx context.Context, f func(*SubaccountsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.subaccounts.patch":
+
+type SubaccountsPatchCall struct {
+	s          *Service
+	profileId  int64
+	subaccount *Subaccount
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Patch: Updates an existing subaccount. This method supports patch
+// semantics.
+func (r *SubaccountsService) Patch(profileId int64, id int64, subaccount *Subaccount) *SubaccountsPatchCall {
+	c := &SubaccountsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.subaccount = subaccount
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SubaccountsPatchCall) Fields(s ...googleapi.Field) *SubaccountsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SubaccountsPatchCall) Context(ctx context.Context) *SubaccountsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SubaccountsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.subaccount)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/subaccounts")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.subaccounts.patch" call.
+// Exactly one of *Subaccount or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Subaccount.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *SubaccountsPatchCall) Do(opts ...googleapi.CallOption) (*Subaccount, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Subaccount{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing subaccount. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.subaccounts.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Subaccount ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/subaccounts",
+	//   "request": {
+	//     "$ref": "Subaccount"
+	//   },
+	//   "response": {
+	//     "$ref": "Subaccount"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.subaccounts.update":
+
+type SubaccountsUpdateCall struct {
+	s          *Service
+	profileId  int64
+	subaccount *Subaccount
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Update: Updates an existing subaccount.
+func (r *SubaccountsService) Update(profileId int64, subaccount *Subaccount) *SubaccountsUpdateCall {
+	c := &SubaccountsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.subaccount = subaccount
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SubaccountsUpdateCall) Fields(s ...googleapi.Field) *SubaccountsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SubaccountsUpdateCall) Context(ctx context.Context) *SubaccountsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *SubaccountsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.subaccount)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/subaccounts")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.subaccounts.update" call.
+// Exactly one of *Subaccount or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Subaccount.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *SubaccountsUpdateCall) Do(opts ...googleapi.CallOption) (*Subaccount, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Subaccount{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing subaccount.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.subaccounts.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/subaccounts",
+	//   "request": {
+	//     "$ref": "Subaccount"
+	//   },
+	//   "response": {
+	//     "$ref": "Subaccount"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.targetableRemarketingLists.get":
+
+type TargetableRemarketingListsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one remarketing list by ID.
+func (r *TargetableRemarketingListsService) Get(profileId int64, id int64) *TargetableRemarketingListsGetCall {
+	c := &TargetableRemarketingListsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *TargetableRemarketingListsGetCall) Fields(s ...googleapi.Field) *TargetableRemarketingListsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *TargetableRemarketingListsGetCall) IfNoneMatch(entityTag string) *TargetableRemarketingListsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *TargetableRemarketingListsGetCall) Context(ctx context.Context) *TargetableRemarketingListsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *TargetableRemarketingListsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/targetableRemarketingLists/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.targetableRemarketingLists.get" call.
+// Exactly one of *TargetableRemarketingList or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *TargetableRemarketingList.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *TargetableRemarketingListsGetCall) Do(opts ...googleapi.CallOption) (*TargetableRemarketingList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &TargetableRemarketingList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one remarketing list by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.targetableRemarketingLists.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "Remarketing list ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/targetableRemarketingLists/{id}",
+	//   "response": {
+	//     "$ref": "TargetableRemarketingList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.targetableRemarketingLists.list":
+
+type TargetableRemarketingListsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of targetable remarketing lists, possibly
+// filtered.
+func (r *TargetableRemarketingListsService) List(profileId int64, advertiserId int64) *TargetableRemarketingListsListCall {
+	c := &TargetableRemarketingListsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("advertiserId", fmt.Sprint(advertiserId))
+	return c
+}
+
+// Active sets the optional parameter "active": Select only active or
+// only inactive targetable remarketing lists.
+func (c *TargetableRemarketingListsListCall) Active(active bool) *TargetableRemarketingListsListCall {
+	c.urlParams_.Set("active", fmt.Sprint(active))
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *TargetableRemarketingListsListCall) MaxResults(maxResults int64) *TargetableRemarketingListsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// Name sets the optional parameter "name": Allows searching for objects
+// by name or ID. Wildcards (*) are allowed. For example, "remarketing
+// list*2015" will return objects with names like "remarketing list June
+// 2015", "remarketing list April 2015", or simply "remarketing list
+// 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 "remarketing list" will match objects with name "my remarketing
+// list", "remarketing list 2015", or simply "remarketing list".
+func (c *TargetableRemarketingListsListCall) Name(name string) *TargetableRemarketingListsListCall {
+	c.urlParams_.Set("name", name)
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *TargetableRemarketingListsListCall) PageToken(pageToken string) *TargetableRemarketingListsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *TargetableRemarketingListsListCall) SortField(sortField string) *TargetableRemarketingListsListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *TargetableRemarketingListsListCall) SortOrder(sortOrder string) *TargetableRemarketingListsListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *TargetableRemarketingListsListCall) Fields(s ...googleapi.Field) *TargetableRemarketingListsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *TargetableRemarketingListsListCall) IfNoneMatch(entityTag string) *TargetableRemarketingListsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *TargetableRemarketingListsListCall) Context(ctx context.Context) *TargetableRemarketingListsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *TargetableRemarketingListsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/targetableRemarketingLists")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.targetableRemarketingLists.list" call.
+// Exactly one of *TargetableRemarketingListsListResponse or error will
+// be non-nil. Any non-2xx status code is an error. Response headers are
+// in either
+// *TargetableRemarketingListsListResponse.ServerResponse.Header or (if
+// a response was returned at all) in error.(*googleapi.Error).Header.
+// Use googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *TargetableRemarketingListsListCall) Do(opts ...googleapi.CallOption) (*TargetableRemarketingListsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &TargetableRemarketingListsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of targetable remarketing lists, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.targetableRemarketingLists.list",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "advertiserId"
+	//   ],
+	//   "parameters": {
+	//     "active": {
+	//       "description": "Select only active or only inactive targetable remarketing lists.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "advertiserId": {
+	//       "description": "Select only targetable remarketing lists targetable by these advertisers.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "name": {
+	//       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"remarketing list*2015\" will return objects with names like \"remarketing list June 2015\", \"remarketing list April 2015\", or simply \"remarketing list 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 \"remarketing list\" will match objects with name \"my remarketing list\", \"remarketing list 2015\", or simply \"remarketing list\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/targetableRemarketingLists",
+	//   "response": {
+	//     "$ref": "TargetableRemarketingListsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *TargetableRemarketingListsListCall) Pages(ctx context.Context, f func(*TargetableRemarketingListsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.userProfiles.get":
+
+type UserProfilesGetCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one user profile by ID.
+func (r *UserProfilesService) Get(profileId int64) *UserProfilesGetCall {
+	c := &UserProfilesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *UserProfilesGetCall) Fields(s ...googleapi.Field) *UserProfilesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *UserProfilesGetCall) IfNoneMatch(entityTag string) *UserProfilesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *UserProfilesGetCall) Context(ctx context.Context) *UserProfilesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *UserProfilesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.userProfiles.get" call.
+// Exactly one of *UserProfile or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *UserProfile.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *UserProfilesGetCall) Do(opts ...googleapi.CallOption) (*UserProfile, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UserProfile{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one user profile by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.userProfiles.get",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "The user profile ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}",
+	//   "response": {
+	//     "$ref": "UserProfile"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting",
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.userProfiles.list":
+
+type UserProfilesListCall struct {
+	s            *Service
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves list of user profiles for a user.
+func (r *UserProfilesService) List() *UserProfilesListCall {
+	c := &UserProfilesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *UserProfilesListCall) Fields(s ...googleapi.Field) *UserProfilesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *UserProfilesListCall) IfNoneMatch(entityTag string) *UserProfilesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *UserProfilesListCall) Context(ctx context.Context) *UserProfilesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *UserProfilesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.SetOpaque(req.URL)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.userProfiles.list" call.
+// Exactly one of *UserProfileList or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *UserProfileList.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *UserProfilesListCall) Do(opts ...googleapi.CallOption) (*UserProfileList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UserProfileList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves list of user profiles for a user.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.userProfiles.list",
+	//   "path": "userprofiles",
+	//   "response": {
+	//     "$ref": "UserProfileList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfareporting",
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.userRolePermissionGroups.get":
+
+type UserRolePermissionGroupsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one user role permission group by ID.
+func (r *UserRolePermissionGroupsService) Get(profileId int64, id int64) *UserRolePermissionGroupsGetCall {
+	c := &UserRolePermissionGroupsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *UserRolePermissionGroupsGetCall) Fields(s ...googleapi.Field) *UserRolePermissionGroupsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *UserRolePermissionGroupsGetCall) IfNoneMatch(entityTag string) *UserRolePermissionGroupsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *UserRolePermissionGroupsGetCall) Context(ctx context.Context) *UserRolePermissionGroupsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *UserRolePermissionGroupsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/userRolePermissionGroups/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.userRolePermissionGroups.get" call.
+// Exactly one of *UserRolePermissionGroup or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *UserRolePermissionGroup.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *UserRolePermissionGroupsGetCall) Do(opts ...googleapi.CallOption) (*UserRolePermissionGroup, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UserRolePermissionGroup{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one user role permission group by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.userRolePermissionGroups.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "User role permission group ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/userRolePermissionGroups/{id}",
+	//   "response": {
+	//     "$ref": "UserRolePermissionGroup"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.userRolePermissionGroups.list":
+
+type UserRolePermissionGroupsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Gets a list of all supported user role permission groups.
+func (r *UserRolePermissionGroupsService) List(profileId int64) *UserRolePermissionGroupsListCall {
+	c := &UserRolePermissionGroupsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *UserRolePermissionGroupsListCall) Fields(s ...googleapi.Field) *UserRolePermissionGroupsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *UserRolePermissionGroupsListCall) IfNoneMatch(entityTag string) *UserRolePermissionGroupsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *UserRolePermissionGroupsListCall) Context(ctx context.Context) *UserRolePermissionGroupsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *UserRolePermissionGroupsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/userRolePermissionGroups")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.userRolePermissionGroups.list" call.
+// Exactly one of *UserRolePermissionGroupsListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *UserRolePermissionGroupsListResponse.ServerResponse.Header or
+// (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *UserRolePermissionGroupsListCall) Do(opts ...googleapi.CallOption) (*UserRolePermissionGroupsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UserRolePermissionGroupsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets a list of all supported user role permission groups.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.userRolePermissionGroups.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/userRolePermissionGroups",
+	//   "response": {
+	//     "$ref": "UserRolePermissionGroupsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.userRolePermissions.get":
+
+type UserRolePermissionsGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one user role permission by ID.
+func (r *UserRolePermissionsService) Get(profileId int64, id int64) *UserRolePermissionsGetCall {
+	c := &UserRolePermissionsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *UserRolePermissionsGetCall) Fields(s ...googleapi.Field) *UserRolePermissionsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *UserRolePermissionsGetCall) IfNoneMatch(entityTag string) *UserRolePermissionsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *UserRolePermissionsGetCall) Context(ctx context.Context) *UserRolePermissionsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *UserRolePermissionsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/userRolePermissions/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.userRolePermissions.get" call.
+// Exactly one of *UserRolePermission or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *UserRolePermission.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *UserRolePermissionsGetCall) Do(opts ...googleapi.CallOption) (*UserRolePermission, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UserRolePermission{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one user role permission by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.userRolePermissions.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "User role permission ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/userRolePermissions/{id}",
+	//   "response": {
+	//     "$ref": "UserRolePermission"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.userRolePermissions.list":
+
+type UserRolePermissionsListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Gets a list of user role permissions, possibly filtered.
+func (r *UserRolePermissionsService) List(profileId int64) *UserRolePermissionsListCall {
+	c := &UserRolePermissionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only user role
+// permissions with these IDs.
+func (c *UserRolePermissionsListCall) Ids(ids ...int64) *UserRolePermissionsListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *UserRolePermissionsListCall) Fields(s ...googleapi.Field) *UserRolePermissionsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *UserRolePermissionsListCall) IfNoneMatch(entityTag string) *UserRolePermissionsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *UserRolePermissionsListCall) Context(ctx context.Context) *UserRolePermissionsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *UserRolePermissionsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/userRolePermissions")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.userRolePermissions.list" call.
+// Exactly one of *UserRolePermissionsListResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *UserRolePermissionsListResponse.ServerResponse.Header or (if
+// a response was returned at all) in error.(*googleapi.Error).Header.
+// Use googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *UserRolePermissionsListCall) Do(opts ...googleapi.CallOption) (*UserRolePermissionsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UserRolePermissionsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets a list of user role permissions, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.userRolePermissions.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "ids": {
+	//       "description": "Select only user role permissions with these IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/userRolePermissions",
+	//   "response": {
+	//     "$ref": "UserRolePermissionsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.userRoles.delete":
+
+type UserRolesDeleteCall struct {
+	s          *Service
+	profileId  int64
+	id         int64
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes an existing user role.
+func (r *UserRolesService) Delete(profileId int64, id int64) *UserRolesDeleteCall {
+	c := &UserRolesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *UserRolesDeleteCall) Fields(s ...googleapi.Field) *UserRolesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *UserRolesDeleteCall) Context(ctx context.Context) *UserRolesDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *UserRolesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/userRoles/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.userRoles.delete" call.
+func (c *UserRolesDeleteCall) Do(opts ...googleapi.CallOption) error {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if err != nil {
+		return err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return err
+	}
+	return nil
+	// {
+	//   "description": "Deletes an existing user role.",
+	//   "httpMethod": "DELETE",
+	//   "id": "dfareporting.userRoles.delete",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "User role ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/userRoles/{id}",
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.userRoles.get":
+
+type UserRolesGetCall struct {
+	s            *Service
+	profileId    int64
+	id           int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets one user role by ID.
+func (r *UserRolesService) Get(profileId int64, id int64) *UserRolesGetCall {
+	c := &UserRolesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.id = id
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *UserRolesGetCall) Fields(s ...googleapi.Field) *UserRolesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *UserRolesGetCall) IfNoneMatch(entityTag string) *UserRolesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *UserRolesGetCall) Context(ctx context.Context) *UserRolesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *UserRolesGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/userRoles/{id}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+		"id":        strconv.FormatInt(c.id, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.userRoles.get" call.
+// Exactly one of *UserRole or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *UserRole.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *UserRolesGetCall) Do(opts ...googleapi.CallOption) (*UserRole, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UserRole{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets one user role by ID.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.userRoles.get",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "User role ID.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/userRoles/{id}",
+	//   "response": {
+	//     "$ref": "UserRole"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.userRoles.insert":
+
+type UserRolesInsertCall struct {
+	s          *Service
+	profileId  int64
+	userrole   *UserRole
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Insert: Inserts a new user role.
+func (r *UserRolesService) Insert(profileId int64, userrole *UserRole) *UserRolesInsertCall {
+	c := &UserRolesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.userrole = userrole
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *UserRolesInsertCall) Fields(s ...googleapi.Field) *UserRolesInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *UserRolesInsertCall) Context(ctx context.Context) *UserRolesInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *UserRolesInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.userrole)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/userRoles")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.userRoles.insert" call.
+// Exactly one of *UserRole or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *UserRole.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *UserRolesInsertCall) Do(opts ...googleapi.CallOption) (*UserRole, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UserRole{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Inserts a new user role.",
+	//   "httpMethod": "POST",
+	//   "id": "dfareporting.userRoles.insert",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/userRoles",
+	//   "request": {
+	//     "$ref": "UserRole"
+	//   },
+	//   "response": {
+	//     "$ref": "UserRole"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.userRoles.list":
+
+type UserRolesListCall struct {
+	s            *Service
+	profileId    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Retrieves a list of user roles, possibly filtered.
+func (r *UserRolesService) List(profileId int64) *UserRolesListCall {
+	c := &UserRolesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	return c
+}
+
+// AccountUserRoleOnly sets the optional parameter
+// "accountUserRoleOnly": Select only account level user roles not
+// associated with any specific subaccount.
+func (c *UserRolesListCall) AccountUserRoleOnly(accountUserRoleOnly bool) *UserRolesListCall {
+	c.urlParams_.Set("accountUserRoleOnly", fmt.Sprint(accountUserRoleOnly))
+	return c
+}
+
+// Ids sets the optional parameter "ids": Select only user roles with
+// the specified IDs.
+func (c *UserRolesListCall) Ids(ids ...int64) *UserRolesListCall {
+	var ids_ []string
+	for _, v := range ids {
+		ids_ = append(ids_, fmt.Sprint(v))
+	}
+	c.urlParams_.SetMulti("ids", ids_)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": Maximum number
+// of results to return.
+func (c *UserRolesListCall) MaxResults(maxResults int64) *UserRolesListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Value of the
+// nextPageToken from the previous result page.
+func (c *UserRolesListCall) PageToken(pageToken string) *UserRolesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// SearchString sets the optional parameter "searchString": Allows
+// searching for objects by name or ID. Wildcards (*) are allowed. For
+// example, "userrole*2015" will return objects with names like
+// "userrole June 2015", "userrole April 2015", or simply "userrole
+// 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 "userrole" will match objects with name "my userrole", "userrole
+// 2015", or simply "userrole".
+func (c *UserRolesListCall) SearchString(searchString string) *UserRolesListCall {
+	c.urlParams_.Set("searchString", searchString)
+	return c
+}
+
+// SortField sets the optional parameter "sortField": Field by which to
+// sort the list.
+//
+// Possible values:
+//   "ID"
+//   "NAME"
+func (c *UserRolesListCall) SortField(sortField string) *UserRolesListCall {
+	c.urlParams_.Set("sortField", sortField)
+	return c
+}
+
+// SortOrder sets the optional parameter "sortOrder": Order of sorted
+// results, default is ASCENDING.
+//
+// Possible values:
+//   "ASCENDING"
+//   "DESCENDING"
+func (c *UserRolesListCall) SortOrder(sortOrder string) *UserRolesListCall {
+	c.urlParams_.Set("sortOrder", sortOrder)
+	return c
+}
+
+// SubaccountId sets the optional parameter "subaccountId": Select only
+// user roles that belong to this subaccount.
+func (c *UserRolesListCall) SubaccountId(subaccountId int64) *UserRolesListCall {
+	c.urlParams_.Set("subaccountId", fmt.Sprint(subaccountId))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *UserRolesListCall) Fields(s ...googleapi.Field) *UserRolesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *UserRolesListCall) IfNoneMatch(entityTag string) *UserRolesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *UserRolesListCall) Context(ctx context.Context) *UserRolesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *UserRolesListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/userRoles")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.userRoles.list" call.
+// Exactly one of *UserRolesListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *UserRolesListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *UserRolesListCall) Do(opts ...googleapi.CallOption) (*UserRolesListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UserRolesListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves a list of user roles, possibly filtered.",
+	//   "httpMethod": "GET",
+	//   "id": "dfareporting.userRoles.list",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "accountUserRoleOnly": {
+	//       "description": "Select only account level user roles not associated with any specific subaccount.",
+	//       "location": "query",
+	//       "type": "boolean"
+	//     },
+	//     "ids": {
+	//       "description": "Select only user roles with the specified IDs.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "description": "Maximum number of results to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Value of the nextPageToken from the previous result page.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "searchString": {
+	//       "description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"userrole*2015\" will return objects with names like \"userrole June 2015\", \"userrole April 2015\", or simply \"userrole 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 \"userrole\" will match objects with name \"my userrole\", \"userrole 2015\", or simply \"userrole\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortField": {
+	//       "description": "Field by which to sort the list.",
+	//       "enum": [
+	//         "ID",
+	//         "NAME"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sortOrder": {
+	//       "description": "Order of sorted results, default is ASCENDING.",
+	//       "enum": [
+	//         "ASCENDING",
+	//         "DESCENDING"
+	//       ],
+	//       "enumDescriptions": [
+	//         "",
+	//         ""
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "subaccountId": {
+	//       "description": "Select only user roles that belong to this subaccount.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/userRoles",
+	//   "response": {
+	//     "$ref": "UserRolesListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *UserRolesListCall) Pages(ctx context.Context, f func(*UserRolesListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "dfareporting.userRoles.patch":
+
+type UserRolesPatchCall struct {
+	s          *Service
+	profileId  int64
+	userrole   *UserRole
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Patch: Updates an existing user role. This method supports patch
+// semantics.
+func (r *UserRolesService) Patch(profileId int64, id int64, userrole *UserRole) *UserRolesPatchCall {
+	c := &UserRolesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.urlParams_.Set("id", fmt.Sprint(id))
+	c.userrole = userrole
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *UserRolesPatchCall) Fields(s ...googleapi.Field) *UserRolesPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *UserRolesPatchCall) Context(ctx context.Context) *UserRolesPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *UserRolesPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.userrole)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/userRoles")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.userRoles.patch" call.
+// Exactly one of *UserRole or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *UserRole.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *UserRolesPatchCall) Do(opts ...googleapi.CallOption) (*UserRole, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UserRole{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing user role. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "dfareporting.userRoles.patch",
+	//   "parameterOrder": [
+	//     "profileId",
+	//     "id"
+	//   ],
+	//   "parameters": {
+	//     "id": {
+	//       "description": "User role ID.",
+	//       "format": "int64",
+	//       "location": "query",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/userRoles",
+	//   "request": {
+	//     "$ref": "UserRole"
+	//   },
+	//   "response": {
+	//     "$ref": "UserRole"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
+
+// method id "dfareporting.userRoles.update":
+
+type UserRolesUpdateCall struct {
+	s          *Service
+	profileId  int64
+	userrole   *UserRole
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Update: Updates an existing user role.
+func (r *UserRolesService) Update(profileId int64, userrole *UserRole) *UserRolesUpdateCall {
+	c := &UserRolesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.profileId = profileId
+	c.userrole = userrole
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *UserRolesUpdateCall) Fields(s ...googleapi.Field) *UserRolesUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *UserRolesUpdateCall) Context(ctx context.Context) *UserRolesUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *UserRolesUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.userrole)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "userprofiles/{profileId}/userRoles")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"profileId": strconv.FormatInt(c.profileId, 10),
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "dfareporting.userRoles.update" call.
+// Exactly one of *UserRole or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *UserRole.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *UserRolesUpdateCall) Do(opts ...googleapi.CallOption) (*UserRole, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UserRole{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an existing user role.",
+	//   "httpMethod": "PUT",
+	//   "id": "dfareporting.userRoles.update",
+	//   "parameterOrder": [
+	//     "profileId"
+	//   ],
+	//   "parameters": {
+	//     "profileId": {
+	//       "description": "User profile ID associated with this request.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "userprofiles/{profileId}/userRoles",
+	//   "request": {
+	//     "$ref": "UserRole"
+	//   },
+	//   "response": {
+	//     "$ref": "UserRole"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/dfatrafficking"
+	//   ]
+	// }
+
+}
diff --git a/doubleclickbidmanager/v1/doubleclickbidmanager-api.json b/doubleclickbidmanager/v1/doubleclickbidmanager-api.json
index ed98ffb..08d58e8 100644
--- a/doubleclickbidmanager/v1/doubleclickbidmanager-api.json
+++ b/doubleclickbidmanager/v1/doubleclickbidmanager-api.json
@@ -1,12 +1,12 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/mAPHdimW0pvTGXzTTcUsJfk40xQ\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/KspyYaNMMXkE18eGep174M1_JMc\"",
  "discoveryVersion": "v1",
  "id": "doubleclickbidmanager:v1",
  "name": "doubleclickbidmanager",
  "canonicalName": "DoubleClick Bid Manager",
  "version": "v1",
- "revision": "20150925",
+ "revision": "20160120",
  "title": "DoubleClick Bid Manager API",
  "description": "API for viewing and managing your reports in DoubleClick Bid Manager.",
  "ownerDomain": "google.com",
@@ -165,6 +165,7 @@
       "FILTER_DATA_PROVIDER",
       "FILTER_DATE",
       "FILTER_DAY_OF_WEEK",
+      "FILTER_DFP_ORDER_ID",
       "FILTER_DMA",
       "FILTER_EXCHANGE_ID",
       "FILTER_FLOODLIGHT_PIXEL_ID",
@@ -202,7 +203,14 @@
       "FILTER_SITE_LANGUAGE",
       "FILTER_TARGETED_USER_LIST",
       "FILTER_TIME_OF_DAY",
+      "FILTER_TRUEVIEW_AD_GROUP_AD_ID",
+      "FILTER_TRUEVIEW_AD_GROUP_ID",
+      "FILTER_TRUEVIEW_AGE",
       "FILTER_TRUEVIEW_CONVERSION_TYPE",
+      "FILTER_TRUEVIEW_GENDER",
+      "FILTER_TRUEVIEW_INTEREST",
+      "FILTER_TRUEVIEW_PARENTAL_STATUS",
+      "FILTER_TRUEVIEW_REMARKETING_LIST",
       "FILTER_UNKNOWN",
       "FILTER_USER_LIST",
       "FILTER_USER_LIST_FIRST_PARTY",
@@ -305,6 +313,14 @@
       "",
       "",
       "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
       ""
      ]
     },
@@ -352,6 +368,65 @@
     }
    }
   },
+  "Note": {
+   "id": "Note",
+   "type": "object",
+   "description": "Publisher comment from Rubicon.",
+   "properties": {
+    "id": {
+     "type": "string",
+     "description": "Note id.",
+     "format": "int64"
+    },
+    "message": {
+     "type": "string",
+     "description": "Message from publisher."
+    },
+    "source": {
+     "type": "string",
+     "description": "Equals \"publisher\" for notification from Rubicon."
+    },
+    "timestamp": {
+     "type": "string",
+     "description": "Time when the note was added, e.g. \"2015-12-16T17:25:35.000-08:00\"."
+    },
+    "username": {
+     "type": "string",
+     "description": "Publisher user name."
+    }
+   }
+  },
+  "NotifyProposalChangeRequest": {
+   "id": "NotifyProposalChangeRequest",
+   "type": "object",
+   "description": "NotifyProposalChange request.",
+   "properties": {
+    "action": {
+     "type": "string",
+     "description": "Action taken by publisher. One of: Accept, Decline, Append"
+    },
+    "href": {
+     "type": "string",
+     "description": "URL to access proposal detail."
+    },
+    "id": {
+     "type": "string",
+     "description": "Below are contents of notification from Rubicon. Proposal id.",
+     "format": "int64"
+    },
+    "notes": {
+     "type": "array",
+     "description": "Notes from publisher",
+     "items": {
+      "$ref": "Note"
+     }
+    },
+    "token": {
+     "type": "string",
+     "description": "Deal token, available when proposal is accepted by publisher."
+    }
+   }
+  },
   "Parameters": {
    "id": "Parameters",
    "type": "object",
@@ -393,6 +468,7 @@
        "FILTER_DATA_PROVIDER",
        "FILTER_DATE",
        "FILTER_DAY_OF_WEEK",
+       "FILTER_DFP_ORDER_ID",
        "FILTER_DMA",
        "FILTER_EXCHANGE_ID",
        "FILTER_FLOODLIGHT_PIXEL_ID",
@@ -430,7 +506,14 @@
        "FILTER_SITE_LANGUAGE",
        "FILTER_TARGETED_USER_LIST",
        "FILTER_TIME_OF_DAY",
+       "FILTER_TRUEVIEW_AD_GROUP_AD_ID",
+       "FILTER_TRUEVIEW_AD_GROUP_ID",
+       "FILTER_TRUEVIEW_AGE",
        "FILTER_TRUEVIEW_CONVERSION_TYPE",
+       "FILTER_TRUEVIEW_GENDER",
+       "FILTER_TRUEVIEW_INTEREST",
+       "FILTER_TRUEVIEW_PARENTAL_STATUS",
+       "FILTER_TRUEVIEW_REMARKETING_LIST",
        "FILTER_UNKNOWN",
        "FILTER_USER_LIST",
        "FILTER_USER_LIST_FIRST_PARTY",
@@ -533,6 +616,14 @@
        "",
        "",
        "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
+       "",
        ""
       ]
      }
@@ -1119,6 +1210,9 @@
       "TYPE_NIELSEN_SITE",
       "TYPE_ORDER_ID",
       "TYPE_PAGE_CATEGORY",
+      "TYPE_PETRA_NIELSEN_AUDIENCE_PROFILE",
+      "TYPE_PETRA_NIELSEN_DAILY_REACH_BUILD",
+      "TYPE_PETRA_NIELSEN_ONLINE_GLOBAL_MARKET",
       "TYPE_PIXEL_LOAD",
       "TYPE_REACH_AND_FREQUENCY",
       "TYPE_THIRD_PARTY_DATA_PROVIDER",
@@ -1153,6 +1247,9 @@
       "",
       "",
       "",
+      "",
+      "",
+      "",
       ""
      ]
     }
@@ -1801,6 +1898,19 @@
      }
     }
    }
+  },
+  "rubicon": {
+   "methods": {
+    "notifyproposalchange": {
+     "id": "doubleclickbidmanager.rubicon.notifyproposalchange",
+     "path": "rubicon/notifyproposalchange",
+     "httpMethod": "POST",
+     "description": "Update proposal upon actions of Rubicon publisher.",
+     "request": {
+      "$ref": "NotifyProposalChangeRequest"
+     }
+    }
+   }
   }
  }
 }
diff --git a/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go b/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
index 866fafd..a7ce71b 100644
--- a/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
+++ b/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
@@ -53,6 +53,7 @@
 	s.Lineitems = NewLineitemsService(s)
 	s.Queries = NewQueriesService(s)
 	s.Reports = NewReportsService(s)
+	s.Rubicon = NewRubiconService(s)
 	return s, nil
 }
 
@@ -66,6 +67,8 @@
 	Queries *QueriesService
 
 	Reports *ReportsService
+
+	Rubicon *RubiconService
 }
 
 func (s *Service) userAgent() string {
@@ -102,6 +105,15 @@
 	s *Service
 }
 
+func NewRubiconService(s *Service) *RubiconService {
+	rs := &RubiconService{s: s}
+	return rs
+}
+
+type RubiconService struct {
+	s *Service
+}
+
 // DownloadLineItemsRequest: Request to fetch stored line items.
 type DownloadLineItemsRequest struct {
 	// FileSpec: File specification (column names, types, order) in which
@@ -200,6 +212,7 @@
 	//   "FILTER_DATA_PROVIDER"
 	//   "FILTER_DATE"
 	//   "FILTER_DAY_OF_WEEK"
+	//   "FILTER_DFP_ORDER_ID"
 	//   "FILTER_DMA"
 	//   "FILTER_EXCHANGE_ID"
 	//   "FILTER_FLOODLIGHT_PIXEL_ID"
@@ -237,7 +250,14 @@
 	//   "FILTER_SITE_LANGUAGE"
 	//   "FILTER_TARGETED_USER_LIST"
 	//   "FILTER_TIME_OF_DAY"
+	//   "FILTER_TRUEVIEW_AD_GROUP_AD_ID"
+	//   "FILTER_TRUEVIEW_AD_GROUP_ID"
+	//   "FILTER_TRUEVIEW_AGE"
 	//   "FILTER_TRUEVIEW_CONVERSION_TYPE"
+	//   "FILTER_TRUEVIEW_GENDER"
+	//   "FILTER_TRUEVIEW_INTEREST"
+	//   "FILTER_TRUEVIEW_PARENTAL_STATUS"
+	//   "FILTER_TRUEVIEW_REMARKETING_LIST"
 	//   "FILTER_UNKNOWN"
 	//   "FILTER_USER_LIST"
 	//   "FILTER_USER_LIST_FIRST_PARTY"
@@ -334,6 +354,71 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
+// Note: Publisher comment from Rubicon.
+type Note struct {
+	// Id: Note id.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Message: Message from publisher.
+	Message string `json:"message,omitempty"`
+
+	// Source: Equals "publisher" for notification from Rubicon.
+	Source string `json:"source,omitempty"`
+
+	// Timestamp: Time when the note was added, e.g.
+	// "2015-12-16T17:25:35.000-08:00".
+	Timestamp string `json:"timestamp,omitempty"`
+
+	// Username: Publisher user name.
+	Username string `json:"username,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Note) MarshalJSON() ([]byte, error) {
+	type noMethod Note
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// NotifyProposalChangeRequest: NotifyProposalChange request.
+type NotifyProposalChangeRequest struct {
+	// Action: Action taken by publisher. One of: Accept, Decline, Append
+	Action string `json:"action,omitempty"`
+
+	// Href: URL to access proposal detail.
+	Href string `json:"href,omitempty"`
+
+	// Id: Below are contents of notification from Rubicon. Proposal id.
+	Id int64 `json:"id,omitempty,string"`
+
+	// Notes: Notes from publisher
+	Notes []*Note `json:"notes,omitempty"`
+
+	// Token: Deal token, available when proposal is accepted by publisher.
+	Token string `json:"token,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Action") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *NotifyProposalChangeRequest) MarshalJSON() ([]byte, error) {
+	type noMethod NotifyProposalChangeRequest
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
 // Parameters: Parameters of a query or report.
 type Parameters struct {
 	// Filters: Filters used to match traffic data in your report.
@@ -365,6 +450,7 @@
 	//   "FILTER_DATA_PROVIDER"
 	//   "FILTER_DATE"
 	//   "FILTER_DAY_OF_WEEK"
+	//   "FILTER_DFP_ORDER_ID"
 	//   "FILTER_DMA"
 	//   "FILTER_EXCHANGE_ID"
 	//   "FILTER_FLOODLIGHT_PIXEL_ID"
@@ -402,7 +488,14 @@
 	//   "FILTER_SITE_LANGUAGE"
 	//   "FILTER_TARGETED_USER_LIST"
 	//   "FILTER_TIME_OF_DAY"
+	//   "FILTER_TRUEVIEW_AD_GROUP_AD_ID"
+	//   "FILTER_TRUEVIEW_AD_GROUP_ID"
+	//   "FILTER_TRUEVIEW_AGE"
 	//   "FILTER_TRUEVIEW_CONVERSION_TYPE"
+	//   "FILTER_TRUEVIEW_GENDER"
+	//   "FILTER_TRUEVIEW_INTEREST"
+	//   "FILTER_TRUEVIEW_PARENTAL_STATUS"
+	//   "FILTER_TRUEVIEW_REMARKETING_LIST"
 	//   "FILTER_UNKNOWN"
 	//   "FILTER_USER_LIST"
 	//   "FILTER_USER_LIST_FIRST_PARTY"
@@ -727,6 +820,9 @@
 	//   "TYPE_NIELSEN_SITE"
 	//   "TYPE_ORDER_ID"
 	//   "TYPE_PAGE_CATEGORY"
+	//   "TYPE_PETRA_NIELSEN_AUDIENCE_PROFILE"
+	//   "TYPE_PETRA_NIELSEN_DAILY_REACH_BUILD"
+	//   "TYPE_PETRA_NIELSEN_ONLINE_GLOBAL_MARKET"
 	//   "TYPE_PIXEL_LOAD"
 	//   "TYPE_REACH_AND_FREQUENCY"
 	//   "TYPE_THIRD_PARTY_DATA_PROVIDER"
@@ -2092,3 +2188,80 @@
 	// }
 
 }
+
+// method id "doubleclickbidmanager.rubicon.notifyproposalchange":
+
+type RubiconNotifyproposalchangeCall struct {
+	s                           *Service
+	notifyproposalchangerequest *NotifyProposalChangeRequest
+	urlParams_                  gensupport.URLParams
+	ctx_                        context.Context
+}
+
+// Notifyproposalchange: Update proposal upon actions of Rubicon
+// publisher.
+func (r *RubiconService) Notifyproposalchange(notifyproposalchangerequest *NotifyProposalChangeRequest) *RubiconNotifyproposalchangeCall {
+	c := &RubiconNotifyproposalchangeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.notifyproposalchangerequest = notifyproposalchangerequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RubiconNotifyproposalchangeCall) Fields(s ...googleapi.Field) *RubiconNotifyproposalchangeCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RubiconNotifyproposalchangeCall) Context(ctx context.Context) *RubiconNotifyproposalchangeCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *RubiconNotifyproposalchangeCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.notifyproposalchangerequest)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "rubicon/notifyproposalchange")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.SetOpaque(req.URL)
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "doubleclickbidmanager.rubicon.notifyproposalchange" call.
+func (c *RubiconNotifyproposalchangeCall) Do(opts ...googleapi.CallOption) error {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if err != nil {
+		return err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return err
+	}
+	return nil
+	// {
+	//   "description": "Update proposal upon actions of Rubicon publisher.",
+	//   "httpMethod": "POST",
+	//   "id": "doubleclickbidmanager.rubicon.notifyproposalchange",
+	//   "path": "rubicon/notifyproposalchange",
+	//   "request": {
+	//     "$ref": "NotifyProposalChangeRequest"
+	//   }
+	// }
+
+}
diff --git a/doubleclicksearch/v2/doubleclicksearch-api.json b/doubleclicksearch/v2/doubleclicksearch-api.json
index 141d0e4..a4cbcde 100644
--- a/doubleclicksearch/v2/doubleclicksearch-api.json
+++ b/doubleclicksearch/v2/doubleclicksearch-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/IqdXrCTpjSmZFXSBXY45cncPQLw\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/OS7nslfb4yg0ai-w-2gDHYQ_QWg\"",
  "discoveryVersion": "v1",
  "id": "doubleclicksearch:v2",
  "name": "doubleclicksearch",
  "version": "v2",
- "revision": "20160108",
+ "revision": "20160128",
  "title": "DoubleClick Search API",
  "description": "Report and modify your advertising data in DoubleClick Search (for example, campaigns, ad groups, keywords, and conversions).",
  "ownerDomain": "google.com",
@@ -272,7 +272,7 @@
     },
     "revenueMicros": {
      "type": "string",
-     "description": "The revenue amount of this TRANSACTION conversion, in micros.",
+     "description": "The revenue amount of this TRANSACTION conversion, in micros (value multiplied by 1000, no decimal). For example, to specify a revenue value of \"10\" enter \"10000\" in your request.",
      "format": "int64"
     },
     "segmentationId": {
diff --git a/doubleclicksearch/v2/doubleclicksearch-gen.go b/doubleclicksearch/v2/doubleclicksearch-gen.go
index aca9a7e..c5b4f46 100644
--- a/doubleclicksearch/v2/doubleclicksearch-gen.go
+++ b/doubleclicksearch/v2/doubleclicksearch-gen.go
@@ -245,7 +245,8 @@
 	QuantityMillis int64 `json:"quantityMillis,omitempty,string"`
 
 	// RevenueMicros: The revenue amount of this TRANSACTION conversion, in
-	// micros.
+	// micros (value multiplied by 1000, no decimal). For example, to
+	// specify a revenue value of "10" enter "10000" in your request.
 	RevenueMicros int64 `json:"revenueMicros,omitempty,string"`
 
 	// SegmentationId: The numeric segmentation identifier (for example,
diff --git a/games/v1/games-api.json b/games/v1/games-api.json
index c560378..c52c633 100644
--- a/games/v1/games-api.json
+++ b/games/v1/games-api.json
@@ -1,12 +1,12 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/73GJPN3P2kptICUph8Z5MgNGZxg\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/5YhPCKzLNdEgK_jc0g8uwLvYt6A\"",
  "discoveryVersion": "v1",
  "id": "games:v1",
  "name": "games",
  "canonicalName": "Games",
  "version": "v1",
- "revision": "20151202",
+ "revision": "20160127",
  "title": "Google Play Game Services API",
  "description": "The API for Google Play Game Services.",
  "ownerDomain": "google.com",
@@ -77,7 +77,7 @@
      "description": "Share your Google+ profile information and view and manage your game activity"
     },
     "https://www.googleapis.com/auth/plus.login": {
-     "description": "Know your basic profile info and list of people in your circles."
+     "description": "Know the list of people in your circles, your age range, and language"
     }
    }
   }
@@ -1387,6 +1387,10 @@
       }
      }
     },
+    "originalPlayerId": {
+     "type": "string",
+     "description": "The player ID that was used for this player the first time they signed into the game in question. This is only populated for calls to player.get for the requesting player, only if the player ID has subsequently changed, and only to clients that support remapping player IDs."
+    },
     "playerId": {
      "type": "string",
      "description": "The ID of the player."
@@ -3589,12 +3593,14 @@
        "enum": [
         "connected",
         "playedWith",
-        "played_with"
+        "played_with",
+        "visible"
        ],
        "enumDescriptions": [
         "Retrieve a list of players that are also playing this game in reverse chronological order.",
         "(DEPRECATED: please use played_with!) Retrieve a list of players you have played a multiplayer game (realtime or turn-based) with recently.",
-        "Retrieve a list of players you have played a multiplayer game (realtime or turn-based) with recently."
+        "Retrieve a list of players you have played a multiplayer game (realtime or turn-based) with recently.",
+        "Retrieve a list of players in the user's social graph that are visible to this game."
        ],
        "location": "path"
       },
diff --git a/games/v1/games-gen.go b/games/v1/games-gen.go
index d405885..ec533a1 100644
--- a/games/v1/games-gen.go
+++ b/games/v1/games-gen.go
@@ -54,7 +54,7 @@
 	// activity
 	GamesScope = "https://www.googleapis.com/auth/games"
 
-	// Know your basic profile info and list of people in your circles.
+	// Know the list of people in your circles, your age range, and language
 	PlusLoginScope = "https://www.googleapis.com/auth/plus.login"
 )
 
@@ -1942,6 +1942,13 @@
 	// player's name. For some players, these fields may not be present.
 	Name *PlayerName `json:"name,omitempty"`
 
+	// OriginalPlayerId: The player ID that was used for this player the
+	// first time they signed into the game in question. This is only
+	// populated for calls to player.get for the requesting player, only if
+	// the player ID has subsequently changed, and only to clients that
+	// support remapping player IDs.
+	OriginalPlayerId string `json:"originalPlayerId,omitempty"`
+
 	// PlayerId: The ID of the player.
 	PlayerId string `json:"playerId,omitempty"`
 
@@ -6883,12 +6890,14 @@
 	//       "enum": [
 	//         "connected",
 	//         "playedWith",
-	//         "played_with"
+	//         "played_with",
+	//         "visible"
 	//       ],
 	//       "enumDescriptions": [
 	//         "Retrieve a list of players that are also playing this game in reverse chronological order.",
 	//         "(DEPRECATED: please use played_with!) Retrieve a list of players you have played a multiplayer game (realtime or turn-based) with recently.",
-	//         "Retrieve a list of players you have played a multiplayer game (realtime or turn-based) with recently."
+	//         "Retrieve a list of players you have played a multiplayer game (realtime or turn-based) with recently.",
+	//         "Retrieve a list of players in the user's social graph that are visible to this game."
 	//       ],
 	//       "location": "path",
 	//       "required": true,
diff --git a/gamesmanagement/v1management/gamesmanagement-api.json b/gamesmanagement/v1management/gamesmanagement-api.json
index 9ffa053..31d4086 100644
--- a/gamesmanagement/v1management/gamesmanagement-api.json
+++ b/gamesmanagement/v1management/gamesmanagement-api.json
@@ -1,12 +1,12 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/JuFctzv7DbhH8sUX0olMhZkcdjY\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/03JbCoHD4kokI3MZJGmWPXhRI6U\"",
  "discoveryVersion": "v1",
  "id": "gamesManagement:v1management",
  "name": "gamesManagement",
  "canonicalName": "Games Management",
  "version": "v1management",
- "revision": "20151110",
+ "revision": "20160127",
  "title": "Google Play Game Services Management API",
  "description": "The Management API for Google Play Game Services.",
  "ownerDomain": "google.com",
@@ -74,7 +74,7 @@
      "description": "Share your Google+ profile information and view and manage your game activity"
     },
     "https://www.googleapis.com/auth/plus.login": {
-     "description": "Know your basic profile info and list of people in your circles."
+     "description": "Know the list of people in your circles, your age range, and language"
     }
    }
   }
@@ -316,6 +316,10 @@
       }
      }
     },
+    "originalPlayerId": {
+     "type": "string",
+     "description": "The player ID that was used for this player the first time they signed into the game in question. This is only populated for calls to player.get for the requesting player, only if the player ID has subsequently changed, and only to clients that support remapping player IDs."
+    },
     "playerId": {
      "type": "string",
      "description": "The ID of the player."
diff --git a/gamesmanagement/v1management/gamesmanagement-gen.go b/gamesmanagement/v1management/gamesmanagement-gen.go
index e72ec6b..7b5f2f5 100644
--- a/gamesmanagement/v1management/gamesmanagement-gen.go
+++ b/gamesmanagement/v1management/gamesmanagement-gen.go
@@ -51,7 +51,7 @@
 	// activity
 	GamesScope = "https://www.googleapis.com/auth/games"
 
-	// Know your basic profile info and list of people in your circles.
+	// Know the list of people in your circles, your age range, and language
 	PlusLoginScope = "https://www.googleapis.com/auth/plus.login"
 )
 
@@ -473,6 +473,13 @@
 	// player's name. For some players, these fields may not be present.
 	Name *PlayerName `json:"name,omitempty"`
 
+	// OriginalPlayerId: The player ID that was used for this player the
+	// first time they signed into the game in question. This is only
+	// populated for calls to player.get for the requesting player, only if
+	// the player ID has subsequently changed, and only to clients that
+	// support remapping player IDs.
+	OriginalPlayerId string `json:"originalPlayerId,omitempty"`
+
 	// PlayerId: The ID of the player.
 	PlayerId string `json:"playerId,omitempty"`
 
diff --git a/genomics/v1/genomics-api.json b/genomics/v1/genomics-api.json
index 332bf12..6709f51 100644
--- a/genomics/v1/genomics-api.json
+++ b/genomics/v1/genomics-api.json
@@ -1,13 +1,13 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/OVujCQzhZ931jG0vYyKKGBx2DuQ\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/bF6CblGktCNgwXLGZ1ZwPL6iIgQ\"",
  "discoveryVersion": "v1",
  "id": "genomics:v1",
  "name": "genomics",
  "version": "v1",
- "revision": "20160106",
+ "revision": "20160202",
  "title": "Genomics API",
- "description": "An API to store, process, explore, and share genomic data. It supports reference-based alignements, genetic variants, and reference genomes. This API provides an implementation of the Global Alliance for Genomics and Health (GA4GH) v0.5.1 API as well as several extensions.",
+ "description": "An API to store, process, explore, and share genomic data. It supports reference-based alignments, genetic variants, and reference genomes. This API provides an implementation of the Global Alliance for Genomics and Health (GA4GH) v0.5.1 API as well as several extensions.",
  "ownerDomain": "google.com",
  "ownerName": "Google",
  "icons": {
@@ -200,6 +200,12 @@
       "$ref": "Binding"
      }
     },
+    "rules": {
+     "type": "array",
+     "items": {
+      "$ref": "Rule"
+     }
+    },
     "etag": {
      "type": "string",
      "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.",
@@ -225,6 +231,162 @@
     }
    }
   },
+  "Rule": {
+   "id": "Rule",
+   "type": "object",
+   "description": "A rule to be applied in a Policy.",
+   "properties": {
+    "description": {
+     "type": "string",
+     "description": "Human-readable description of the rule."
+    },
+    "permissions": {
+     "type": "array",
+     "description": "A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.",
+     "items": {
+      "type": "string"
+     }
+    },
+    "action": {
+     "type": "string",
+     "description": "Required",
+     "enum": [
+      "NO_ACTION",
+      "ALLOW",
+      "ALLOW_WITH_LOG",
+      "DENY",
+      "DENY_WITH_LOG",
+      "LOG"
+     ]
+    },
+    "in": {
+     "type": "array",
+     "description": "The rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in this set of entries.",
+     "items": {
+      "type": "string"
+     }
+    },
+    "notIn": {
+     "type": "array",
+     "description": "The rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is not in this set of entries. The format for in and not_in entries is the same as for members in a Binding (see google/iam/v1/policy.proto).",
+     "items": {
+      "type": "string"
+     }
+    },
+    "conditions": {
+     "type": "array",
+     "description": "Additional restrictions that must be met",
+     "items": {
+      "$ref": "Condition"
+     }
+    },
+    "logConfig": {
+     "type": "array",
+     "description": "The config returned to callers of tech.iam.IAM.CheckPolicy for any entries that match the LOG action.",
+     "items": {
+      "$ref": "LogConfig"
+     }
+    }
+   }
+  },
+  "Condition": {
+   "id": "Condition",
+   "type": "object",
+   "description": "A condition to be met.",
+   "properties": {
+    "iam": {
+     "type": "string",
+     "description": "Trusted attributes supplied by the IAM system.",
+     "enum": [
+      "NO_ATTR",
+      "AUTHORITY",
+      "ATTRIBUTION"
+     ]
+    },
+    "sys": {
+     "type": "string",
+     "description": "Trusted attributes supplied by any service that owns resources and uses the IAM system for access control.",
+     "enum": [
+      "NO_ATTR",
+      "REGION",
+      "SERVICE",
+      "NAME",
+      "IP"
+     ]
+    },
+    "svc": {
+     "type": "string",
+     "description": "Trusted attributes discharged by the service."
+    },
+    "op": {
+     "type": "string",
+     "description": "An operator to apply the subject with.",
+     "enum": [
+      "NO_OP",
+      "EQUALS",
+      "NOT_EQUALS",
+      "IN",
+      "NOT_IN",
+      "DISCHARGED"
+     ]
+    },
+    "value": {
+     "type": "string",
+     "description": "The object of the condition. Exactly one of these must be set."
+    },
+    "values": {
+     "type": "array",
+     "description": "The objects of the condition. This is mutually exclusive with 'value'.",
+     "items": {
+      "type": "string"
+     }
+    }
+   }
+  },
+  "LogConfig": {
+   "id": "LogConfig",
+   "type": "object",
+   "description": "Specifies what kind of log the caller must write Increment a streamz counter with the specified metric and field names. Metric names should start with a '/', generally be lowercase-only, and end in \"_count\". Field names should not contain an initial slash. The actual exported metric names will have \"/iam/policy\" prepended. Field names correspond to IAM request parameters and field values are their respective values. At present only \"iam_principal\", corresponding to IAMContext.principal, is supported. Examples: counter { metric: \"/debug_access_count\" field: \"iam_principal\" } ==\u003e increment counter /iam/policy/backend_debug_access_count {iam_principal=[value of IAMContext.principal]} At this time we do not support: * multiple field names (though this may be supported in the future) * decrementing the counter * incrementing it by anything other than 1",
+   "properties": {
+    "counter": {
+     "$ref": "CounterOptions",
+     "description": "Counter options."
+    },
+    "dataAccess": {
+     "$ref": "DataAccessOptions",
+     "description": "Data access options."
+    },
+    "cloudAudit": {
+     "$ref": "CloudAuditOptions",
+     "description": "Cloud audit options."
+    }
+   }
+  },
+  "CounterOptions": {
+   "id": "CounterOptions",
+   "type": "object",
+   "description": "Options for counters",
+   "properties": {
+    "metric": {
+     "type": "string",
+     "description": "The metric to update."
+    },
+    "field": {
+     "type": "string",
+     "description": "The field value to attribute."
+    }
+   }
+  },
+  "DataAccessOptions": {
+   "id": "DataAccessOptions",
+   "type": "object",
+   "description": "Write a Data Access (Gin) log"
+  },
+  "CloudAuditOptions": {
+   "id": "CloudAuditOptions",
+   "type": "object",
+   "description": "Write a Cloud Audit log"
+  },
   "GetIamPolicyRequest": {
    "id": "GetIamPolicyRequest",
    "type": "object",
@@ -2073,7 +2235,7 @@
      "id": "genomics.readgroupsets.import",
      "path": "v1/readgroupsets:import",
      "httpMethod": "POST",
-     "description": "Creates read group sets by asynchronously importing the provided information. For the definitions of read group sets and other genomics resources, see [Fundamentals of Google Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) The caller must have WRITE permissions to the dataset. ## Notes on [BAM](https://samtools.github.io/hts-specs/SAMv1.pdf) import - Tags will be converted to strings - tag types are not preserved - Comments (`@CO`) in the input file header will not be preserved - Original header order of references (`@SQ`) will not be preserved - Any reverse stranded unmapped reads will be reverse complemented, and their qualities (and \"BQ\" tag, if any) will be reversed - Unmapped reads will be stripped of positional information (reference name and position)",
+     "description": "Creates read group sets by asynchronously importing the provided information. For the definitions of read group sets and other genomics resources, see [Fundamentals of Google Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) The caller must have WRITE permissions to the dataset. ## Notes on [BAM](https://samtools.github.io/hts-specs/SAMv1.pdf) import - Tags will be converted to strings - tag types are not preserved - Comments (`@CO`) in the input file header will not be preserved - Original header order of references (`@SQ`) will not be preserved - Any reverse stranded unmapped reads will be reverse complemented, and their qualities (also the \"BQ\" and \"OQ\" tags, if any) will be reversed - Unmapped reads will be stripped of positional information (reference name and position)",
      "request": {
       "$ref": "ImportReadGroupSetsRequest"
      },
diff --git a/genomics/v1/genomics-gen.go b/genomics/v1/genomics-gen.go
index de541f4..d1dfacd 100644
--- a/genomics/v1/genomics-gen.go
+++ b/genomics/v1/genomics-gen.go
@@ -352,6 +352,90 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
+// CloudAuditOptions: Write a Cloud Audit log
+type CloudAuditOptions struct {
+}
+
+// Condition: A condition to be met.
+type Condition struct {
+	// Iam: Trusted attributes supplied by the IAM system.
+	//
+	// Possible values:
+	//   "NO_ATTR"
+	//   "AUTHORITY"
+	//   "ATTRIBUTION"
+	Iam string `json:"iam,omitempty"`
+
+	// Op: An operator to apply the subject with.
+	//
+	// Possible values:
+	//   "NO_OP"
+	//   "EQUALS"
+	//   "NOT_EQUALS"
+	//   "IN"
+	//   "NOT_IN"
+	//   "DISCHARGED"
+	Op string `json:"op,omitempty"`
+
+	// Svc: Trusted attributes discharged by the service.
+	Svc string `json:"svc,omitempty"`
+
+	// Sys: Trusted attributes supplied by any service that owns resources
+	// and uses the IAM system for access control.
+	//
+	// Possible values:
+	//   "NO_ATTR"
+	//   "REGION"
+	//   "SERVICE"
+	//   "NAME"
+	//   "IP"
+	Sys string `json:"sys,omitempty"`
+
+	// Value: The object of the condition. Exactly one of these must be set.
+	Value string `json:"value,omitempty"`
+
+	// Values: The objects of the condition. This is mutually exclusive with
+	// 'value'.
+	Values []string `json:"values,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Iam") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Condition) MarshalJSON() ([]byte, error) {
+	type noMethod Condition
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CounterOptions: Options for counters
+type CounterOptions struct {
+	// Field: The field value to attribute.
+	Field string `json:"field,omitempty"`
+
+	// Metric: The metric to update.
+	Metric string `json:"metric,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Field") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CounterOptions) MarshalJSON() ([]byte, error) {
+	type noMethod CounterOptions
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
 // CoverageBucket: A bucket over which read coverage has been
 // precomputed. A bucket corresponds to a specific range of the
 // reference sequence.
@@ -378,6 +462,10 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
+// DataAccessOptions: Write a Data Access (Gin) log
+type DataAccessOptions struct {
+}
+
 // Dataset: A Dataset is a collection of genomic data. For more genomics
 // resource definitions, see [Fundamentals of Google
 // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-gen
@@ -832,6 +920,44 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
+// LogConfig: Specifies what kind of log the caller must write Increment
+// a streamz counter with the specified metric and field names. Metric
+// names should start with a '/', generally be lowercase-only, and end
+// in "_count". Field names should not contain an initial slash. The
+// actual exported metric names will have "/iam/policy" prepended. Field
+// names correspond to IAM request parameters and field values are their
+// respective values. At present only "iam_principal", corresponding to
+// IAMContext.principal, is supported. Examples: counter { metric:
+// "/debug_access_count" field: "iam_principal" } ==> increment counter
+// /iam/policy/backend_debug_access_count {iam_principal=[value of
+// IAMContext.principal]} At this time we do not support: * multiple
+// field names (though this may be supported in the future) *
+// decrementing the counter * incrementing it by anything other than 1
+type LogConfig struct {
+	// CloudAudit: Cloud audit options.
+	CloudAudit *CloudAuditOptions `json:"cloudAudit,omitempty"`
+
+	// Counter: Counter options.
+	Counter *CounterOptions `json:"counter,omitempty"`
+
+	// DataAccess: Data access options.
+	DataAccess *DataAccessOptions `json:"dataAccess,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CloudAudit") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *LogConfig) MarshalJSON() ([]byte, error) {
+	type noMethod LogConfig
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
 // Operation: This resource represents a long-running operation that is
 // the result of a network API call.
 type Operation struct {
@@ -967,6 +1093,8 @@
 	// blindly.
 	Etag string `json:"etag,omitempty"`
 
+	Rules []*Rule `json:"rules,omitempty"`
+
 	// Version: Version of the `Policy`. The default version is 0.
 	Version int64 `json:"version,omitempty"`
 
@@ -1516,6 +1644,58 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
+// Rule: A rule to be applied in a Policy.
+type Rule struct {
+	// Action: Required
+	//
+	// Possible values:
+	//   "NO_ACTION"
+	//   "ALLOW"
+	//   "ALLOW_WITH_LOG"
+	//   "DENY"
+	//   "DENY_WITH_LOG"
+	//   "LOG"
+	Action string `json:"action,omitempty"`
+
+	// Conditions: Additional restrictions that must be met
+	Conditions []*Condition `json:"conditions,omitempty"`
+
+	// Description: Human-readable description of the rule.
+	Description string `json:"description,omitempty"`
+
+	// In: The rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in this
+	// set of entries.
+	In []string `json:"in,omitempty"`
+
+	// LogConfig: The config returned to callers of tech.iam.IAM.CheckPolicy
+	// for any entries that match the LOG action.
+	LogConfig []*LogConfig `json:"logConfig,omitempty"`
+
+	// NotIn: The rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is not in
+	// this set of entries. The format for in and not_in entries is the same
+	// as for members in a Binding (see google/iam/v1/policy.proto).
+	NotIn []string `json:"notIn,omitempty"`
+
+	// Permissions: A permission is a string of form '..' (e.g.,
+	// 'storage.buckets.list'). A value of '*' matches all permissions, and
+	// a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.
+	Permissions []string `json:"permissions,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Action") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Rule) MarshalJSON() ([]byte, error) {
+	type noMethod Rule
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
 // SearchCallSetsRequest: The call set search request.
 type SearchCallSetsRequest struct {
 	// Name: Only return call sets for which a substring of the name matches
@@ -5170,9 +5350,9 @@
 // Comments (`@CO`) in the input file header will not be preserved -
 // Original header order of references (`@SQ`) will not be preserved -
 // Any reverse stranded unmapped reads will be reverse complemented, and
-// their qualities (and "BQ" tag, if any) will be reversed - Unmapped
-// reads will be stripped of positional information (reference name and
-// position)
+// their qualities (also the "BQ" and "OQ" tags, if any) will be
+// reversed - Unmapped reads will be stripped of positional information
+// (reference name and position)
 func (r *ReadgroupsetsService) Import(importreadgroupsetsrequest *ImportReadGroupSetsRequest) *ReadgroupsetsImportCall {
 	c := &ReadgroupsetsImportCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.importreadgroupsetsrequest = importreadgroupsetsrequest
@@ -5252,7 +5432,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Creates read group sets by asynchronously importing the provided information. For the definitions of read group sets and other genomics resources, see [Fundamentals of Google Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) The caller must have WRITE permissions to the dataset. ## Notes on [BAM](https://samtools.github.io/hts-specs/SAMv1.pdf) import - Tags will be converted to strings - tag types are not preserved - Comments (`@CO`) in the input file header will not be preserved - Original header order of references (`@SQ`) will not be preserved - Any reverse stranded unmapped reads will be reverse complemented, and their qualities (and \"BQ\" tag, if any) will be reversed - Unmapped reads will be stripped of positional information (reference name and position)",
+	//   "description": "Creates read group sets by asynchronously importing the provided information. For the definitions of read group sets and other genomics resources, see [Fundamentals of Google Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) The caller must have WRITE permissions to the dataset. ## Notes on [BAM](https://samtools.github.io/hts-specs/SAMv1.pdf) import - Tags will be converted to strings - tag types are not preserved - Comments (`@CO`) in the input file header will not be preserved - Original header order of references (`@SQ`) will not be preserved - Any reverse stranded unmapped reads will be reverse complemented, and their qualities (also the \"BQ\" and \"OQ\" tags, if any) will be reversed - Unmapped reads will be stripped of positional information (reference name and position)",
 	//   "httpMethod": "POST",
 	//   "id": "genomics.readgroupsets.import",
 	//   "path": "v1/readgroupsets:import",
diff --git a/genomics/v1alpha2/genomics-api.json b/genomics/v1alpha2/genomics-api.json
new file mode 100644
index 0000000..731ba59
--- /dev/null
+++ b/genomics/v1alpha2/genomics-api.json
@@ -0,0 +1,376 @@
+{
+ "kind": "discovery#restDescription",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/6mSsI0xI9yn9ZnlRcN8kSTObcGc\"",
+ "discoveryVersion": "v1",
+ "id": "genomics:v1alpha2",
+ "name": "genomics",
+ "version": "v1alpha2",
+ "revision": "20160202",
+ "title": "Genomics API",
+ "description": "An API to store, process, explore, and share genomic data. It supports reference-based alignments, genetic variants, and reference genomes. This API provides an implementation of the Global Alliance for Genomics and Health (GA4GH) v0.5.1 API as well as several extensions.",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "icons": {
+  "x16": "http://www.google.com/images/icons/product/search-16.gif",
+  "x32": "http://www.google.com/images/icons/product/search-32.gif"
+ },
+ "documentationLink": "",
+ "protocol": "rest",
+ "baseUrl": "https://genomics.googleapis.com/",
+ "basePath": "",
+ "rootUrl": "https://genomics.googleapis.com/",
+ "servicePath": "",
+ "batchPath": "batch",
+ "parameters": {
+  "access_token": {
+   "type": "string",
+   "description": "OAuth access token.",
+   "location": "query"
+  },
+  "alt": {
+   "type": "string",
+   "description": "Data format for response.",
+   "default": "json",
+   "enumDescriptions": [
+    "Responses with Content-Type of application/json",
+    "Media download with context-dependent Content-Type",
+    "Responses with Content-Type of application/x-protobuf"
+   ],
+   "location": "query"
+  },
+  "bearer_token": {
+   "type": "string",
+   "description": "OAuth bearer token.",
+   "location": "query"
+  },
+  "callback": {
+   "type": "string",
+   "description": "JSONP",
+   "location": "query"
+  },
+  "fields": {
+   "type": "string",
+   "description": "Selector specifying which fields to include in a partial response.",
+   "location": "query"
+  },
+  "key": {
+   "type": "string",
+   "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+   "location": "query"
+  },
+  "oauth_token": {
+   "type": "string",
+   "description": "OAuth 2.0 token for the current user.",
+   "location": "query"
+  },
+  "pp": {
+   "type": "boolean",
+   "description": "Pretty-print response.",
+   "default": "true",
+   "location": "query"
+  },
+  "prettyPrint": {
+   "type": "boolean",
+   "description": "Returns response with indentations and line breaks.",
+   "default": "true",
+   "location": "query"
+  },
+  "quotaUser": {
+   "type": "string",
+   "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+   "location": "query"
+  },
+  "upload_protocol": {
+   "type": "string",
+   "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+   "location": "query"
+  },
+  "uploadType": {
+   "type": "string",
+   "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+   "location": "query"
+  },
+  "$.xgafv": {
+   "type": "string",
+   "description": "V1 error format.",
+   "enumDescriptions": [
+    "v1 error format",
+    "v2 error format"
+   ],
+   "location": "query"
+  }
+ },
+ "auth": {
+  "oauth2": {
+   "scopes": {
+    "https://www.googleapis.com/auth/cloud-platform": {
+     "description": "View and manage your data across Google Cloud Platform services"
+    },
+    "https://www.googleapis.com/auth/genomics": {
+     "description": "View and manage Genomics data"
+    }
+   }
+  }
+ },
+ "schemas": {
+  "Operation": {
+   "id": "Operation",
+   "type": "object",
+   "description": "This resource represents a long-running operation that is the result of a network API call.",
+   "properties": {
+    "name": {
+     "type": "string",
+     "description": "The server-assigned name, which is only unique within the same service that originally returns it. For example: `operations/CJHU7Oi_ChDrveSpBRjfuL-qzoWAgEw`"
+    },
+    "metadata": {
+     "type": "object",
+     "description": "An OperationMetadata object. This will always be returned with the Operation.",
+     "additionalProperties": {
+      "type": "any",
+      "description": "Properties of the object. Contains field @ype with type URL."
+     }
+    },
+    "done": {
+     "type": "boolean",
+     "description": "If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available."
+    },
+    "error": {
+     "$ref": "Status",
+     "description": "The error result of the operation in case of failure."
+    },
+    "response": {
+     "type": "object",
+     "description": "If importing ReadGroupSets, an ImportReadGroupSetsResponse is returned. If importing Variants, an ImportVariantsResponse is returned. For exports, an empty response is returned.",
+     "additionalProperties": {
+      "type": "any",
+      "description": "Properties of the object. Contains field @ype with type URL."
+     }
+    }
+   }
+  },
+  "Status": {
+   "id": "Status",
+   "type": "object",
+   "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons.",
+   "properties": {
+    "code": {
+     "type": "integer",
+     "description": "The status code, which should be an enum value of google.rpc.Code.",
+     "format": "int32"
+    },
+    "message": {
+     "type": "string",
+     "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
+    },
+    "details": {
+     "type": "array",
+     "description": "A list of messages that carry the error details. There will be a common set of message types for APIs to use.",
+     "items": {
+      "type": "object",
+      "additionalProperties": {
+       "type": "any",
+       "description": "Properties of the object. Contains field @ype with type URL."
+      }
+     }
+    }
+   }
+  },
+  "ListOperationsResponse": {
+   "id": "ListOperationsResponse",
+   "type": "object",
+   "description": "The response message for Operations.ListOperations.",
+   "properties": {
+    "operations": {
+     "type": "array",
+     "description": "A list of operations that matches the specified filter in the request.",
+     "items": {
+      "$ref": "Operation"
+     }
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "The standard List next-page token."
+    }
+   }
+  },
+  "CancelOperationRequest": {
+   "id": "CancelOperationRequest",
+   "type": "object",
+   "description": "The request message for Operations.CancelOperation."
+  },
+  "Empty": {
+   "id": "Empty",
+   "type": "object",
+   "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`."
+  },
+  "ImportReadGroupSetsResponse": {
+   "id": "ImportReadGroupSetsResponse",
+   "type": "object",
+   "description": "The read group set import response.",
+   "properties": {
+    "readGroupSetIds": {
+     "type": "array",
+     "description": "IDs of the read group sets that were created.",
+     "items": {
+      "type": "string"
+     }
+    }
+   }
+  },
+  "ImportVariantsResponse": {
+   "id": "ImportVariantsResponse",
+   "type": "object",
+   "description": "The variant data import response.",
+   "properties": {
+    "callSetIds": {
+     "type": "array",
+     "description": "IDs of the call sets created during the import.",
+     "items": {
+      "type": "string"
+     }
+    }
+   }
+  },
+  "OperationMetadata": {
+   "id": "OperationMetadata",
+   "type": "object",
+   "description": "Metadata describing an Operation.",
+   "properties": {
+    "projectId": {
+     "type": "string",
+     "description": "The Google Cloud Project in which the job is scoped."
+    },
+    "createTime": {
+     "type": "string",
+     "description": "The time at which the job was submitted to the Genomics service."
+    },
+    "request": {
+     "type": "object",
+     "description": "The original request that started the operation. Note that this will be in current version of the API. If the operation was started with v1beta2 API and a GetOperation is performed on v1 API, a v1 request will be returned.",
+     "additionalProperties": {
+      "type": "any",
+      "description": "Properties of the object. Contains field @ype with type URL."
+     }
+    },
+    "events": {
+     "type": "array",
+     "description": "Optional event messages that were generated during the job's execution. This also contains any warnings that were generated during import or export.",
+     "items": {
+      "$ref": "OperationEvent"
+     }
+    }
+   }
+  },
+  "OperationEvent": {
+   "id": "OperationEvent",
+   "type": "object",
+   "description": "An event that occurred during an Operation.",
+   "properties": {
+    "description": {
+     "type": "string",
+     "description": "Required description of event."
+    }
+   }
+  }
+ },
+ "resources": {
+  "operations": {
+   "methods": {
+    "get": {
+     "id": "genomics.operations.get",
+     "path": "v1alpha2/{+name}",
+     "httpMethod": "GET",
+     "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+     "parameters": {
+      "name": {
+       "type": "string",
+       "description": "The name of the operation resource.",
+       "required": true,
+       "pattern": "^operations/.*$",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "name"
+     ],
+     "response": {
+      "$ref": "Operation"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/genomics"
+     ]
+    },
+    "list": {
+     "id": "genomics.operations.list",
+     "path": "v1alpha2/{+name}",
+     "httpMethod": "GET",
+     "description": "Lists operations that match the specified filter in the request.",
+     "parameters": {
+      "name": {
+       "type": "string",
+       "description": "The name of the operation collection.",
+       "required": true,
+       "pattern": "^operations$",
+       "location": "path"
+      },
+      "filter": {
+       "type": "string",
+       "description": "A string for filtering Operations. The following filter fields are supported: * projectId: Required. Corresponds to OperationMetadata.projectId. * createTime: The time this job was created, in seconds from the [epoch](http://en.wikipedia.org/wiki/Unix_time). Can use `\u003e=` and/or `= 1432140000` * `projectId = my-project AND createTime \u003e= 1432140000 AND createTime \u003c= 1432150000 AND status = RUNNING`",
+       "location": "query"
+      },
+      "pageSize": {
+       "type": "integer",
+       "description": "The maximum number of results to return. If unspecified, defaults to 256. The maximum value is 2048.",
+       "format": "int32",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "The standard list page token.",
+       "location": "query"
+      }
+     },
+     "parameterOrder": [
+      "name"
+     ],
+     "response": {
+      "$ref": "ListOperationsResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/genomics"
+     ]
+    },
+    "cancel": {
+     "id": "genomics.operations.cancel",
+     "path": "v1alpha2/{+name}:cancel",
+     "httpMethod": "POST",
+     "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. Clients may use Operations.GetOperation or Operations.ListOperations to check whether the cancellation succeeded or the operation completed despite cancellation.",
+     "parameters": {
+      "name": {
+       "type": "string",
+       "description": "The name of the operation resource to be cancelled.",
+       "required": true,
+       "pattern": "^operations/.*$",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "name"
+     ],
+     "request": {
+      "$ref": "CancelOperationRequest"
+     },
+     "response": {
+      "$ref": "Empty"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/genomics"
+     ]
+    }
+   }
+  }
+ }
+}
diff --git a/genomics/v1alpha2/genomics-gen.go b/genomics/v1alpha2/genomics-gen.go
new file mode 100644
index 0000000..bc835b5
--- /dev/null
+++ b/genomics/v1alpha2/genomics-gen.go
@@ -0,0 +1,790 @@
+// Package genomics provides access to the Genomics API.
+//
+// Usage example:
+//
+//   import "google.golang.org/api/genomics/v1alpha2"
+//   ...
+//   genomicsService, err := genomics.New(oauthHttpClient)
+package genomics // import "google.golang.org/api/genomics/v1alpha2"
+
+import (
+	"bytes"
+	"encoding/json"
+	"errors"
+	"fmt"
+	context "golang.org/x/net/context"
+	ctxhttp "golang.org/x/net/context/ctxhttp"
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+var _ = ctxhttp.Do
+
+const apiId = "genomics:v1alpha2"
+const apiName = "genomics"
+const apiVersion = "v1alpha2"
+const basePath = "https://genomics.googleapis.com/"
+
+// OAuth2 scopes used by this API.
+const (
+	// View and manage your data across Google Cloud Platform services
+	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
+
+	// View and manage Genomics data
+	GenomicsScope = "https://www.googleapis.com/auth/genomics"
+)
+
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.Operations = NewOperationsService(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	Operations *OperationsService
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewOperationsService(s *Service) *OperationsService {
+	rs := &OperationsService{s: s}
+	return rs
+}
+
+type OperationsService struct {
+	s *Service
+}
+
+// CancelOperationRequest: The request message for
+// Operations.CancelOperation.
+type CancelOperationRequest struct {
+}
+
+// Empty: A generic empty message that you can re-use to avoid defining
+// duplicated empty messages in your APIs. A typical example is to use
+// it as the request or the response type of an API method. For
+// instance: service Foo { rpc Bar(google.protobuf.Empty) returns
+// (google.protobuf.Empty); } The JSON representation for `Empty` is
+// empty JSON object `{}`.
+type Empty struct {
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+}
+
+// ImportReadGroupSetsResponse: The read group set import response.
+type ImportReadGroupSetsResponse struct {
+	// ReadGroupSetIds: IDs of the read group sets that were created.
+	ReadGroupSetIds []string `json:"readGroupSetIds,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ReadGroupSetIds") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ImportReadGroupSetsResponse) MarshalJSON() ([]byte, error) {
+	type noMethod ImportReadGroupSetsResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ImportVariantsResponse: The variant data import response.
+type ImportVariantsResponse struct {
+	// CallSetIds: IDs of the call sets created during the import.
+	CallSetIds []string `json:"callSetIds,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CallSetIds") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ImportVariantsResponse) MarshalJSON() ([]byte, error) {
+	type noMethod ImportVariantsResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ListOperationsResponse: The response message for
+// Operations.ListOperations.
+type ListOperationsResponse struct {
+	// NextPageToken: The standard List next-page token.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Operations: A list of operations that matches the specified filter in
+	// the request.
+	Operations []*Operation `json:"operations,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ListOperationsResponse) MarshalJSON() ([]byte, error) {
+	type noMethod ListOperationsResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Operation: This resource represents a long-running operation that is
+// the result of a network API call.
+type Operation struct {
+	// Done: If the value is `false`, it means the operation is still in
+	// progress. If true, the operation is completed, and either `error` or
+	// `response` is available.
+	Done bool `json:"done,omitempty"`
+
+	// Error: The error result of the operation in case of failure.
+	Error *Status `json:"error,omitempty"`
+
+	// Metadata: An OperationMetadata object. This will always be returned
+	// with the Operation.
+	Metadata OperationMetadata `json:"metadata,omitempty"`
+
+	// Name: The server-assigned name, which is only unique within the same
+	// service that originally returns it. For example:
+	// `operations/CJHU7Oi_ChDrveSpBRjfuL-qzoWAgEw`
+	Name string `json:"name,omitempty"`
+
+	// Response: If importing ReadGroupSets, an ImportReadGroupSetsResponse
+	// is returned. If importing Variants, an ImportVariantsResponse is
+	// returned. For exports, an empty response is returned.
+	Response OperationResponse `json:"response,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Done") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Operation) MarshalJSON() ([]byte, error) {
+	type noMethod Operation
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type OperationMetadata interface{}
+
+type OperationResponse interface{}
+
+// OperationEvent: An event that occurred during an Operation.
+type OperationEvent struct {
+	// Description: Required description of event.
+	Description string `json:"description,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Description") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OperationEvent) MarshalJSON() ([]byte, error) {
+	type noMethod OperationEvent
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OperationMetadata1: Metadata describing an Operation.
+type OperationMetadata1 struct {
+	// CreateTime: The time at which the job was submitted to the Genomics
+	// service.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// Events: Optional event messages that were generated during the job's
+	// execution. This also contains any warnings that were generated during
+	// import or export.
+	Events []*OperationEvent `json:"events,omitempty"`
+
+	// ProjectId: The Google Cloud Project in which the job is scoped.
+	ProjectId string `json:"projectId,omitempty"`
+
+	// Request: The original request that started the operation. Note that
+	// this will be in current version of the API. If the operation was
+	// started with v1beta2 API and a GetOperation is performed on v1 API, a
+	// v1 request will be returned.
+	Request OperationMetadataRequest `json:"request,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CreateTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OperationMetadata1) MarshalJSON() ([]byte, error) {
+	type noMethod OperationMetadata1
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type OperationMetadataRequest interface{}
+
+// Status: The `Status` type defines a logical error model that is
+// suitable for different programming environments, including REST APIs
+// and RPC APIs. It is used by [gRPC](https://github.com/grpc). The
+// error model is designed to be: - Simple to use and understand for
+// most users - Flexible enough to meet unexpected needs # Overview The
+// `Status` message contains three pieces of data: error code, error
+// message, and error details. The error code should be an enum value of
+// google.rpc.Code, but it may accept additional error codes if needed.
+// The error message should be a developer-facing English message that
+// helps developers *understand* and *resolve* the error. If a localized
+// user-facing error message is needed, put the localized message in the
+// error details or localize it in the client. The optional error
+// details may contain arbitrary information about the error. There is a
+// predefined set of error detail types in the package `google.rpc`
+// which can be used for common error conditions. # Language mapping The
+// `Status` message is the logical representation of the error model,
+// but it is not necessarily the actual wire format. When the `Status`
+// message is exposed in different client libraries and different wire
+// protocols, it can be mapped differently. For example, it will likely
+// be mapped to some exceptions in Java, but more likely mapped to some
+// error codes in C. # Other uses The error model and the `Status`
+// message can be used in a variety of environments, either with or
+// without APIs, to provide a consistent developer experience across
+// different environments. Example uses of this error model include: -
+// Partial errors. If a service needs to return partial errors to the
+// client, it may embed the `Status` in the normal response to indicate
+// the partial errors. - Workflow errors. A typical workflow has
+// multiple steps. Each step may have a `Status` message for error
+// reporting purpose. - Batch operations. If a client uses batch request
+// and batch response, the `Status` message should be used directly
+// inside batch response, one for each error sub-response. -
+// Asynchronous operations. If an API call embeds asynchronous operation
+// results in its response, the status of those operations should be
+// represented directly using the `Status` message. - Logging. If some
+// API errors are stored in logs, the message `Status` could be used
+// directly after any stripping needed for security/privacy reasons.
+type Status struct {
+	// Code: The status code, which should be an enum value of
+	// google.rpc.Code.
+	Code int64 `json:"code,omitempty"`
+
+	// Details: A list of messages that carry the error details. There will
+	// be a common set of message types for APIs to use.
+	Details []StatusDetails `json:"details,omitempty"`
+
+	// Message: A developer-facing error message, which should be in
+	// English. Any user-facing error message should be localized and sent
+	// in the google.rpc.Status.details field, or localized by the client.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Status) MarshalJSON() ([]byte, error) {
+	type noMethod Status
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type StatusDetails interface{}
+
+// method id "genomics.operations.cancel":
+
+type OperationsCancelCall struct {
+	s                      *Service
+	name                   string
+	canceloperationrequest *CancelOperationRequest
+	urlParams_             gensupport.URLParams
+	ctx_                   context.Context
+}
+
+// Cancel: Starts asynchronous cancellation on a long-running operation.
+// The server makes a best effort to cancel the operation, but success
+// is not guaranteed. Clients may use Operations.GetOperation or
+// Operations.ListOperations to check whether the cancellation succeeded
+// or the operation completed despite cancellation.
+func (r *OperationsService) Cancel(name string, canceloperationrequest *CancelOperationRequest) *OperationsCancelCall {
+	c := &OperationsCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.canceloperationrequest = canceloperationrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OperationsCancelCall) Fields(s ...googleapi.Field) *OperationsCancelCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OperationsCancelCall) Context(ctx context.Context) *OperationsCancelCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.canceloperationrequest)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha2/{+name}:cancel")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "genomics.operations.cancel" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *OperationsCancelCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. Clients may use Operations.GetOperation or Operations.ListOperations to check whether the cancellation succeeded or the operation completed despite cancellation.",
+	//   "httpMethod": "POST",
+	//   "id": "genomics.operations.cancel",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource to be cancelled.",
+	//       "location": "path",
+	//       "pattern": "^operations/.*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha2/{+name}:cancel",
+	//   "request": {
+	//     "$ref": "CancelOperationRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/genomics"
+	//   ]
+	// }
+
+}
+
+// method id "genomics.operations.get":
+
+type OperationsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets the latest state of a long-running operation. Clients can
+// use this method to poll the operation result at intervals as
+// recommended by the API service.
+func (r *OperationsService) Get(name string) *OperationsGetCall {
+	c := &OperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OperationsGetCall) Fields(s ...googleapi.Field) *OperationsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OperationsGetCall) IfNoneMatch(entityTag string) *OperationsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OperationsGetCall) Context(ctx context.Context) *OperationsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha2/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "genomics.operations.get" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *OperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+	//   "httpMethod": "GET",
+	//   "id": "genomics.operations.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource.",
+	//       "location": "path",
+	//       "pattern": "^operations/.*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha2/{+name}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/genomics"
+	//   ]
+	// }
+
+}
+
+// method id "genomics.operations.list":
+
+type OperationsListCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Lists operations that match the specified filter in the
+// request.
+func (r *OperationsService) List(name string) *OperationsListCall {
+	c := &OperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Filter sets the optional parameter "filter": A string for filtering
+// Operations. The following filter fields are supported: * projectId:
+// Required. Corresponds to OperationMetadata.projectId. * createTime:
+// The time this job was created, in seconds from the
+// [epoch](http://en.wikipedia.org/wiki/Unix_time). Can use `>=` and/or
+// `= 1432140000` * `projectId = my-project AND createTime >= 1432140000
+// AND createTime <= 1432150000 AND status = RUNNING`
+func (c *OperationsListCall) Filter(filter string) *OperationsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of results to return. If unspecified, defaults to 256. The maximum
+// value is 2048.
+func (c *OperationsListCall) PageSize(pageSize int64) *OperationsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The standard list
+// page token.
+func (c *OperationsListCall) PageToken(pageToken string) *OperationsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OperationsListCall) Fields(s ...googleapi.Field) *OperationsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OperationsListCall) IfNoneMatch(entityTag string) *OperationsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OperationsListCall) Context(ctx context.Context) *OperationsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha2/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "genomics.operations.list" call.
+// Exactly one of *ListOperationsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListOperationsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *OperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListOperationsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists operations that match the specified filter in the request.",
+	//   "httpMethod": "GET",
+	//   "id": "genomics.operations.list",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "A string for filtering Operations. The following filter fields are supported: * projectId: Required. Corresponds to OperationMetadata.projectId. * createTime: The time this job was created, in seconds from the [epoch](http://en.wikipedia.org/wiki/Unix_time). Can use `\u003e=` and/or `= 1432140000` * `projectId = my-project AND createTime \u003e= 1432140000 AND createTime \u003c= 1432150000 AND status = RUNNING`",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The name of the operation collection.",
+	//       "location": "path",
+	//       "pattern": "^operations$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The maximum number of results to return. If unspecified, defaults to 256. The maximum value is 2048.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The standard list page token.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha2/{+name}",
+	//   "response": {
+	//     "$ref": "ListOperationsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/genomics"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *OperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
diff --git a/genomics/v1beta2/genomics-api.json b/genomics/v1beta2/genomics-api.json
index cc80220..b97d8a4 100644
--- a/genomics/v1beta2/genomics-api.json
+++ b/genomics/v1beta2/genomics-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/Zr1bi6MHOaAncA4AeqtGBzpWAGE\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/NeNdOHZOm6K5hK0eFUYohPpm89A\"",
  "discoveryVersion": "v1",
  "id": "genomics:v1beta2",
  "name": "genomics",
  "version": "v1beta2",
- "revision": "20151209",
+ "revision": "20160201",
  "title": "Genomics API",
  "description": "Provides access to Genomics data.",
  "ownerDomain": "google.com",
@@ -3039,7 +3039,7 @@
      "id": "genomics.readgroupsets.import",
      "path": "readgroupsets/import",
      "httpMethod": "POST",
-     "description": "Creates read group sets by asynchronously importing the provided information. The caller must have WRITE permissions to the dataset.\n\nNotes on BAM import:  \n- Tags will be converted to strings - tag types are not preserved\n- Comments (@CO) in the input file header are not imported\n- Original order of reference headers is not preserved\n- Any reverse stranded unmapped reads will be reverse complemented, and their qualities (and \"BQ\" tag, if any) will be reversed\n- Unmapped reads will be stripped of positional information (referenceName and position)",
+     "description": "Creates read group sets by asynchronously importing the provided information. The caller must have WRITE permissions to the dataset.\n\nNotes on BAM import:  \n- Tags will be converted to strings - tag types are not preserved\n- Comments (@CO) in the input file header are not imported\n- Original order of reference headers is not preserved\n- Any reverse stranded unmapped reads will be reverse complemented, and their qualities (also the \"BQ\" and \"OQ\" tags, if any) will be reversed\n- Unmapped reads will be stripped of positional information (referenceName and position)",
      "request": {
       "$ref": "ImportReadGroupSetsRequest"
      },
diff --git a/genomics/v1beta2/genomics-gen.go b/genomics/v1beta2/genomics-gen.go
index 846b3d9..01a4f20 100644
--- a/genomics/v1beta2/genomics-gen.go
+++ b/genomics/v1beta2/genomics-gen.go
@@ -6850,7 +6850,8 @@
 // - Comments (@CO) in the input file header are not imported
 // - Original order of reference headers is not preserved
 // - Any reverse stranded unmapped reads will be reverse complemented,
-// and their qualities (and "BQ" tag, if any) will be reversed
+// and their qualities (also the "BQ" and "OQ" tags, if any) will be
+// reversed
 // - Unmapped reads will be stripped of positional information
 // (referenceName and position)
 func (r *ReadgroupsetsService) Import(importreadgroupsetsrequest *ImportReadGroupSetsRequest) *ReadgroupsetsImportCall {
@@ -6932,7 +6933,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Creates read group sets by asynchronously importing the provided information. The caller must have WRITE permissions to the dataset.\n\nNotes on BAM import:  \n- Tags will be converted to strings - tag types are not preserved\n- Comments (@CO) in the input file header are not imported\n- Original order of reference headers is not preserved\n- Any reverse stranded unmapped reads will be reverse complemented, and their qualities (and \"BQ\" tag, if any) will be reversed\n- Unmapped reads will be stripped of positional information (referenceName and position)",
+	//   "description": "Creates read group sets by asynchronously importing the provided information. The caller must have WRITE permissions to the dataset.\n\nNotes on BAM import:  \n- Tags will be converted to strings - tag types are not preserved\n- Comments (@CO) in the input file header are not imported\n- Original order of reference headers is not preserved\n- Any reverse stranded unmapped reads will be reverse complemented, and their qualities (also the \"BQ\" and \"OQ\" tags, if any) will be reversed\n- Unmapped reads will be stripped of positional information (referenceName and position)",
 	//   "httpMethod": "POST",
 	//   "id": "genomics.readgroupsets.import",
 	//   "path": "readgroupsets/import",
diff --git a/google-api-go-generator/gen.go b/google-api-go-generator/gen.go
index d9f5130..77ba4d4 100644
--- a/google-api-go-generator/gen.go
+++ b/google-api-go-generator/gen.go
@@ -57,7 +57,7 @@
 	Name          string `json:"name"`
 	Version       string `json:"version"`
 	Title         string `json:"title"`
-	DiscoveryLink string `json:"discoveryLink"` // relative
+	DiscoveryLink string `json:"discoveryRestUrl"` // absolute
 	RootURL       string `json:"rootUrl"`
 	ServicePath   string `json:"servicePath"`
 	Preferred     bool   `json:"preferred"`
@@ -93,10 +93,9 @@
 	apiName := parts[0]
 	apiVersion := parts[1]
 	all.Items = append(all.Items, &API{
-		ID:            api,
-		Name:          apiName,
-		Version:       apiVersion,
-		DiscoveryLink: fmt.Sprintf("./apis/%s/%s/rest", apiName, apiVersion),
+		ID:      api,
+		Name:    apiName,
+		Version: apiVersion,
 	})
 }
 
@@ -217,11 +216,6 @@
 	if !*publicOnly && *apiToGenerate != "*" {
 		all.addAPI(*apiToGenerate)
 	}
-	if *apiToGenerate == "*" && *apisURL == googleDiscoveryURL {
-		// Force generation of compute:beta which doesn't appear in the
-		// directory for some reason, but they've asked us to include it.
-		all.addAPI("compute:beta")
-	}
 	return all.Items
 }
 
@@ -362,12 +356,7 @@
 	if a.DiscoveryLink == "" {
 		log.Fatalf("API %s has no DiscoveryLink", a.ID)
 	}
-	base, _ := url.Parse(*apisURL)
-	u, err := base.Parse(a.DiscoveryLink)
-	if err != nil {
-		log.Fatalf("API %s has bogus DiscoveryLink %s: %v", a.ID, a.DiscoveryLink, err)
-	}
-	return u.String()
+	return a.DiscoveryLink
 }
 
 func (a *API) Package() string {
diff --git a/iam/v1/iam-api.json b/iam/v1/iam-api.json
new file mode 100644
index 0000000..68eb06d
--- /dev/null
+++ b/iam/v1/iam-api.json
@@ -0,0 +1,891 @@
+{
+ "kind": "discovery#restDescription",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/KGIJuBPLol6TqL9arf5YOmp-wQ0\"",
+ "discoveryVersion": "v1",
+ "id": "iam:v1",
+ "name": "iam",
+ "version": "v1",
+ "revision": "20160129",
+ "title": "Google Identity and Access Management API",
+ "description": "Manages identity and access control for Google Cloud Platform resources, including the creation of service accounts, which you can use to authenticate to Google and make API calls.",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "icons": {
+  "x16": "http://www.google.com/images/icons/product/search-16.gif",
+  "x32": "http://www.google.com/images/icons/product/search-32.gif"
+ },
+ "documentationLink": "https://cloud.google.com/iam/",
+ "protocol": "rest",
+ "baseUrl": "https://iam.googleapis.com/",
+ "basePath": "",
+ "rootUrl": "https://iam.googleapis.com/",
+ "servicePath": "",
+ "batchPath": "batch",
+ "version_module": true,
+ "parameters": {
+  "access_token": {
+   "type": "string",
+   "description": "OAuth access token.",
+   "location": "query"
+  },
+  "alt": {
+   "type": "string",
+   "description": "Data format for response.",
+   "default": "json",
+   "enumDescriptions": [
+    "Responses with Content-Type of application/json",
+    "Media download with context-dependent Content-Type",
+    "Responses with Content-Type of application/x-protobuf"
+   ],
+   "location": "query"
+  },
+  "bearer_token": {
+   "type": "string",
+   "description": "OAuth bearer token.",
+   "location": "query"
+  },
+  "callback": {
+   "type": "string",
+   "description": "JSONP",
+   "location": "query"
+  },
+  "fields": {
+   "type": "string",
+   "description": "Selector specifying which fields to include in a partial response.",
+   "location": "query"
+  },
+  "key": {
+   "type": "string",
+   "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+   "location": "query"
+  },
+  "oauth_token": {
+   "type": "string",
+   "description": "OAuth 2.0 token for the current user.",
+   "location": "query"
+  },
+  "pp": {
+   "type": "boolean",
+   "description": "Pretty-print response.",
+   "default": "true",
+   "location": "query"
+  },
+  "prettyPrint": {
+   "type": "boolean",
+   "description": "Returns response with indentations and line breaks.",
+   "default": "true",
+   "location": "query"
+  },
+  "quotaUser": {
+   "type": "string",
+   "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+   "location": "query"
+  },
+  "upload_protocol": {
+   "type": "string",
+   "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+   "location": "query"
+  },
+  "uploadType": {
+   "type": "string",
+   "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+   "location": "query"
+  },
+  "$.xgafv": {
+   "type": "string",
+   "description": "V1 error format.",
+   "enumDescriptions": [
+    "v1 error format",
+    "v2 error format"
+   ],
+   "location": "query"
+  }
+ },
+ "auth": {
+  "oauth2": {
+   "scopes": {
+    "https://www.googleapis.com/auth/cloud-platform": {
+     "description": "View and manage your data across Google Cloud Platform services"
+    }
+   }
+  }
+ },
+ "schemas": {
+  "ListServiceAccountsResponse": {
+   "id": "ListServiceAccountsResponse",
+   "type": "object",
+   "description": "The service account list response.",
+   "properties": {
+    "accounts": {
+     "type": "array",
+     "description": "The list of matching service accounts.",
+     "items": {
+      "$ref": "ServiceAccount"
+     }
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "To retrieve the next page of results, set [ListServiceAccountsRequest.page_token] to this value."
+    }
+   }
+  },
+  "ServiceAccount": {
+   "id": "ServiceAccount",
+   "type": "object",
+   "description": "A service account in the Identity and Access Management API. To create a service account, you specify the project_id and account_id for the account. The account_id is unique within the project, and used to generate the service account email address and a stable unique id. All other methods can identify accounts using the format \"projects/{project}/serviceAccounts/{account}\". Using '-' as a wildcard for the project, will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+   "properties": {
+    "name": {
+     "type": "string",
+     "description": "The resource name of the service account in the format \"projects/{project}/serviceAccounts/{account}\". In requests using '-' as a wildcard for the project, will infer the project from the account and the account value can be the email address or the unique_id of the service account. In responses the resource name will always be in the format \"projects/{project}/serviceAccounts/{email}\"."
+    },
+    "projectId": {
+     "type": "string",
+     "description": "@OutputOnly The id of the project that owns the service account."
+    },
+    "uniqueId": {
+     "type": "string",
+     "description": "@OutputOnly unique and stable id of the service account."
+    },
+    "email": {
+     "type": "string",
+     "description": "@OutputOnly Email address of the service account."
+    },
+    "displayName": {
+     "type": "string",
+     "description": "Optional. A user-specified description of the service account. Must be fewer than 100 UTF-8 bytes."
+    },
+    "etag": {
+     "type": "string",
+     "description": "Used to perform a consistent read-modify-write.",
+     "format": "byte"
+    },
+    "oauth2ClientId": {
+     "type": "string",
+     "description": "@OutputOnly. The OAuth2 client id for the service account. This is used in conjunction with the OAuth2 clientconfig API to make three legged OAuth2 (3LO) flows to access the data of Google users."
+    }
+   }
+  },
+  "CreateServiceAccountRequest": {
+   "id": "CreateServiceAccountRequest",
+   "type": "object",
+   "description": "The service account create request.",
+   "properties": {
+    "accountId": {
+     "type": "string",
+     "description": "Required. The account id that is used to generate the service account email address and a stable unique id. It is unique within a project, must be 1-63 characters long, and match the regular expression [a-z]([-a-z0-9]*[a-z0-9]) to comply with RFC1035."
+    },
+    "serviceAccount": {
+     "$ref": "ServiceAccount",
+     "description": "The ServiceAccount resource to create. Currently, only the following values are user assignable: display_name ."
+    }
+   }
+  },
+  "Empty": {
+   "id": "Empty",
+   "type": "object",
+   "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`."
+  },
+  "ListServiceAccountKeysResponse": {
+   "id": "ListServiceAccountKeysResponse",
+   "type": "object",
+   "description": "The service account keys list response.",
+   "properties": {
+    "keys": {
+     "type": "array",
+     "description": "The public keys for the service account.",
+     "items": {
+      "$ref": "ServiceAccountKey"
+     }
+    }
+   }
+  },
+  "ServiceAccountKey": {
+   "id": "ServiceAccountKey",
+   "type": "object",
+   "description": "Represents a service account key. A service account can have 0 or more key pairs. The private keys for these are not stored by Google. ServiceAccountKeys are immutable.",
+   "properties": {
+    "name": {
+     "type": "string",
+     "description": "The resource name of the service account key in the format \"projects/{project}/serviceAccounts/{email}/keys/{key}\"."
+    },
+    "privateKeyType": {
+     "type": "string",
+     "description": "The type of the private key.",
+     "enum": [
+      "TYPE_UNSPECIFIED",
+      "TYPE_PKCS12_FILE",
+      "TYPE_GOOGLE_CREDENTIALS_FILE"
+     ]
+    },
+    "privateKeyData": {
+     "type": "string",
+     "description": "The key data.",
+     "format": "byte"
+    },
+    "validAfterTime": {
+     "type": "string",
+     "description": "The key can be used after this timestamp."
+    },
+    "validBeforeTime": {
+     "type": "string",
+     "description": "The key can be used before this timestamp."
+    }
+   }
+  },
+  "CreateServiceAccountKeyRequest": {
+   "id": "CreateServiceAccountKeyRequest",
+   "type": "object",
+   "description": "The service account key create request.",
+   "properties": {
+    "privateKeyType": {
+     "type": "string",
+     "description": "The type of the key requested. GOOGLE_CREDENTIALS is the default key type.",
+     "enum": [
+      "TYPE_UNSPECIFIED",
+      "TYPE_PKCS12_FILE",
+      "TYPE_GOOGLE_CREDENTIALS_FILE"
+     ]
+    }
+   }
+  },
+  "SignBlobRequest": {
+   "id": "SignBlobRequest",
+   "type": "object",
+   "description": "The service account sign blob request.",
+   "properties": {
+    "bytesToSign": {
+     "type": "string",
+     "description": "The bytes to sign",
+     "format": "byte"
+    }
+   }
+  },
+  "SignBlobResponse": {
+   "id": "SignBlobResponse",
+   "type": "object",
+   "description": "The service account sign blob response.",
+   "properties": {
+    "keyId": {
+     "type": "string",
+     "description": "The id of the key used to sign the blob."
+    },
+    "signature": {
+     "type": "string",
+     "description": "The signed blob.",
+     "format": "byte"
+    }
+   }
+  },
+  "Policy": {
+   "id": "Policy",
+   "type": "object",
+   "description": "Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { \"bindings\": [ { \"role\": \"roles/owner\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-other-app@appspot.gserviceaccount.com\"] }, { \"role\": \"roles/viewer\", \"members\": [\"user:sean@example.com\"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).",
+   "properties": {
+    "version": {
+     "type": "integer",
+     "description": "Version of the `Policy`. The default version is 0.",
+     "format": "int32"
+    },
+    "bindings": {
+     "type": "array",
+     "description": "Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.",
+     "items": {
+      "$ref": "Binding"
+     }
+    },
+    "rules": {
+     "type": "array",
+     "items": {
+      "$ref": "Rule"
+     }
+    },
+    "etag": {
+     "type": "string",
+     "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.",
+     "format": "byte"
+    }
+   }
+  },
+  "Binding": {
+   "id": "Binding",
+   "type": "object",
+   "description": "Associates `members` with a `role`.",
+   "properties": {
+    "role": {
+     "type": "string",
+     "description": "Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required"
+    },
+    "members": {
+     "type": "array",
+     "description": "Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.",
+     "items": {
+      "type": "string"
+     }
+    }
+   }
+  },
+  "Rule": {
+   "id": "Rule",
+   "type": "object",
+   "description": "A rule to be applied in a Policy.",
+   "properties": {
+    "description": {
+     "type": "string",
+     "description": "Human-readable description of the rule."
+    },
+    "permissions": {
+     "type": "array",
+     "description": "A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.",
+     "items": {
+      "type": "string"
+     }
+    },
+    "action": {
+     "type": "string",
+     "description": "Required",
+     "enum": [
+      "NO_ACTION",
+      "ALLOW",
+      "ALLOW_WITH_LOG",
+      "DENY",
+      "DENY_WITH_LOG",
+      "LOG"
+     ]
+    },
+    "in": {
+     "type": "array",
+     "description": "The rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in this set of entries.",
+     "items": {
+      "type": "string"
+     }
+    },
+    "notIn": {
+     "type": "array",
+     "description": "The rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is not in this set of entries. The format for in and not_in entries is the same as for members in a Binding (see google/iam/v1/policy.proto).",
+     "items": {
+      "type": "string"
+     }
+    },
+    "conditions": {
+     "type": "array",
+     "description": "Additional restrictions that must be met",
+     "items": {
+      "$ref": "Condition"
+     }
+    },
+    "logConfig": {
+     "type": "array",
+     "description": "The config returned to callers of tech.iam.IAM.CheckPolicy for any entries that match the LOG action.",
+     "items": {
+      "$ref": "LogConfig"
+     }
+    }
+   }
+  },
+  "Condition": {
+   "id": "Condition",
+   "type": "object",
+   "description": "A condition to be met.",
+   "properties": {
+    "iam": {
+     "type": "string",
+     "description": "Trusted attributes supplied by the IAM system.",
+     "enum": [
+      "NO_ATTR",
+      "AUTHORITY",
+      "ATTRIBUTION"
+     ]
+    },
+    "sys": {
+     "type": "string",
+     "description": "Trusted attributes supplied by any service that owns resources and uses the IAM system for access control.",
+     "enum": [
+      "NO_ATTR",
+      "REGION",
+      "SERVICE",
+      "NAME",
+      "IP"
+     ]
+    },
+    "svc": {
+     "type": "string",
+     "description": "Trusted attributes discharged by the service."
+    },
+    "op": {
+     "type": "string",
+     "description": "An operator to apply the subject with.",
+     "enum": [
+      "NO_OP",
+      "EQUALS",
+      "NOT_EQUALS",
+      "IN",
+      "NOT_IN",
+      "DISCHARGED"
+     ]
+    },
+    "value": {
+     "type": "string",
+     "description": "The object of the condition. Exactly one of these must be set."
+    },
+    "values": {
+     "type": "array",
+     "description": "The objects of the condition. This is mutually exclusive with 'value'.",
+     "items": {
+      "type": "string"
+     }
+    }
+   }
+  },
+  "LogConfig": {
+   "id": "LogConfig",
+   "type": "object",
+   "description": "Specifies what kind of log the caller must write Increment a streamz counter with the specified metric and field names. Metric names should start with a '/', generally be lowercase-only, and end in \"_count\". Field names should not contain an initial slash. The actual exported metric names will have \"/iam/policy\" prepended. Field names correspond to IAM request parameters and field values are their respective values. At present only \"iam_principal\", corresponding to IAMContext.principal, is supported. Examples: counter { metric: \"/debug_access_count\" field: \"iam_principal\" } ==\u003e increment counter /iam/policy/backend_debug_access_count {iam_principal=[value of IAMContext.principal]} At this time we do not support: * multiple field names (though this may be supported in the future) * decrementing the counter * incrementing it by anything other than 1",
+   "properties": {
+    "counter": {
+     "$ref": "CounterOptions",
+     "description": "Counter options."
+    },
+    "dataAccess": {
+     "$ref": "DataAccessOptions",
+     "description": "Data access options."
+    },
+    "cloudAudit": {
+     "$ref": "CloudAuditOptions",
+     "description": "Cloud audit options."
+    }
+   }
+  },
+  "CounterOptions": {
+   "id": "CounterOptions",
+   "type": "object",
+   "description": "Options for counters",
+   "properties": {
+    "metric": {
+     "type": "string",
+     "description": "The metric to update."
+    },
+    "field": {
+     "type": "string",
+     "description": "The field value to attribute."
+    }
+   }
+  },
+  "DataAccessOptions": {
+   "id": "DataAccessOptions",
+   "type": "object",
+   "description": "Write a Data Access (Gin) log"
+  },
+  "CloudAuditOptions": {
+   "id": "CloudAuditOptions",
+   "type": "object",
+   "description": "Write a Cloud Audit log"
+  },
+  "SetIamPolicyRequest": {
+   "id": "SetIamPolicyRequest",
+   "type": "object",
+   "description": "Request message for `SetIamPolicy` method.",
+   "properties": {
+    "policy": {
+     "$ref": "Policy",
+     "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them."
+    }
+   }
+  },
+  "TestIamPermissionsRequest": {
+   "id": "TestIamPermissionsRequest",
+   "type": "object",
+   "description": "Request message for `TestIamPermissions` method.",
+   "properties": {
+    "permissions": {
+     "type": "array",
+     "description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see IAM Overview.",
+     "items": {
+      "type": "string"
+     }
+    }
+   }
+  },
+  "TestIamPermissionsResponse": {
+   "id": "TestIamPermissionsResponse",
+   "type": "object",
+   "description": "Response message for `TestIamPermissions` method.",
+   "properties": {
+    "permissions": {
+     "type": "array",
+     "description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+     "items": {
+      "type": "string"
+     }
+    }
+   }
+  }
+ },
+ "resources": {
+  "projects": {
+   "resources": {
+    "serviceAccounts": {
+     "methods": {
+      "list": {
+       "id": "iam.projects.serviceAccounts.list",
+       "path": "v1/{+name}/serviceAccounts",
+       "httpMethod": "GET",
+       "description": "Lists service accounts for a project.",
+       "parameters": {
+        "name": {
+         "type": "string",
+         "description": "Required. The resource name of the project associated with the service accounts, such as \"projects/123\"",
+         "required": true,
+         "pattern": "^projects/[^/]*$",
+         "location": "path"
+        },
+        "pageSize": {
+         "type": "integer",
+         "description": "Optional limit on the number of service accounts to include in the response. Further accounts can subsequently be obtained by including the [ListServiceAccountsResponse.next_page_token] in a subsequent request.",
+         "format": "int32",
+         "location": "query"
+        },
+        "pageToken": {
+         "type": "string",
+         "description": "Optional pagination token returned in an earlier [ListServiceAccountsResponse.next_page_token].",
+         "location": "query"
+        }
+       },
+       "parameterOrder": [
+        "name"
+       ],
+       "response": {
+        "$ref": "ListServiceAccountsResponse"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      },
+      "get": {
+       "id": "iam.projects.serviceAccounts.get",
+       "path": "v1/{+name}",
+       "httpMethod": "GET",
+       "description": "Gets a ServiceAccount",
+       "parameters": {
+        "name": {
+         "type": "string",
+         "description": "The resource name of the service account in the format \"projects/{project}/serviceAccounts/{account}\". Using '-' as a wildcard for the project, will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+         "required": true,
+         "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+         "location": "path"
+        }
+       },
+       "parameterOrder": [
+        "name"
+       ],
+       "response": {
+        "$ref": "ServiceAccount"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      },
+      "create": {
+       "id": "iam.projects.serviceAccounts.create",
+       "path": "v1/{+name}/serviceAccounts",
+       "httpMethod": "POST",
+       "description": "Creates a service account and returns it.",
+       "parameters": {
+        "name": {
+         "type": "string",
+         "description": "Required. The resource name of the project associated with the service accounts, such as \"projects/123\"",
+         "required": true,
+         "pattern": "^projects/[^/]*$",
+         "location": "path"
+        }
+       },
+       "parameterOrder": [
+        "name"
+       ],
+       "request": {
+        "$ref": "CreateServiceAccountRequest"
+       },
+       "response": {
+        "$ref": "ServiceAccount"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      },
+      "update": {
+       "id": "iam.projects.serviceAccounts.update",
+       "path": "v1/{+name}",
+       "httpMethod": "PUT",
+       "description": "Updates a service account. Currently, only the following fields are updatable: 'display_name' . The 'etag' is mandatory.",
+       "parameters": {
+        "name": {
+         "type": "string",
+         "description": "The resource name of the service account in the format \"projects/{project}/serviceAccounts/{account}\". In requests using '-' as a wildcard for the project, will infer the project from the account and the account value can be the email address or the unique_id of the service account. In responses the resource name will always be in the format \"projects/{project}/serviceAccounts/{email}\".",
+         "required": true,
+         "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+         "location": "path"
+        }
+       },
+       "parameterOrder": [
+        "name"
+       ],
+       "request": {
+        "$ref": "ServiceAccount"
+       },
+       "response": {
+        "$ref": "ServiceAccount"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      },
+      "delete": {
+       "id": "iam.projects.serviceAccounts.delete",
+       "path": "v1/{+name}",
+       "httpMethod": "DELETE",
+       "description": "Deletes a service acount.",
+       "parameters": {
+        "name": {
+         "type": "string",
+         "description": "The resource name of the service account in the format \"projects/{project}/serviceAccounts/{account}\". Using '-' as a wildcard for the project, will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+         "required": true,
+         "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+         "location": "path"
+        }
+       },
+       "parameterOrder": [
+        "name"
+       ],
+       "response": {
+        "$ref": "Empty"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      },
+      "signBlob": {
+       "id": "iam.projects.serviceAccounts.signBlob",
+       "path": "v1/{+name}:signBlob",
+       "httpMethod": "POST",
+       "description": "Signs a blob using a service account.",
+       "parameters": {
+        "name": {
+         "type": "string",
+         "description": "The resource name of the service account in the format \"projects/{project}/serviceAccounts/{account}\". Using '-' as a wildcard for the project, will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+         "required": true,
+         "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+         "location": "path"
+        }
+       },
+       "parameterOrder": [
+        "name"
+       ],
+       "request": {
+        "$ref": "SignBlobRequest"
+       },
+       "response": {
+        "$ref": "SignBlobResponse"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      },
+      "getIamPolicy": {
+       "id": "iam.projects.serviceAccounts.getIamPolicy",
+       "path": "v1/{+resource}:getIamPolicy",
+       "httpMethod": "POST",
+       "description": "Returns the IAM access control policy for specified IAM resource.",
+       "parameters": {
+        "resource": {
+         "type": "string",
+         "description": "REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `getIamPolicy` documentation.",
+         "required": true,
+         "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+         "location": "path"
+        }
+       },
+       "parameterOrder": [
+        "resource"
+       ],
+       "response": {
+        "$ref": "Policy"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      },
+      "setIamPolicy": {
+       "id": "iam.projects.serviceAccounts.setIamPolicy",
+       "path": "v1/{+resource}:setIamPolicy",
+       "httpMethod": "POST",
+       "description": "Sets the IAM access control policy for the specified IAM resource.",
+       "parameters": {
+        "resource": {
+         "type": "string",
+         "description": "REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `setIamPolicy` documentation.",
+         "required": true,
+         "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+         "location": "path"
+        }
+       },
+       "parameterOrder": [
+        "resource"
+       ],
+       "request": {
+        "$ref": "SetIamPolicyRequest"
+       },
+       "response": {
+        "$ref": "Policy"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      },
+      "testIamPermissions": {
+       "id": "iam.projects.serviceAccounts.testIamPermissions",
+       "path": "v1/{+resource}:testIamPermissions",
+       "httpMethod": "POST",
+       "description": "Tests the specified permissions against the IAM access control policy for the specified IAM resource.",
+       "parameters": {
+        "resource": {
+         "type": "string",
+         "description": "REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `testIamPermissions` documentation.",
+         "required": true,
+         "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+         "location": "path"
+        }
+       },
+       "parameterOrder": [
+        "resource"
+       ],
+       "request": {
+        "$ref": "TestIamPermissionsRequest"
+       },
+       "response": {
+        "$ref": "TestIamPermissionsResponse"
+       },
+       "scopes": [
+        "https://www.googleapis.com/auth/cloud-platform"
+       ]
+      }
+     },
+     "resources": {
+      "keys": {
+       "methods": {
+        "list": {
+         "id": "iam.projects.serviceAccounts.keys.list",
+         "path": "v1/{+name}/keys",
+         "httpMethod": "GET",
+         "description": "Lists service account keys",
+         "parameters": {
+          "name": {
+           "type": "string",
+           "description": "The resource name of the service account in the format \"projects/{project}/serviceAccounts/{account}\". Using '-' as a wildcard for the project, will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+           "required": true,
+           "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+           "location": "path"
+          },
+          "keyTypes": {
+           "type": "string",
+           "description": "The type of keys the user wants to list. If empty, all key types are included in the response. Duplicate key types are not allowed.",
+           "enum": [
+            "KEY_TYPE_UNSPECIFIED",
+            "USER_MANAGED",
+            "SYSTEM_MANAGED"
+           ],
+           "repeated": true,
+           "location": "query"
+          }
+         },
+         "parameterOrder": [
+          "name"
+         ],
+         "response": {
+          "$ref": "ListServiceAccountKeysResponse"
+         },
+         "scopes": [
+          "https://www.googleapis.com/auth/cloud-platform"
+         ]
+        },
+        "get": {
+         "id": "iam.projects.serviceAccounts.keys.get",
+         "path": "v1/{+name}",
+         "httpMethod": "GET",
+         "description": "Gets the ServiceAccountKey by key id.",
+         "parameters": {
+          "name": {
+           "type": "string",
+           "description": "The resource name of the service account key in the format \"projects/{project}/serviceAccounts/{account}/keys/{key}\". Using '-' as a wildcard for the project will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+           "required": true,
+           "pattern": "^projects/[^/]*/serviceAccounts/[^/]*/keys/[^/]*$",
+           "location": "path"
+          }
+         },
+         "parameterOrder": [
+          "name"
+         ],
+         "response": {
+          "$ref": "ServiceAccountKey"
+         },
+         "scopes": [
+          "https://www.googleapis.com/auth/cloud-platform"
+         ]
+        },
+        "create": {
+         "id": "iam.projects.serviceAccounts.keys.create",
+         "path": "v1/{+name}/keys",
+         "httpMethod": "POST",
+         "description": "Creates a service account key and returns it.",
+         "parameters": {
+          "name": {
+           "type": "string",
+           "description": "The resource name of the service account in the format \"projects/{project}/serviceAccounts/{account}\". Using '-' as a wildcard for the project, will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+           "required": true,
+           "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+           "location": "path"
+          }
+         },
+         "parameterOrder": [
+          "name"
+         ],
+         "request": {
+          "$ref": "CreateServiceAccountKeyRequest"
+         },
+         "response": {
+          "$ref": "ServiceAccountKey"
+         },
+         "scopes": [
+          "https://www.googleapis.com/auth/cloud-platform"
+         ]
+        },
+        "delete": {
+         "id": "iam.projects.serviceAccounts.keys.delete",
+         "path": "v1/{+name}",
+         "httpMethod": "DELETE",
+         "description": "Deletes a service account key.",
+         "parameters": {
+          "name": {
+           "type": "string",
+           "description": "The resource name of the service account key in the format \"projects/{project}/serviceAccounts/{account}/keys/{key}\". Using '-' as a wildcard for the project will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+           "required": true,
+           "pattern": "^projects/[^/]*/serviceAccounts/[^/]*/keys/[^/]*$",
+           "location": "path"
+          }
+         },
+         "parameterOrder": [
+          "name"
+         ],
+         "response": {
+          "$ref": "Empty"
+         },
+         "scopes": [
+          "https://www.googleapis.com/auth/cloud-platform"
+         ]
+        }
+       }
+      }
+     }
+    }
+   }
+  }
+ }
+}
diff --git a/iam/v1/iam-gen.go b/iam/v1/iam-gen.go
new file mode 100644
index 0000000..9b788fd
--- /dev/null
+++ b/iam/v1/iam-gen.go
@@ -0,0 +1,2365 @@
+// Package iam provides access to the Google Identity and Access Management API.
+//
+// See https://cloud.google.com/iam/
+//
+// Usage example:
+//
+//   import "google.golang.org/api/iam/v1"
+//   ...
+//   iamService, err := iam.New(oauthHttpClient)
+package iam // import "google.golang.org/api/iam/v1"
+
+import (
+	"bytes"
+	"encoding/json"
+	"errors"
+	"fmt"
+	context "golang.org/x/net/context"
+	ctxhttp "golang.org/x/net/context/ctxhttp"
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+var _ = ctxhttp.Do
+
+const apiId = "iam:v1"
+const apiName = "iam"
+const apiVersion = "v1"
+const basePath = "https://iam.googleapis.com/"
+
+// OAuth2 scopes used by this API.
+const (
+	// View and manage your data across Google Cloud Platform services
+	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
+)
+
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.Projects = NewProjectsService(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	Projects *ProjectsService
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewProjectsService(s *Service) *ProjectsService {
+	rs := &ProjectsService{s: s}
+	rs.ServiceAccounts = NewProjectsServiceAccountsService(s)
+	return rs
+}
+
+type ProjectsService struct {
+	s *Service
+
+	ServiceAccounts *ProjectsServiceAccountsService
+}
+
+func NewProjectsServiceAccountsService(s *Service) *ProjectsServiceAccountsService {
+	rs := &ProjectsServiceAccountsService{s: s}
+	rs.Keys = NewProjectsServiceAccountsKeysService(s)
+	return rs
+}
+
+type ProjectsServiceAccountsService struct {
+	s *Service
+
+	Keys *ProjectsServiceAccountsKeysService
+}
+
+func NewProjectsServiceAccountsKeysService(s *Service) *ProjectsServiceAccountsKeysService {
+	rs := &ProjectsServiceAccountsKeysService{s: s}
+	return rs
+}
+
+type ProjectsServiceAccountsKeysService struct {
+	s *Service
+}
+
+// Binding: Associates `members` with a `role`.
+type Binding struct {
+	// Members: Specifies the identities requesting access for a Cloud
+	// Platform resource. `members` can have the following values: *
+	// `allUsers`: A special identifier that represents anyone who is on the
+	// internet; with or without a Google account. *
+	// `allAuthenticatedUsers`: A special identifier that represents anyone
+	// who is authenticated with a Google account or a service account. *
+	// `user:{emailid}`: An email address that represents a specific Google
+	// account. For example, `alice@gmail.com` or `joe@example.com`. *
+	// `serviceAccount:{emailid}`: An email address that represents a
+	// service account. For example,
+	// `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An
+	// email address that represents a Google group. For example,
+	// `admins@example.com`. * `domain:{domain}`: A Google Apps domain name
+	// that represents all the users of that domain. For example,
+	// `google.com` or `example.com`.
+	Members []string `json:"members,omitempty"`
+
+	// Role: Role that is assigned to `members`. For example,
+	// `roles/viewer`, `roles/editor`, or `roles/owner`. Required
+	Role string `json:"role,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Members") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Binding) MarshalJSON() ([]byte, error) {
+	type noMethod Binding
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CloudAuditOptions: Write a Cloud Audit log
+type CloudAuditOptions struct {
+}
+
+// Condition: A condition to be met.
+type Condition struct {
+	// Iam: Trusted attributes supplied by the IAM system.
+	//
+	// Possible values:
+	//   "NO_ATTR"
+	//   "AUTHORITY"
+	//   "ATTRIBUTION"
+	Iam string `json:"iam,omitempty"`
+
+	// Op: An operator to apply the subject with.
+	//
+	// Possible values:
+	//   "NO_OP"
+	//   "EQUALS"
+	//   "NOT_EQUALS"
+	//   "IN"
+	//   "NOT_IN"
+	//   "DISCHARGED"
+	Op string `json:"op,omitempty"`
+
+	// Svc: Trusted attributes discharged by the service.
+	Svc string `json:"svc,omitempty"`
+
+	// Sys: Trusted attributes supplied by any service that owns resources
+	// and uses the IAM system for access control.
+	//
+	// Possible values:
+	//   "NO_ATTR"
+	//   "REGION"
+	//   "SERVICE"
+	//   "NAME"
+	//   "IP"
+	Sys string `json:"sys,omitempty"`
+
+	// Value: The object of the condition. Exactly one of these must be set.
+	Value string `json:"value,omitempty"`
+
+	// Values: The objects of the condition. This is mutually exclusive with
+	// 'value'.
+	Values []string `json:"values,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Iam") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Condition) MarshalJSON() ([]byte, error) {
+	type noMethod Condition
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CounterOptions: Options for counters
+type CounterOptions struct {
+	// Field: The field value to attribute.
+	Field string `json:"field,omitempty"`
+
+	// Metric: The metric to update.
+	Metric string `json:"metric,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Field") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CounterOptions) MarshalJSON() ([]byte, error) {
+	type noMethod CounterOptions
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreateServiceAccountKeyRequest: The service account key create
+// request.
+type CreateServiceAccountKeyRequest struct {
+	// PrivateKeyType: The type of the key requested. GOOGLE_CREDENTIALS is
+	// the default key type.
+	//
+	// Possible values:
+	//   "TYPE_UNSPECIFIED"
+	//   "TYPE_PKCS12_FILE"
+	//   "TYPE_GOOGLE_CREDENTIALS_FILE"
+	PrivateKeyType string `json:"privateKeyType,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "PrivateKeyType") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreateServiceAccountKeyRequest) MarshalJSON() ([]byte, error) {
+	type noMethod CreateServiceAccountKeyRequest
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// CreateServiceAccountRequest: The service account create request.
+type CreateServiceAccountRequest struct {
+	// AccountId: Required. The account id that is used to generate the
+	// service account email address and a stable unique id. It is unique
+	// within a project, must be 1-63 characters long, and match the regular
+	// expression [a-z]([-a-z0-9]*[a-z0-9]) to comply with RFC1035.
+	AccountId string `json:"accountId,omitempty"`
+
+	// ServiceAccount: The ServiceAccount resource to create. Currently,
+	// only the following values are user assignable: display_name .
+	ServiceAccount *ServiceAccount `json:"serviceAccount,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *CreateServiceAccountRequest) MarshalJSON() ([]byte, error) {
+	type noMethod CreateServiceAccountRequest
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// DataAccessOptions: Write a Data Access (Gin) log
+type DataAccessOptions struct {
+}
+
+// Empty: A generic empty message that you can re-use to avoid defining
+// duplicated empty messages in your APIs. A typical example is to use
+// it as the request or the response type of an API method. For
+// instance: service Foo { rpc Bar(google.protobuf.Empty) returns
+// (google.protobuf.Empty); } The JSON representation for `Empty` is
+// empty JSON object `{}`.
+type Empty struct {
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+}
+
+// ListServiceAccountKeysResponse: The service account keys list
+// response.
+type ListServiceAccountKeysResponse struct {
+	// Keys: The public keys for the service account.
+	Keys []*ServiceAccountKey `json:"keys,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Keys") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ListServiceAccountKeysResponse) MarshalJSON() ([]byte, error) {
+	type noMethod ListServiceAccountKeysResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ListServiceAccountsResponse: The service account list response.
+type ListServiceAccountsResponse struct {
+	// Accounts: The list of matching service accounts.
+	Accounts []*ServiceAccount `json:"accounts,omitempty"`
+
+	// NextPageToken: To retrieve the next page of results, set
+	// [ListServiceAccountsRequest.page_token] to this value.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Accounts") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ListServiceAccountsResponse) MarshalJSON() ([]byte, error) {
+	type noMethod ListServiceAccountsResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// LogConfig: Specifies what kind of log the caller must write Increment
+// a streamz counter with the specified metric and field names. Metric
+// names should start with a '/', generally be lowercase-only, and end
+// in "_count". Field names should not contain an initial slash. The
+// actual exported metric names will have "/iam/policy" prepended. Field
+// names correspond to IAM request parameters and field values are their
+// respective values. At present only "iam_principal", corresponding to
+// IAMContext.principal, is supported. Examples: counter { metric:
+// "/debug_access_count" field: "iam_principal" } ==> increment counter
+// /iam/policy/backend_debug_access_count {iam_principal=[value of
+// IAMContext.principal]} At this time we do not support: * multiple
+// field names (though this may be supported in the future) *
+// decrementing the counter * incrementing it by anything other than 1
+type LogConfig struct {
+	// CloudAudit: Cloud audit options.
+	CloudAudit *CloudAuditOptions `json:"cloudAudit,omitempty"`
+
+	// Counter: Counter options.
+	Counter *CounterOptions `json:"counter,omitempty"`
+
+	// DataAccess: Data access options.
+	DataAccess *DataAccessOptions `json:"dataAccess,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CloudAudit") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *LogConfig) MarshalJSON() ([]byte, error) {
+	type noMethod LogConfig
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Policy: Defines an Identity and Access Management (IAM) policy. It is
+// used to specify access control policies for Cloud Platform resources.
+// A `Policy` consists of a list of `bindings`. A `Binding` binds a list
+// of `members` to a `role`, where the members can be user accounts,
+// Google groups, Google domains, and service accounts. A `role` is a
+// named list of permissions defined by IAM. **Example** { "bindings": [
+// { "role": "roles/owner", "members": [ "user:mike@example.com",
+// "group:admins@example.com", "domain:google.com",
+// "serviceAccount:my-other-app@appspot.gserviceaccount.com"] }, {
+// "role": "roles/viewer", "members": ["user:sean@example.com"] } ] }
+// For a description of IAM and its features, see the [IAM developer's
+// guide](https://cloud.google.com/iam).
+type Policy struct {
+	// Bindings: Associates a list of `members` to a `role`. Multiple
+	// `bindings` must not be specified for the same `role`. `bindings` with
+	// no members will result in an error.
+	Bindings []*Binding `json:"bindings,omitempty"`
+
+	// Etag: `etag` is used for optimistic concurrency control as a way to
+	// help prevent simultaneous updates of a policy from overwriting each
+	// other. It is strongly suggested that systems make use of the `etag`
+	// in the read-modify-write cycle to perform policy updates in order to
+	// avoid race conditions: An `etag` is returned in the response to
+	// `getIamPolicy`, and systems are expected to put that etag in the
+	// request to `setIamPolicy` to ensure that their change will be applied
+	// to the same version of the policy. If no `etag` is provided in the
+	// call to `setIamPolicy`, then the existing policy is overwritten
+	// blindly.
+	Etag string `json:"etag,omitempty"`
+
+	Rules []*Rule `json:"rules,omitempty"`
+
+	// Version: Version of the `Policy`. The default version is 0.
+	Version int64 `json:"version,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Bindings") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Policy) MarshalJSON() ([]byte, error) {
+	type noMethod Policy
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Rule: A rule to be applied in a Policy.
+type Rule struct {
+	// Action: Required
+	//
+	// Possible values:
+	//   "NO_ACTION"
+	//   "ALLOW"
+	//   "ALLOW_WITH_LOG"
+	//   "DENY"
+	//   "DENY_WITH_LOG"
+	//   "LOG"
+	Action string `json:"action,omitempty"`
+
+	// Conditions: Additional restrictions that must be met
+	Conditions []*Condition `json:"conditions,omitempty"`
+
+	// Description: Human-readable description of the rule.
+	Description string `json:"description,omitempty"`
+
+	// In: The rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in this
+	// set of entries.
+	In []string `json:"in,omitempty"`
+
+	// LogConfig: The config returned to callers of tech.iam.IAM.CheckPolicy
+	// for any entries that match the LOG action.
+	LogConfig []*LogConfig `json:"logConfig,omitempty"`
+
+	// NotIn: The rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is not in
+	// this set of entries. The format for in and not_in entries is the same
+	// as for members in a Binding (see google/iam/v1/policy.proto).
+	NotIn []string `json:"notIn,omitempty"`
+
+	// Permissions: A permission is a string of form '..' (e.g.,
+	// 'storage.buckets.list'). A value of '*' matches all permissions, and
+	// a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.
+	Permissions []string `json:"permissions,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Action") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Rule) MarshalJSON() ([]byte, error) {
+	type noMethod Rule
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ServiceAccount: A service account in the Identity and Access
+// Management API. To create a service account, you specify the
+// project_id and account_id for the account. The account_id is unique
+// within the project, and used to generate the service account email
+// address and a stable unique id. All other methods can identify
+// accounts using the format
+// "projects/{project}/serviceAccounts/{account}". Using '-' as a
+// wildcard for the project, will infer the project from the account.
+// The account value can be the email address or the unique_id of the
+// service account.
+type ServiceAccount struct {
+	// DisplayName: Optional. A user-specified description of the service
+	// account. Must be fewer than 100 UTF-8 bytes.
+	DisplayName string `json:"displayName,omitempty"`
+
+	// Email: @OutputOnly Email address of the service account.
+	Email string `json:"email,omitempty"`
+
+	// Etag: Used to perform a consistent read-modify-write.
+	Etag string `json:"etag,omitempty"`
+
+	// Name: The resource name of the service account in the format
+	// "projects/{project}/serviceAccounts/{account}". In requests using '-'
+	// as a wildcard for the project, will infer the project from the
+	// account and the account value can be the email address or the
+	// unique_id of the service account. In responses the resource name will
+	// always be in the format "projects/{project}/serviceAccounts/{email}".
+	Name string `json:"name,omitempty"`
+
+	// Oauth2ClientId: @OutputOnly. The OAuth2 client id for the service
+	// account. This is used in conjunction with the OAuth2 clientconfig API
+	// to make three legged OAuth2 (3LO) flows to access the data of Google
+	// users.
+	Oauth2ClientId string `json:"oauth2ClientId,omitempty"`
+
+	// ProjectId: @OutputOnly The id of the project that owns the service
+	// account.
+	ProjectId string `json:"projectId,omitempty"`
+
+	// UniqueId: @OutputOnly unique and stable id of the service account.
+	UniqueId string `json:"uniqueId,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "DisplayName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ServiceAccount) MarshalJSON() ([]byte, error) {
+	type noMethod ServiceAccount
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ServiceAccountKey: Represents a service account key. A service
+// account can have 0 or more key pairs. The private keys for these are
+// not stored by Google. ServiceAccountKeys are immutable.
+type ServiceAccountKey struct {
+	// Name: The resource name of the service account key in the format
+	// "projects/{project}/serviceAccounts/{email}/keys/{key}".
+	Name string `json:"name,omitempty"`
+
+	// PrivateKeyData: The key data.
+	PrivateKeyData string `json:"privateKeyData,omitempty"`
+
+	// PrivateKeyType: The type of the private key.
+	//
+	// Possible values:
+	//   "TYPE_UNSPECIFIED"
+	//   "TYPE_PKCS12_FILE"
+	//   "TYPE_GOOGLE_CREDENTIALS_FILE"
+	PrivateKeyType string `json:"privateKeyType,omitempty"`
+
+	// ValidAfterTime: The key can be used after this timestamp.
+	ValidAfterTime string `json:"validAfterTime,omitempty"`
+
+	// ValidBeforeTime: The key can be used before this timestamp.
+	ValidBeforeTime string `json:"validBeforeTime,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Name") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ServiceAccountKey) MarshalJSON() ([]byte, error) {
+	type noMethod ServiceAccountKey
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// SetIamPolicyRequest: Request message for `SetIamPolicy` method.
+type SetIamPolicyRequest struct {
+	// Policy: REQUIRED: The complete policy to be applied to the
+	// `resource`. The size of the policy is limited to a few 10s of KB. An
+	// empty policy is a valid policy but certain Cloud Platform services
+	// (such as Projects) might reject them.
+	Policy *Policy `json:"policy,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Policy") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SetIamPolicyRequest) MarshalJSON() ([]byte, error) {
+	type noMethod SetIamPolicyRequest
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// SignBlobRequest: The service account sign blob request.
+type SignBlobRequest struct {
+	// BytesToSign: The bytes to sign
+	BytesToSign string `json:"bytesToSign,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BytesToSign") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SignBlobRequest) MarshalJSON() ([]byte, error) {
+	type noMethod SignBlobRequest
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// SignBlobResponse: The service account sign blob response.
+type SignBlobResponse struct {
+	// KeyId: The id of the key used to sign the blob.
+	KeyId string `json:"keyId,omitempty"`
+
+	// Signature: The signed blob.
+	Signature string `json:"signature,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "KeyId") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SignBlobResponse) MarshalJSON() ([]byte, error) {
+	type noMethod SignBlobResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// TestIamPermissionsRequest: Request message for `TestIamPermissions`
+// method.
+type TestIamPermissionsRequest struct {
+	// Permissions: The set of permissions to check for the `resource`.
+	// Permissions with wildcards (such as '*' or 'storage.*') are not
+	// allowed. For more information see IAM Overview.
+	Permissions []string `json:"permissions,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Permissions") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *TestIamPermissionsRequest) MarshalJSON() ([]byte, error) {
+	type noMethod TestIamPermissionsRequest
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// TestIamPermissionsResponse: Response message for `TestIamPermissions`
+// method.
+type TestIamPermissionsResponse struct {
+	// Permissions: A subset of `TestPermissionsRequest.permissions` that
+	// the caller is allowed.
+	Permissions []string `json:"permissions,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Permissions") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *TestIamPermissionsResponse) MarshalJSON() ([]byte, error) {
+	type noMethod TestIamPermissionsResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// method id "iam.projects.serviceAccounts.create":
+
+type ProjectsServiceAccountsCreateCall struct {
+	s                           *Service
+	name                        string
+	createserviceaccountrequest *CreateServiceAccountRequest
+	urlParams_                  gensupport.URLParams
+	ctx_                        context.Context
+}
+
+// Create: Creates a service account and returns it.
+func (r *ProjectsServiceAccountsService) Create(name string, createserviceaccountrequest *CreateServiceAccountRequest) *ProjectsServiceAccountsCreateCall {
+	c := &ProjectsServiceAccountsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.createserviceaccountrequest = createserviceaccountrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsServiceAccountsCreateCall) Fields(s ...googleapi.Field) *ProjectsServiceAccountsCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsServiceAccountsCreateCall) Context(ctx context.Context) *ProjectsServiceAccountsCreateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsServiceAccountsCreateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.createserviceaccountrequest)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}/serviceAccounts")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "iam.projects.serviceAccounts.create" call.
+// Exactly one of *ServiceAccount or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *ServiceAccount.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsServiceAccountsCreateCall) Do(opts ...googleapi.CallOption) (*ServiceAccount, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ServiceAccount{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates a service account and returns it.",
+	//   "httpMethod": "POST",
+	//   "id": "iam.projects.serviceAccounts.create",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required. The resource name of the project associated with the service accounts, such as \"projects/123\"",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}/serviceAccounts",
+	//   "request": {
+	//     "$ref": "CreateServiceAccountRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "ServiceAccount"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "iam.projects.serviceAccounts.delete":
+
+type ProjectsServiceAccountsDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes a service acount.
+func (r *ProjectsServiceAccountsService) Delete(name string) *ProjectsServiceAccountsDeleteCall {
+	c := &ProjectsServiceAccountsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsServiceAccountsDeleteCall) Fields(s ...googleapi.Field) *ProjectsServiceAccountsDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsServiceAccountsDeleteCall) Context(ctx context.Context) *ProjectsServiceAccountsDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsServiceAccountsDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "iam.projects.serviceAccounts.delete" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsServiceAccountsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes a service acount.",
+	//   "httpMethod": "DELETE",
+	//   "id": "iam.projects.serviceAccounts.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the service account in the format \"projects/{project}/serviceAccounts/{account}\". Using '-' as a wildcard for the project, will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "iam.projects.serviceAccounts.get":
+
+type ProjectsServiceAccountsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets a ServiceAccount
+func (r *ProjectsServiceAccountsService) Get(name string) *ProjectsServiceAccountsGetCall {
+	c := &ProjectsServiceAccountsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsServiceAccountsGetCall) Fields(s ...googleapi.Field) *ProjectsServiceAccountsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsServiceAccountsGetCall) IfNoneMatch(entityTag string) *ProjectsServiceAccountsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsServiceAccountsGetCall) Context(ctx context.Context) *ProjectsServiceAccountsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsServiceAccountsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "iam.projects.serviceAccounts.get" call.
+// Exactly one of *ServiceAccount or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *ServiceAccount.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsServiceAccountsGetCall) Do(opts ...googleapi.CallOption) (*ServiceAccount, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ServiceAccount{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets a ServiceAccount",
+	//   "httpMethod": "GET",
+	//   "id": "iam.projects.serviceAccounts.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the service account in the format \"projects/{project}/serviceAccounts/{account}\". Using '-' as a wildcard for the project, will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "ServiceAccount"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "iam.projects.serviceAccounts.getIamPolicy":
+
+type ProjectsServiceAccountsGetIamPolicyCall struct {
+	s          *Service
+	resource   string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// GetIamPolicy: Returns the IAM access control policy for specified IAM
+// resource.
+func (r *ProjectsServiceAccountsService) GetIamPolicy(resource string) *ProjectsServiceAccountsGetIamPolicyCall {
+	c := &ProjectsServiceAccountsGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsServiceAccountsGetIamPolicyCall) Fields(s ...googleapi.Field) *ProjectsServiceAccountsGetIamPolicyCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsServiceAccountsGetIamPolicyCall) Context(ctx context.Context) *ProjectsServiceAccountsGetIamPolicyCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsServiceAccountsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:getIamPolicy")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"resource": c.resource,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "iam.projects.serviceAccounts.getIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsServiceAccountsGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Policy{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Returns the IAM access control policy for specified IAM resource.",
+	//   "httpMethod": "POST",
+	//   "id": "iam.projects.serviceAccounts.getIamPolicy",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `getIamPolicy` documentation.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+resource}:getIamPolicy",
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "iam.projects.serviceAccounts.list":
+
+type ProjectsServiceAccountsListCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Lists service accounts for a project.
+func (r *ProjectsServiceAccountsService) List(name string) *ProjectsServiceAccountsListCall {
+	c := &ProjectsServiceAccountsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Optional limit on
+// the number of service accounts to include in the response. Further
+// accounts can subsequently be obtained by including the
+// [ListServiceAccountsResponse.next_page_token] in a subsequent
+// request.
+func (c *ProjectsServiceAccountsListCall) PageSize(pageSize int64) *ProjectsServiceAccountsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Optional
+// pagination token returned in an earlier
+// [ListServiceAccountsResponse.next_page_token].
+func (c *ProjectsServiceAccountsListCall) PageToken(pageToken string) *ProjectsServiceAccountsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsServiceAccountsListCall) Fields(s ...googleapi.Field) *ProjectsServiceAccountsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsServiceAccountsListCall) IfNoneMatch(entityTag string) *ProjectsServiceAccountsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsServiceAccountsListCall) Context(ctx context.Context) *ProjectsServiceAccountsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsServiceAccountsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}/serviceAccounts")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "iam.projects.serviceAccounts.list" call.
+// Exactly one of *ListServiceAccountsResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *ListServiceAccountsResponse.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsServiceAccountsListCall) Do(opts ...googleapi.CallOption) (*ListServiceAccountsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListServiceAccountsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists service accounts for a project.",
+	//   "httpMethod": "GET",
+	//   "id": "iam.projects.serviceAccounts.list",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required. The resource name of the project associated with the service accounts, such as \"projects/123\"",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]*$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Optional limit on the number of service accounts to include in the response. Further accounts can subsequently be obtained by including the [ListServiceAccountsResponse.next_page_token] in a subsequent request.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Optional pagination token returned in an earlier [ListServiceAccountsResponse.next_page_token].",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}/serviceAccounts",
+	//   "response": {
+	//     "$ref": "ListServiceAccountsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsServiceAccountsListCall) Pages(ctx context.Context, f func(*ListServiceAccountsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "iam.projects.serviceAccounts.setIamPolicy":
+
+type ProjectsServiceAccountsSetIamPolicyCall struct {
+	s                   *Service
+	resource            string
+	setiampolicyrequest *SetIamPolicyRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+}
+
+// SetIamPolicy: Sets the IAM access control policy for the specified
+// IAM resource.
+func (r *ProjectsServiceAccountsService) SetIamPolicy(resource string, setiampolicyrequest *SetIamPolicyRequest) *ProjectsServiceAccountsSetIamPolicyCall {
+	c := &ProjectsServiceAccountsSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.setiampolicyrequest = setiampolicyrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsServiceAccountsSetIamPolicyCall) Fields(s ...googleapi.Field) *ProjectsServiceAccountsSetIamPolicyCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsServiceAccountsSetIamPolicyCall) Context(ctx context.Context) *ProjectsServiceAccountsSetIamPolicyCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsServiceAccountsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.setiampolicyrequest)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:setIamPolicy")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"resource": c.resource,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "iam.projects.serviceAccounts.setIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsServiceAccountsSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Policy{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Sets the IAM access control policy for the specified IAM resource.",
+	//   "httpMethod": "POST",
+	//   "id": "iam.projects.serviceAccounts.setIamPolicy",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `setIamPolicy` documentation.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+resource}:setIamPolicy",
+	//   "request": {
+	//     "$ref": "SetIamPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "iam.projects.serviceAccounts.signBlob":
+
+type ProjectsServiceAccountsSignBlobCall struct {
+	s               *Service
+	name            string
+	signblobrequest *SignBlobRequest
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+}
+
+// SignBlob: Signs a blob using a service account.
+func (r *ProjectsServiceAccountsService) SignBlob(name string, signblobrequest *SignBlobRequest) *ProjectsServiceAccountsSignBlobCall {
+	c := &ProjectsServiceAccountsSignBlobCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.signblobrequest = signblobrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsServiceAccountsSignBlobCall) Fields(s ...googleapi.Field) *ProjectsServiceAccountsSignBlobCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsServiceAccountsSignBlobCall) Context(ctx context.Context) *ProjectsServiceAccountsSignBlobCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsServiceAccountsSignBlobCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.signblobrequest)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:signBlob")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "iam.projects.serviceAccounts.signBlob" call.
+// Exactly one of *SignBlobResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *SignBlobResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsServiceAccountsSignBlobCall) Do(opts ...googleapi.CallOption) (*SignBlobResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &SignBlobResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Signs a blob using a service account.",
+	//   "httpMethod": "POST",
+	//   "id": "iam.projects.serviceAccounts.signBlob",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the service account in the format \"projects/{project}/serviceAccounts/{account}\". Using '-' as a wildcard for the project, will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:signBlob",
+	//   "request": {
+	//     "$ref": "SignBlobRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "SignBlobResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "iam.projects.serviceAccounts.testIamPermissions":
+
+type ProjectsServiceAccountsTestIamPermissionsCall struct {
+	s                         *Service
+	resource                  string
+	testiampermissionsrequest *TestIamPermissionsRequest
+	urlParams_                gensupport.URLParams
+	ctx_                      context.Context
+}
+
+// TestIamPermissions: Tests the specified permissions against the IAM
+// access control policy for the specified IAM resource.
+func (r *ProjectsServiceAccountsService) TestIamPermissions(resource string, testiampermissionsrequest *TestIamPermissionsRequest) *ProjectsServiceAccountsTestIamPermissionsCall {
+	c := &ProjectsServiceAccountsTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.testiampermissionsrequest = testiampermissionsrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsServiceAccountsTestIamPermissionsCall) Fields(s ...googleapi.Field) *ProjectsServiceAccountsTestIamPermissionsCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsServiceAccountsTestIamPermissionsCall) Context(ctx context.Context) *ProjectsServiceAccountsTestIamPermissionsCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsServiceAccountsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.testiampermissionsrequest)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:testIamPermissions")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"resource": c.resource,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "iam.projects.serviceAccounts.testIamPermissions" call.
+// Exactly one of *TestIamPermissionsResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *TestIamPermissionsResponse.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsServiceAccountsTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestIamPermissionsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &TestIamPermissionsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Tests the specified permissions against the IAM access control policy for the specified IAM resource.",
+	//   "httpMethod": "POST",
+	//   "id": "iam.projects.serviceAccounts.testIamPermissions",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path, such as `projects/*project*/zones/*zone*/disks/*disk*`. The format for the path specified in this value is resource specific and is specified in the `testIamPermissions` documentation.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+resource}:testIamPermissions",
+	//   "request": {
+	//     "$ref": "TestIamPermissionsRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "TestIamPermissionsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "iam.projects.serviceAccounts.update":
+
+type ProjectsServiceAccountsUpdateCall struct {
+	s              *Service
+	name           string
+	serviceaccount *ServiceAccount
+	urlParams_     gensupport.URLParams
+	ctx_           context.Context
+}
+
+// Update: Updates a service account. Currently, only the following
+// fields are updatable: 'display_name' . The 'etag' is mandatory.
+func (r *ProjectsServiceAccountsService) Update(name string, serviceaccount *ServiceAccount) *ProjectsServiceAccountsUpdateCall {
+	c := &ProjectsServiceAccountsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.serviceaccount = serviceaccount
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsServiceAccountsUpdateCall) Fields(s ...googleapi.Field) *ProjectsServiceAccountsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsServiceAccountsUpdateCall) Context(ctx context.Context) *ProjectsServiceAccountsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsServiceAccountsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.serviceaccount)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "iam.projects.serviceAccounts.update" call.
+// Exactly one of *ServiceAccount or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *ServiceAccount.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsServiceAccountsUpdateCall) Do(opts ...googleapi.CallOption) (*ServiceAccount, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ServiceAccount{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates a service account. Currently, only the following fields are updatable: 'display_name' . The 'etag' is mandatory.",
+	//   "httpMethod": "PUT",
+	//   "id": "iam.projects.serviceAccounts.update",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the service account in the format \"projects/{project}/serviceAccounts/{account}\". In requests using '-' as a wildcard for the project, will infer the project from the account and the account value can be the email address or the unique_id of the service account. In responses the resource name will always be in the format \"projects/{project}/serviceAccounts/{email}\".",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "request": {
+	//     "$ref": "ServiceAccount"
+	//   },
+	//   "response": {
+	//     "$ref": "ServiceAccount"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "iam.projects.serviceAccounts.keys.create":
+
+type ProjectsServiceAccountsKeysCreateCall struct {
+	s                              *Service
+	name                           string
+	createserviceaccountkeyrequest *CreateServiceAccountKeyRequest
+	urlParams_                     gensupport.URLParams
+	ctx_                           context.Context
+}
+
+// Create: Creates a service account key and returns it.
+func (r *ProjectsServiceAccountsKeysService) Create(name string, createserviceaccountkeyrequest *CreateServiceAccountKeyRequest) *ProjectsServiceAccountsKeysCreateCall {
+	c := &ProjectsServiceAccountsKeysCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.createserviceaccountkeyrequest = createserviceaccountkeyrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsServiceAccountsKeysCreateCall) Fields(s ...googleapi.Field) *ProjectsServiceAccountsKeysCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsServiceAccountsKeysCreateCall) Context(ctx context.Context) *ProjectsServiceAccountsKeysCreateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsServiceAccountsKeysCreateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.createserviceaccountkeyrequest)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}/keys")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "iam.projects.serviceAccounts.keys.create" call.
+// Exactly one of *ServiceAccountKey or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ServiceAccountKey.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsServiceAccountsKeysCreateCall) Do(opts ...googleapi.CallOption) (*ServiceAccountKey, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ServiceAccountKey{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates a service account key and returns it.",
+	//   "httpMethod": "POST",
+	//   "id": "iam.projects.serviceAccounts.keys.create",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the service account in the format \"projects/{project}/serviceAccounts/{account}\". Using '-' as a wildcard for the project, will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}/keys",
+	//   "request": {
+	//     "$ref": "CreateServiceAccountKeyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "ServiceAccountKey"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "iam.projects.serviceAccounts.keys.delete":
+
+type ProjectsServiceAccountsKeysDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes a service account key.
+func (r *ProjectsServiceAccountsKeysService) Delete(name string) *ProjectsServiceAccountsKeysDeleteCall {
+	c := &ProjectsServiceAccountsKeysDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsServiceAccountsKeysDeleteCall) Fields(s ...googleapi.Field) *ProjectsServiceAccountsKeysDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsServiceAccountsKeysDeleteCall) Context(ctx context.Context) *ProjectsServiceAccountsKeysDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsServiceAccountsKeysDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "iam.projects.serviceAccounts.keys.delete" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *ProjectsServiceAccountsKeysDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Empty{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes a service account key.",
+	//   "httpMethod": "DELETE",
+	//   "id": "iam.projects.serviceAccounts.keys.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the service account key in the format \"projects/{project}/serviceAccounts/{account}/keys/{key}\". Using '-' as a wildcard for the project will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]*/serviceAccounts/[^/]*/keys/[^/]*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "iam.projects.serviceAccounts.keys.get":
+
+type ProjectsServiceAccountsKeysGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets the ServiceAccountKey by key id.
+func (r *ProjectsServiceAccountsKeysService) Get(name string) *ProjectsServiceAccountsKeysGetCall {
+	c := &ProjectsServiceAccountsKeysGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsServiceAccountsKeysGetCall) Fields(s ...googleapi.Field) *ProjectsServiceAccountsKeysGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsServiceAccountsKeysGetCall) IfNoneMatch(entityTag string) *ProjectsServiceAccountsKeysGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsServiceAccountsKeysGetCall) Context(ctx context.Context) *ProjectsServiceAccountsKeysGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsServiceAccountsKeysGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "iam.projects.serviceAccounts.keys.get" call.
+// Exactly one of *ServiceAccountKey or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ServiceAccountKey.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsServiceAccountsKeysGetCall) Do(opts ...googleapi.CallOption) (*ServiceAccountKey, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ServiceAccountKey{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets the ServiceAccountKey by key id.",
+	//   "httpMethod": "GET",
+	//   "id": "iam.projects.serviceAccounts.keys.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the service account key in the format \"projects/{project}/serviceAccounts/{account}/keys/{key}\". Using '-' as a wildcard for the project will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]*/serviceAccounts/[^/]*/keys/[^/]*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "ServiceAccountKey"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "iam.projects.serviceAccounts.keys.list":
+
+type ProjectsServiceAccountsKeysListCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Lists service account keys
+func (r *ProjectsServiceAccountsKeysService) List(name string) *ProjectsServiceAccountsKeysListCall {
+	c := &ProjectsServiceAccountsKeysListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// KeyTypes sets the optional parameter "keyTypes": The type of keys the
+// user wants to list. If empty, all key types are included in the
+// response. Duplicate key types are not allowed.
+//
+// Possible values:
+//   "KEY_TYPE_UNSPECIFIED"
+//   "USER_MANAGED"
+//   "SYSTEM_MANAGED"
+func (c *ProjectsServiceAccountsKeysListCall) KeyTypes(keyTypes ...string) *ProjectsServiceAccountsKeysListCall {
+	c.urlParams_.SetMulti("keyTypes", append([]string{}, keyTypes...))
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsServiceAccountsKeysListCall) Fields(s ...googleapi.Field) *ProjectsServiceAccountsKeysListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsServiceAccountsKeysListCall) IfNoneMatch(entityTag string) *ProjectsServiceAccountsKeysListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsServiceAccountsKeysListCall) Context(ctx context.Context) *ProjectsServiceAccountsKeysListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ProjectsServiceAccountsKeysListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}/keys")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "iam.projects.serviceAccounts.keys.list" call.
+// Exactly one of *ListServiceAccountKeysResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *ListServiceAccountKeysResponse.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsServiceAccountsKeysListCall) Do(opts ...googleapi.CallOption) (*ListServiceAccountKeysResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListServiceAccountKeysResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists service account keys",
+	//   "httpMethod": "GET",
+	//   "id": "iam.projects.serviceAccounts.keys.list",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "keyTypes": {
+	//       "description": "The type of keys the user wants to list. If empty, all key types are included in the response. Duplicate key types are not allowed.",
+	//       "enum": [
+	//         "KEY_TYPE_UNSPECIFIED",
+	//         "USER_MANAGED",
+	//         "SYSTEM_MANAGED"
+	//       ],
+	//       "location": "query",
+	//       "repeated": true,
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The resource name of the service account in the format \"projects/{project}/serviceAccounts/{account}\". Using '-' as a wildcard for the project, will infer the project from the account. The account value can be the email address or the unique_id of the service account.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]*/serviceAccounts/[^/]*$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}/keys",
+	//   "response": {
+	//     "$ref": "ListServiceAccountKeysResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
diff --git a/iam/v1alpha1/iam-api.json b/iam/v1alpha1/iam-api.json
new file mode 100644
index 0000000..c3afd1a
--- /dev/null
+++ b/iam/v1alpha1/iam-api.json
@@ -0,0 +1,103 @@
+{
+ "kind": "discovery#restDescription",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/9om9dkuiUYBb6eJGHdHqicXq174\"",
+ "discoveryVersion": "v1",
+ "id": "iam:v1alpha1",
+ "name": "iam",
+ "version": "v1alpha1",
+ "revision": "20160129",
+ "title": "Google Identity and Access Management API",
+ "description": "Manages identity and access control for Google Cloud Platform resources, including the creation of service accounts, which you can use to authenticate to Google and make API calls.",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "icons": {
+  "x16": "http://www.google.com/images/icons/product/search-16.gif",
+  "x32": "http://www.google.com/images/icons/product/search-32.gif"
+ },
+ "documentationLink": "https://cloud.google.com/iam/",
+ "protocol": "rest",
+ "baseUrl": "https://iam.googleapis.com/",
+ "basePath": "",
+ "rootUrl": "https://iam.googleapis.com/",
+ "servicePath": "",
+ "batchPath": "batch",
+ "parameters": {
+  "access_token": {
+   "type": "string",
+   "description": "OAuth access token.",
+   "location": "query"
+  },
+  "alt": {
+   "type": "string",
+   "description": "Data format for response.",
+   "default": "json",
+   "enumDescriptions": [
+    "Responses with Content-Type of application/json",
+    "Media download with context-dependent Content-Type",
+    "Responses with Content-Type of application/x-protobuf"
+   ],
+   "location": "query"
+  },
+  "bearer_token": {
+   "type": "string",
+   "description": "OAuth bearer token.",
+   "location": "query"
+  },
+  "callback": {
+   "type": "string",
+   "description": "JSONP",
+   "location": "query"
+  },
+  "fields": {
+   "type": "string",
+   "description": "Selector specifying which fields to include in a partial response.",
+   "location": "query"
+  },
+  "key": {
+   "type": "string",
+   "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+   "location": "query"
+  },
+  "oauth_token": {
+   "type": "string",
+   "description": "OAuth 2.0 token for the current user.",
+   "location": "query"
+  },
+  "pp": {
+   "type": "boolean",
+   "description": "Pretty-print response.",
+   "default": "true",
+   "location": "query"
+  },
+  "prettyPrint": {
+   "type": "boolean",
+   "description": "Returns response with indentations and line breaks.",
+   "default": "true",
+   "location": "query"
+  },
+  "quotaUser": {
+   "type": "string",
+   "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+   "location": "query"
+  },
+  "upload_protocol": {
+   "type": "string",
+   "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+   "location": "query"
+  },
+  "uploadType": {
+   "type": "string",
+   "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+   "location": "query"
+  },
+  "$.xgafv": {
+   "type": "string",
+   "description": "V1 error format.",
+   "enumDescriptions": [
+    "v1 error format",
+    "v2 error format"
+   ],
+   "location": "query"
+  }
+ }
+}
diff --git a/iam/v1alpha1/iam-gen.go b/iam/v1alpha1/iam-gen.go
new file mode 100644
index 0000000..5463239
--- /dev/null
+++ b/iam/v1alpha1/iam-gen.go
@@ -0,0 +1,67 @@
+// Package iam provides access to the Google Identity and Access Management API.
+//
+// See https://cloud.google.com/iam/
+//
+// Usage example:
+//
+//   import "google.golang.org/api/iam/v1alpha1"
+//   ...
+//   iamService, err := iam.New(oauthHttpClient)
+package iam // import "google.golang.org/api/iam/v1alpha1"
+
+import (
+	"bytes"
+	"encoding/json"
+	"errors"
+	"fmt"
+	context "golang.org/x/net/context"
+	ctxhttp "golang.org/x/net/context/ctxhttp"
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+var _ = ctxhttp.Do
+
+const apiId = "iam:v1alpha1"
+const apiName = "iam"
+const apiVersion = "v1alpha1"
+const basePath = "https://iam.googleapis.com/"
+
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
diff --git a/identitytoolkit/v3/identitytoolkit-api.json b/identitytoolkit/v3/identitytoolkit-api.json
index 9edce9c..09eca6d 100644
--- a/identitytoolkit/v3/identitytoolkit-api.json
+++ b/identitytoolkit/v3/identitytoolkit-api.json
@@ -1,12 +1,12 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/kKOq-C8AmUn0DMuhP1kcesa3f-U\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/xPOEaVu3pXCyFCLJNoRrVds6kh4\"",
  "discoveryVersion": "v1",
  "id": "identitytoolkit:v3",
  "name": "identitytoolkit",
  "canonicalName": "Identity Toolkit",
  "version": "v3",
- "revision": "20160108",
+ "revision": "20160125",
  "title": "Google Identity Toolkit API",
  "description": "Help the third party sites to implement federated login.",
  "ownerDomain": "google.com",
@@ -73,6 +73,13 @@
    "type": "object",
    "description": "Response of creating the IDP authentication URL.",
    "properties": {
+    "allProviders": {
+     "type": "array",
+     "description": "all providers the user has once used to do federated login",
+     "items": {
+      "type": "string"
+     }
+    },
     "authUri": {
      "type": "string",
      "description": "The URI used by the IDP to authenticate the user."
@@ -250,6 +257,11 @@
    "type": "object",
    "description": "Request to delete account.",
    "properties": {
+    "delegatedProjectNumber": {
+     "type": "string",
+     "description": "GCP project number of the requesting delegated app. Currently only intended for Firebase V1 migration.",
+     "format": "int64"
+    },
     "localId": {
      "type": "string",
      "description": "The local ID of the user."
@@ -261,6 +273,11 @@
    "type": "object",
    "description": "Request to download user account in batch.",
    "properties": {
+    "delegatedProjectNumber": {
+     "type": "string",
+     "description": "GCP project number of the requesting delegated app. Currently only intended for Firebase V1 migration.",
+     "format": "int64"
+    },
     "maxResults": {
      "type": "integer",
      "description": "The max number of results to return in the response.",
@@ -367,6 +384,11 @@
      "type": "string",
      "description": "Response to the captcha."
     },
+    "delegatedProjectNumber": {
+     "type": "string",
+     "description": "GCP project number of the requesting delegated app. Currently only intended for Firebase V1 migration.",
+     "format": "int64"
+    },
     "disableUser": {
      "type": "boolean",
      "description": "Whether to disable the user."
@@ -452,6 +474,11 @@
    "type": "object",
    "description": "Request to upload user account in batch.",
    "properties": {
+    "delegatedProjectNumber": {
+     "type": "string",
+     "description": "GCP project number of the requesting delegated app. Currently only intended for Firebase V1 migration.",
+     "format": "int64"
+    },
     "hashAlgorithm": {
      "type": "string",
      "description": "The password hash algorithm."
@@ -490,6 +517,11 @@
    "type": "object",
    "description": "Request to verify the IDP assertion.",
    "properties": {
+    "delegatedProjectNumber": {
+     "type": "string",
+     "description": "GCP project number of the requesting delegated app. Currently only intended for Firebase V1 migration.",
+     "format": "int64"
+    },
     "instanceId": {
      "type": "string",
      "description": "Instance id token of the app."
@@ -544,6 +576,11 @@
      "type": "string",
      "description": "Response to the captcha."
     },
+    "delegatedProjectNumber": {
+     "type": "string",
+     "description": "GCP project number of the requesting delegated app. Currently only intended for Firebase V1 migration.",
+     "format": "int64"
+    },
     "email": {
      "type": "string",
      "description": "The email of the user."
diff --git a/identitytoolkit/v3/identitytoolkit-gen.go b/identitytoolkit/v3/identitytoolkit-gen.go
index 0d09791..602008d 100644
--- a/identitytoolkit/v3/identitytoolkit-gen.go
+++ b/identitytoolkit/v3/identitytoolkit-gen.go
@@ -81,6 +81,10 @@
 // CreateAuthUriResponse: Response of creating the IDP authentication
 // URL.
 type CreateAuthUriResponse struct {
+	// AllProviders: all providers the user has once used to do federated
+	// login
+	AllProviders []string `json:"allProviders,omitempty"`
+
 	// AuthUri: The URI used by the IDP to authenticate the user.
 	AuthUri string `json:"authUri,omitempty"`
 
@@ -109,7 +113,7 @@
 	// server.
 	googleapi.ServerResponse `json:"-"`
 
-	// ForceSendFields is a list of field names (e.g. "AuthUri") to
+	// ForceSendFields is a list of field names (e.g. "AllProviders") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -329,15 +333,20 @@
 // IdentitytoolkitRelyingpartyDeleteAccountRequest: Request to delete
 // account.
 type IdentitytoolkitRelyingpartyDeleteAccountRequest struct {
+	// DelegatedProjectNumber: GCP project number of the requesting
+	// delegated app. Currently only intended for Firebase V1 migration.
+	DelegatedProjectNumber int64 `json:"delegatedProjectNumber,omitempty,string"`
+
 	// LocalId: The local ID of the user.
 	LocalId string `json:"localId,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "LocalId") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
+	// ForceSendFields is a list of field names (e.g.
+	// "DelegatedProjectNumber") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
 	ForceSendFields []string `json:"-"`
 }
 
@@ -350,6 +359,10 @@
 // IdentitytoolkitRelyingpartyDownloadAccountRequest: Request to
 // download user account in batch.
 type IdentitytoolkitRelyingpartyDownloadAccountRequest struct {
+	// DelegatedProjectNumber: GCP project number of the requesting
+	// delegated app. Currently only intended for Firebase V1 migration.
+	DelegatedProjectNumber int64 `json:"delegatedProjectNumber,omitempty,string"`
+
 	// MaxResults: The max number of results to return in the response.
 	MaxResults int64 `json:"maxResults,omitempty"`
 
@@ -357,12 +370,13 @@
 	// the previous response.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "MaxResults") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
+	// ForceSendFields is a list of field names (e.g.
+	// "DelegatedProjectNumber") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
 	ForceSendFields []string `json:"-"`
 }
 
@@ -472,6 +486,10 @@
 	// CaptchaResponse: Response to the captcha.
 	CaptchaResponse string `json:"captchaResponse,omitempty"`
 
+	// DelegatedProjectNumber: GCP project number of the requesting
+	// delegated app. Currently only intended for Firebase V1 migration.
+	DelegatedProjectNumber int64 `json:"delegatedProjectNumber,omitempty,string"`
+
 	// DisableUser: Whether to disable the user.
 	DisableUser bool `json:"disableUser,omitempty"`
 
@@ -575,6 +593,10 @@
 // IdentitytoolkitRelyingpartyUploadAccountRequest: Request to upload
 // user account in batch.
 type IdentitytoolkitRelyingpartyUploadAccountRequest struct {
+	// DelegatedProjectNumber: GCP project number of the requesting
+	// delegated app. Currently only intended for Firebase V1 migration.
+	DelegatedProjectNumber int64 `json:"delegatedProjectNumber,omitempty,string"`
+
 	// HashAlgorithm: The password hash algorithm.
 	HashAlgorithm string `json:"hashAlgorithm,omitempty"`
 
@@ -595,12 +617,13 @@
 	// Users: The account info to be stored.
 	Users []*UserInfo `json:"users,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "HashAlgorithm") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
+	// ForceSendFields is a list of field names (e.g.
+	// "DelegatedProjectNumber") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
 	ForceSendFields []string `json:"-"`
 }
 
@@ -613,6 +636,10 @@
 // IdentitytoolkitRelyingpartyVerifyAssertionRequest: Request to verify
 // the IDP assertion.
 type IdentitytoolkitRelyingpartyVerifyAssertionRequest struct {
+	// DelegatedProjectNumber: GCP project number of the requesting
+	// delegated app. Currently only intended for Firebase V1 migration.
+	DelegatedProjectNumber int64 `json:"delegatedProjectNumber,omitempty,string"`
+
 	// InstanceId: Instance id token of the app.
 	InstanceId string `json:"instanceId,omitempty"`
 
@@ -634,12 +661,13 @@
 	// createAuthUri request.
 	SessionId string `json:"sessionId,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "InstanceId") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
+	// ForceSendFields is a list of field names (e.g.
+	// "DelegatedProjectNumber") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
 	ForceSendFields []string `json:"-"`
 }
 
@@ -682,6 +710,10 @@
 	// CaptchaResponse: Response to the captcha.
 	CaptchaResponse string `json:"captchaResponse,omitempty"`
 
+	// DelegatedProjectNumber: GCP project number of the requesting
+	// delegated app. Currently only intended for Firebase V1 migration.
+	DelegatedProjectNumber int64 `json:"delegatedProjectNumber,omitempty,string"`
+
 	// Email: The email of the user.
 	Email string `json:"email,omitempty"`
 
diff --git a/oauth2/v1/oauth2-api.json b/oauth2/v1/oauth2-api.json
index c7142e8..4680bde 100644
--- a/oauth2/v1/oauth2-api.json
+++ b/oauth2/v1/oauth2-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/E7VrRWc2416Btp9uIQ42rmbOltA\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/yCQRfFHTc1fLhzplai55D8MzAks\"",
  "discoveryVersion": "v1",
  "id": "oauth2:v1",
  "name": "oauth2",
  "version": "v1",
- "revision": "20150714",
+ "revision": "20160122",
  "title": "Google OAuth2 API",
  "description": "Lets you access OAuth2 protocol related APIs.",
  "ownerDomain": "google.com",
@@ -70,7 +70,7 @@
   "oauth2": {
    "scopes": {
     "https://www.googleapis.com/auth/plus.login": {
-     "description": "Know your basic profile info and list of people in your circles."
+     "description": "Know the list of people in your circles, your age range, and language"
     },
     "https://www.googleapis.com/auth/plus.me": {
      "description": "Know who you are on Google"
diff --git a/oauth2/v1/oauth2-gen.go b/oauth2/v1/oauth2-gen.go
index 6fc205c..57d351f 100644
--- a/oauth2/v1/oauth2-gen.go
+++ b/oauth2/v1/oauth2-gen.go
@@ -47,7 +47,7 @@
 
 // OAuth2 scopes used by this API.
 const (
-	// Know your basic profile info and list of people in your circles.
+	// Know the list of people in your circles, your age range, and language
 	PlusLoginScope = "https://www.googleapis.com/auth/plus.login"
 
 	// Know who you are on Google
diff --git a/oauth2/v2/oauth2-api.json b/oauth2/v2/oauth2-api.json
index 1b59fae..57d2196 100644
--- a/oauth2/v2/oauth2-api.json
+++ b/oauth2/v2/oauth2-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/I-Kz7nVLqL3C3aFzaPv8bMiNptU\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/41xzEr7Raz2twp-5wqtU1brxM4E\"",
  "discoveryVersion": "v1",
  "id": "oauth2:v2",
  "name": "oauth2",
  "version": "v2",
- "revision": "20150319",
+ "revision": "20160122",
  "title": "Google OAuth2 API",
  "description": "Lets you access OAuth2 protocol related APIs.",
  "ownerDomain": "google.com",
@@ -70,7 +70,7 @@
   "oauth2": {
    "scopes": {
     "https://www.googleapis.com/auth/plus.login": {
-     "description": "Know your basic profile info and list of people in your circles."
+     "description": "Know the list of people in your circles, your age range, and language"
     },
     "https://www.googleapis.com/auth/plus.me": {
      "description": "Know who you are on Google"
diff --git a/oauth2/v2/oauth2-gen.go b/oauth2/v2/oauth2-gen.go
index d039d98..5f194b2 100644
--- a/oauth2/v2/oauth2-gen.go
+++ b/oauth2/v2/oauth2-gen.go
@@ -47,7 +47,7 @@
 
 // OAuth2 scopes used by this API.
 const (
-	// Know your basic profile info and list of people in your circles.
+	// Know the list of people in your circles, your age range, and language
 	PlusLoginScope = "https://www.googleapis.com/auth/plus.login"
 
 	// Know who you are on Google
diff --git a/plus/v1/plus-api.json b/plus/v1/plus-api.json
index 3f5c734..bb0ef87 100644
--- a/plus/v1/plus-api.json
+++ b/plus/v1/plus-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/br2-l-bf1sPuAY7avjIbfF8eZQ8\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/q1MspFL9-q_qXuq3qZY7Fq7Dpuk\"",
  "discoveryVersion": "v1",
  "id": "plus:v1",
  "name": "plus",
  "version": "v1",
- "revision": "20160102",
+ "revision": "20160201",
  "title": "Google+ API",
  "description": "The Google+ API enables developers to build on top of the Google+ platform.",
  "ownerDomain": "google.com",
@@ -70,7 +70,7 @@
   "oauth2": {
    "scopes": {
     "https://www.googleapis.com/auth/plus.login": {
-     "description": "Know your basic profile info and list of people in your circles."
+     "description": "Know the list of people in your circles, your age range, and language"
     },
     "https://www.googleapis.com/auth/plus.me": {
      "description": "Know who you are on Google"
diff --git a/plus/v1/plus-gen.go b/plus/v1/plus-gen.go
index 06fb776..c54bd8a 100644
--- a/plus/v1/plus-gen.go
+++ b/plus/v1/plus-gen.go
@@ -47,7 +47,7 @@
 
 // OAuth2 scopes used by this API.
 const (
-	// Know your basic profile info and list of people in your circles.
+	// Know the list of people in your circles, your age range, and language
 	PlusLoginScope = "https://www.googleapis.com/auth/plus.login"
 
 	// Know who you are on Google
diff --git a/plusdomains/v1/plusdomains-api.json b/plusdomains/v1/plusdomains-api.json
index 61e134c..7fd4f54 100644
--- a/plusdomains/v1/plusdomains-api.json
+++ b/plusdomains/v1/plusdomains-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/JiNeLDZwZ4CDisO5kxxp-UNdJ28\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/GRaM2zLgDbh3A0ixv46745XLwHg\"",
  "discoveryVersion": "v1",
  "id": "plusDomains:v1",
  "name": "plusDomains",
  "version": "v1",
- "revision": "20151014",
+ "revision": "20160201",
  "title": "Google+ Domains API",
  "description": "The Google+ API enables developers to build on top of the Google+ platform.",
  "ownerDomain": "google.com",
@@ -76,7 +76,7 @@
      "description": "Manage your circles and add people and pages. People and pages you add to your circles will be notified. Others may see this information publicly. People you add to circles can use Hangouts with you."
     },
     "https://www.googleapis.com/auth/plus.login": {
-     "description": "Know your basic profile info and list of people in your circles."
+     "description": "Know the list of people in your circles, your age range, and language"
     },
     "https://www.googleapis.com/auth/plus.me": {
      "description": "Know who you are on Google"
diff --git a/plusdomains/v1/plusdomains-gen.go b/plusdomains/v1/plusdomains-gen.go
index 1912b05..765ec33 100644
--- a/plusdomains/v1/plusdomains-gen.go
+++ b/plusdomains/v1/plusdomains-gen.go
@@ -55,7 +55,7 @@
 	// publicly. People you add to circles can use Hangouts with you.
 	PlusCirclesWriteScope = "https://www.googleapis.com/auth/plus.circles.write"
 
-	// Know your basic profile info and list of people in your circles.
+	// Know the list of people in your circles, your age range, and language
 	PlusLoginScope = "https://www.googleapis.com/auth/plus.login"
 
 	// Know who you are on Google
diff --git a/reseller/v1/reseller-api.json b/reseller/v1/reseller-api.json
index 11eb2fa..8c6e66b 100644
--- a/reseller/v1/reseller-api.json
+++ b/reseller/v1/reseller-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/G3jB38VRma60Odnnvh6K1YKRcHw\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/L_xsbykrfe85aNk6xvHb1lEPd8w\"",
  "discoveryVersion": "v1",
  "id": "reseller:v1",
  "name": "reseller",
  "version": "v1",
- "revision": "20151110",
+ "revision": "20160202",
  "title": "Enterprise Apps Reseller API",
  "description": "Lets you create and manage your customers and their subscriptions.",
  "ownerDomain": "google.com",
@@ -416,7 +416,7 @@
      "parameters": {
       "customerAuthToken": {
        "type": "string",
-       "description": "An auth token needed for inserting a customer for which domain already exists. Can be generated at https://www.google.com/a/cpanel//TransferToken. Optional.",
+       "description": "An auth token needed for inserting a customer for which domain already exists. Can be generated at https://admin.google.com/TransferToken. Optional.",
        "location": "query"
       }
      },
diff --git a/reseller/v1/reseller-gen.go b/reseller/v1/reseller-gen.go
index 2e18535..a0b447c 100644
--- a/reseller/v1/reseller-gen.go
+++ b/reseller/v1/reseller-gen.go
@@ -638,8 +638,7 @@
 
 // CustomerAuthToken sets the optional parameter "customerAuthToken": An
 // auth token needed for inserting a customer for which domain already
-// exists. Can be generated at
-// https://www.google.com/a/cpanel//TransferToken.
+// exists. Can be generated at https://admin.google.com/TransferToken.
 func (c *CustomersInsertCall) CustomerAuthToken(customerAuthToken string) *CustomersInsertCall {
 	c.urlParams_.Set("customerAuthToken", customerAuthToken)
 	return c
@@ -723,7 +722,7 @@
 	//   "id": "reseller.customers.insert",
 	//   "parameters": {
 	//     "customerAuthToken": {
-	//       "description": "An auth token needed for inserting a customer for which domain already exists. Can be generated at https://www.google.com/a/cpanel//TransferToken. Optional.",
+	//       "description": "An auth token needed for inserting a customer for which domain already exists. Can be generated at https://admin.google.com/TransferToken. Optional.",
 	//       "location": "query",
 	//       "type": "string"
 	//     }
diff --git a/reseller/v1sandbox/reseller-api.json b/reseller/v1sandbox/reseller-api.json
index 844982c..d485746 100644
--- a/reseller/v1sandbox/reseller-api.json
+++ b/reseller/v1sandbox/reseller-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/461mKpl6MBGkRaHsOq8o28ZgRUk\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/BlwHjH9VdCZ57ILXX3WEaWT1Mto\"",
  "discoveryVersion": "v1",
  "id": "reseller:v1sandbox",
  "name": "reseller",
  "version": "v1sandbox",
- "revision": "20151110",
+ "revision": "20160202",
  "title": "Enterprise Apps Reseller API",
  "description": "Lets you create and manage your customers and their subscriptions.",
  "ownerDomain": "google.com",
@@ -416,7 +416,7 @@
      "parameters": {
       "customerAuthToken": {
        "type": "string",
-       "description": "An auth token needed for inserting a customer for which domain already exists. Can be generated at https://www.google.com/a/cpanel//TransferToken. Optional.",
+       "description": "An auth token needed for inserting a customer for which domain already exists. Can be generated at https://admin.google.com/TransferToken. Optional.",
        "location": "query"
       }
      },
diff --git a/reseller/v1sandbox/reseller-gen.go b/reseller/v1sandbox/reseller-gen.go
index 2b55b4a..272ca11 100644
--- a/reseller/v1sandbox/reseller-gen.go
+++ b/reseller/v1sandbox/reseller-gen.go
@@ -638,8 +638,7 @@
 
 // CustomerAuthToken sets the optional parameter "customerAuthToken": An
 // auth token needed for inserting a customer for which domain already
-// exists. Can be generated at
-// https://www.google.com/a/cpanel//TransferToken.
+// exists. Can be generated at https://admin.google.com/TransferToken.
 func (c *CustomersInsertCall) CustomerAuthToken(customerAuthToken string) *CustomersInsertCall {
 	c.urlParams_.Set("customerAuthToken", customerAuthToken)
 	return c
@@ -723,7 +722,7 @@
 	//   "id": "reseller.customers.insert",
 	//   "parameters": {
 	//     "customerAuthToken": {
-	//       "description": "An auth token needed for inserting a customer for which domain already exists. Can be generated at https://www.google.com/a/cpanel//TransferToken. Optional.",
+	//       "description": "An auth token needed for inserting a customer for which domain already exists. Can be generated at https://admin.google.com/TransferToken. Optional.",
 	//       "location": "query",
 	//       "type": "string"
 	//     }
diff --git a/serviceregistry/v0.alpha/serviceregistry-api.json b/serviceregistry/v0.alpha/serviceregistry-api.json
new file mode 100644
index 0000000..10a7edc
--- /dev/null
+++ b/serviceregistry/v0.alpha/serviceregistry-api.json
@@ -0,0 +1,663 @@
+{
+ "kind": "discovery#restDescription",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/UUOA682lycm5flg9DSEhitNOrPU\"",
+ "discoveryVersion": "v1",
+ "id": "serviceregistry:alpha",
+ "name": "serviceregistry",
+ "canonicalName": "Service Registry",
+ "version": "alpha",
+ "revision": "20160111",
+ "title": "Google Cloud Service Registry API V1",
+ "description": "The Service Registry API allows users to manage service endpoints in Service Registry and use DNS-based service discovery / name resolution.",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "icons": {
+  "x16": "http://www.google.com/images/icons/product/search-16.gif",
+  "x32": "http://www.google.com/images/icons/product/search-32.gif"
+ },
+ "documentationLink": "https://developers.google.com/cloud-serviceregistry/",
+ "labels": [
+  "limited_availability"
+ ],
+ "protocol": "rest",
+ "baseUrl": "https://www.googleapis.com/serviceregistry/alpha/projects/",
+ "basePath": "/serviceregistry/alpha/projects/",
+ "rootUrl": "https://www.googleapis.com/",
+ "servicePath": "serviceregistry/alpha/projects/",
+ "batchPath": "batch",
+ "parameters": {
+  "alt": {
+   "type": "string",
+   "description": "Data format for the response.",
+   "default": "json",
+   "enum": [
+    "json"
+   ],
+   "enumDescriptions": [
+    "Responses with Content-Type of application/json"
+   ],
+   "location": "query"
+  },
+  "fields": {
+   "type": "string",
+   "description": "Selector specifying which fields to include in a partial response.",
+   "location": "query"
+  },
+  "key": {
+   "type": "string",
+   "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+   "location": "query"
+  },
+  "oauth_token": {
+   "type": "string",
+   "description": "OAuth 2.0 token for the current user.",
+   "location": "query"
+  },
+  "prettyPrint": {
+   "type": "boolean",
+   "description": "Returns response with indentations and line breaks.",
+   "default": "true",
+   "location": "query"
+  },
+  "quotaUser": {
+   "type": "string",
+   "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.",
+   "location": "query"
+  },
+  "userIp": {
+   "type": "string",
+   "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.",
+   "location": "query"
+  }
+ },
+ "auth": {
+  "oauth2": {
+   "scopes": {
+    "https://www.googleapis.com/auth/cloud-platform": {
+     "description": "View and manage your data across Google Cloud Platform services"
+    },
+    "https://www.googleapis.com/auth/cloud-platform.read-only": {
+     "description": "View your data across Google Cloud Platform services"
+    },
+    "https://www.googleapis.com/auth/ndev.cloudman": {
+     "description": "View and manage your Google Cloud Platform management resources and deployment status information"
+    },
+    "https://www.googleapis.com/auth/ndev.cloudman.readonly": {
+     "description": "View your Google Cloud Platform management resources and deployment status information"
+    }
+   }
+  }
+ },
+ "schemas": {
+  "Endpoint": {
+   "id": "Endpoint",
+   "type": "object",
+   "properties": {
+    "address": {
+     "type": "string",
+     "description": "A user-provided address of the service represented by this endpoint. This can be an IPv4 or IPv6 address, or a hostname."
+    },
+    "creationTimestamp": {
+     "type": "string",
+     "description": "[Output Only] Creation timestamp in RFC3339 text format."
+    },
+    "description": {
+     "type": "string",
+     "description": "An optional user-provided description of the endpoint."
+    },
+    "fingerprint": {
+     "type": "string",
+     "description": "Supply the fingerprint value for update requests. The fingerprint value is generated by the server and ensures optimistic concurrency (so that only one update can be performed at a time). The fingerprint changes after each update.",
+     "format": "byte"
+    },
+    "id": {
+     "type": "string",
+     "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+     "format": "uint64"
+    },
+    "name": {
+     "type": "string",
+     "description": "A user-provided name of the endpoint, which must be unique within the project. The name must comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
+    },
+    "port": {
+     "type": "integer",
+     "description": "An optional user-provided port of the service represented by this endpoint.",
+     "format": "int32"
+    },
+    "selfLink": {
+     "type": "string",
+     "description": "[Output Only] Self link for the endpoint."
+    },
+    "state": {
+     "type": "string",
+     "description": "[Output Only] The current state of the endpoint, as determined by the system."
+    },
+    "visibility": {
+     "$ref": "EndpointEndpointVisibility",
+     "description": "The visibility of this endpoint. This must be a list of fully-qualified URLs to Compute Engine networks."
+    }
+   }
+  },
+  "EndpointEndpointVisibility": {
+   "id": "EndpointEndpointVisibility",
+   "type": "object",
+   "properties": {
+    "networks": {
+     "type": "array",
+     "description": "Google Compute Engine networks for which the name of this endpoint should be resolvable through DNS.",
+     "items": {
+      "type": "string"
+     }
+    },
+    "projects": {
+     "type": "array",
+     "description": "Google Cloud projects for which the name of this endpoint should be resolvable through DNS.",
+     "items": {
+      "type": "string"
+     }
+    }
+   }
+  },
+  "EndpointsListResponse": {
+   "id": "EndpointsListResponse",
+   "type": "object",
+   "description": "A response containing a partial list of Endpoints and a page token used to build the next request if the request has been truncated. Next available tag: 5",
+   "properties": {
+    "endpoints": {
+     "type": "array",
+     "description": "The endpoints contained in this response.",
+     "items": {
+      "$ref": "Endpoint"
+     }
+    },
+    "nextPageToken": {
+     "type": "string",
+     "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
+    }
+   }
+  },
+  "Operation": {
+   "id": "Operation",
+   "type": "object",
+   "description": "An Operation resource, used to manage asynchronous API requests.",
+   "properties": {
+    "clientOperationId": {
+     "type": "string",
+     "description": "[Output Only] A unique client ID generated by the server."
+    },
+    "creationTimestamp": {
+     "type": "string",
+     "description": "[Output Only] Creation timestamp in RFC3339 text format."
+    },
+    "description": {
+     "type": "string",
+     "description": "[Output Only] A textual description of the operation, which is set when the operation is created."
+    },
+    "endTime": {
+     "type": "string",
+     "description": "[Output Only] The time that this operation was completed. This value is in RFC3339 text format."
+    },
+    "error": {
+     "type": "object",
+     "description": "[Output Only] If errors are generated during processing of the operation, this field will be populated.",
+     "properties": {
+      "errors": {
+       "type": "array",
+       "description": "[Output Only] The array of errors encountered while processing this operation.",
+       "items": {
+        "type": "object",
+        "properties": {
+         "code": {
+          "type": "string",
+          "description": "[Output Only] The error type identifier for this error."
+         },
+         "location": {
+          "type": "string",
+          "description": "[Output Only] Indicates the field in the request which caused the error. This property is optional."
+         },
+         "message": {
+          "type": "string",
+          "description": "[Output Only] An optional, human-readable error message."
+         }
+        }
+       }
+      }
+     }
+    },
+    "httpErrorMessage": {
+     "type": "string",
+     "description": "[Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND."
+    },
+    "httpErrorStatusCode": {
+     "type": "integer",
+     "description": "[Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.",
+     "format": "int32"
+    },
+    "id": {
+     "type": "string",
+     "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+     "format": "uint64"
+    },
+    "insertTime": {
+     "type": "string",
+     "description": "[Output Only] The time that this operation was requested. This value is in RFC3339 text format."
+    },
+    "kind": {
+     "type": "string",
+     "description": "[Output Only] Type of the resource. Always compute#operation for Operation resources.",
+     "default": "serviceregistry#operation"
+    },
+    "name": {
+     "type": "string",
+     "description": "[Output Only] Name of the resource."
+    },
+    "operationType": {
+     "type": "string",
+     "description": "[Output Only] The type of operation, which can be insert, update, or delete."
+    },
+    "progress": {
+     "type": "integer",
+     "description": "[Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.",
+     "format": "int32"
+    },
+    "region": {
+     "type": "string",
+     "description": "[Output Only] URL of the region where the operation resides. Only available when performing regional operations."
+    },
+    "selfLink": {
+     "type": "string",
+     "description": "[Output Only] Server-defined URL for the resource."
+    },
+    "startTime": {
+     "type": "string",
+     "description": "[Output Only] The time that this operation was started by the server. This value is in RFC3339 text format."
+    },
+    "status": {
+     "type": "string",
+     "description": "[Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE."
+    },
+    "statusMessage": {
+     "type": "string",
+     "description": "[Output Only] An optional textual description of the current status of the operation."
+    },
+    "targetId": {
+     "type": "string",
+     "description": "[Output Only] The unique target ID, which identifies a specific incarnation of the target resource.",
+     "format": "uint64"
+    },
+    "targetLink": {
+     "type": "string",
+     "description": "[Output Only] The URL of the resource that the operation is modifying."
+    },
+    "user": {
+     "type": "string",
+     "description": "[Output Only] User who requested the operation, for example: user@example.com."
+    },
+    "warnings": {
+     "type": "array",
+     "description": "[Output Only] If warning messages are generated during processing of the operation, this field will be populated.",
+     "items": {
+      "type": "object",
+      "properties": {
+       "code": {
+        "type": "string",
+        "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response."
+       },
+       "data": {
+        "type": "array",
+        "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+        "items": {
+         "type": "object",
+         "properties": {
+          "key": {
+           "type": "string",
+           "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource, and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
+          },
+          "value": {
+           "type": "string",
+           "description": "[Output Only] A warning data value corresponding to the key."
+          }
+         }
+        }
+       },
+       "message": {
+        "type": "string",
+        "description": "[Output Only] A human-readable description of the warning code."
+       }
+      }
+     }
+    },
+    "zone": {
+     "type": "string",
+     "description": "[Output Only] URL of the zone where the operation resides. Only available when performing per-zone operations."
+    }
+   }
+  },
+  "OperationsListResponse": {
+   "id": "OperationsListResponse",
+   "type": "object",
+   "description": "A response containing a partial list of operations and a page token used to build the next request if the request has been truncated.",
+   "properties": {
+    "nextPageToken": {
+     "type": "string",
+     "description": "[Output Only] A token used to continue a truncated list request."
+    },
+    "operations": {
+     "type": "array",
+     "description": "[Output Only] Operations contained in this list response.",
+     "items": {
+      "$ref": "Operation"
+     }
+    }
+   }
+  }
+ },
+ "resources": {
+  "endpoints": {
+   "methods": {
+    "delete": {
+     "id": "serviceregistry.endpoints.delete",
+     "path": "{project}/global/endpoints/{endpoint}",
+     "httpMethod": "DELETE",
+     "description": "Deletes an endpoint.",
+     "parameters": {
+      "endpoint": {
+       "type": "string",
+       "description": "The name of the endpoint for this request.",
+       "required": true,
+       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+       "location": "path"
+      },
+      "project": {
+       "type": "string",
+       "description": "The project ID for this request.",
+       "required": true,
+       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "project",
+      "endpoint"
+     ],
+     "response": {
+      "$ref": "Operation"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/ndev.cloudman"
+     ]
+    },
+    "get": {
+     "id": "serviceregistry.endpoints.get",
+     "path": "{project}/global/endpoints/{endpoint}",
+     "httpMethod": "GET",
+     "description": "Gets an endpoint.",
+     "parameters": {
+      "endpoint": {
+       "type": "string",
+       "description": "The name of the endpoint for this request.",
+       "required": true,
+       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+       "location": "path"
+      },
+      "project": {
+       "type": "string",
+       "description": "The project ID for this request.",
+       "required": true,
+       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "project",
+      "endpoint"
+     ],
+     "response": {
+      "$ref": "Endpoint"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform"
+     ]
+    },
+    "insert": {
+     "id": "serviceregistry.endpoints.insert",
+     "path": "{project}/global/endpoints",
+     "httpMethod": "POST",
+     "description": "Creates an endpoint.",
+     "parameters": {
+      "project": {
+       "type": "string",
+       "description": "The project ID for this request.",
+       "required": true,
+       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "project"
+     ],
+     "request": {
+      "$ref": "Endpoint"
+     },
+     "response": {
+      "$ref": "Operation"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/ndev.cloudman"
+     ]
+    },
+    "list": {
+     "id": "serviceregistry.endpoints.list",
+     "path": "{project}/global/endpoints",
+     "httpMethod": "GET",
+     "description": "Lists endpoints for a project.",
+     "parameters": {
+      "filter": {
+       "type": "string",
+       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+       "default": "500",
+       "format": "uint32",
+       "minimum": "0",
+       "maximum": "500",
+       "location": "query"
+      },
+      "orderBy": {
+       "type": "string",
+       "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+       "location": "query"
+      },
+      "project": {
+       "type": "string",
+       "description": "The project ID for this request.",
+       "required": true,
+       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "project"
+     ],
+     "response": {
+      "$ref": "EndpointsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform"
+     ]
+    },
+    "patch": {
+     "id": "serviceregistry.endpoints.patch",
+     "path": "{project}/global/endpoints/{endpoint}",
+     "httpMethod": "PATCH",
+     "description": "Updates an endpoint. This method supports patch semantics.",
+     "parameters": {
+      "endpoint": {
+       "type": "string",
+       "description": "The name of the endpoint for this request.",
+       "required": true,
+       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+       "location": "path"
+      },
+      "project": {
+       "type": "string",
+       "description": "The project ID for this request.",
+       "required": true,
+       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "project",
+      "endpoint"
+     ],
+     "request": {
+      "$ref": "Endpoint"
+     },
+     "response": {
+      "$ref": "Operation"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/ndev.cloudman"
+     ]
+    },
+    "update": {
+     "id": "serviceregistry.endpoints.update",
+     "path": "{project}/global/endpoints/{endpoint}",
+     "httpMethod": "PUT",
+     "description": "Updates an endpoint.",
+     "parameters": {
+      "endpoint": {
+       "type": "string",
+       "description": "The name of the endpoint for this request.",
+       "required": true,
+       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+       "location": "path"
+      },
+      "project": {
+       "type": "string",
+       "description": "The project ID for this request.",
+       "required": true,
+       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "project",
+      "endpoint"
+     ],
+     "request": {
+      "$ref": "Endpoint"
+     },
+     "response": {
+      "$ref": "Operation"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/ndev.cloudman"
+     ]
+    }
+   }
+  },
+  "operations": {
+   "methods": {
+    "get": {
+     "id": "serviceregistry.operations.get",
+     "path": "{project}/global/operations/{operation}",
+     "httpMethod": "GET",
+     "description": "Gets information about a specific operation.",
+     "parameters": {
+      "operation": {
+       "type": "string",
+       "description": "The name of the operation for this request.",
+       "required": true,
+       "location": "path"
+      },
+      "project": {
+       "type": "string",
+       "description": "The project ID for this request.",
+       "required": true,
+       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "project",
+      "operation"
+     ],
+     "response": {
+      "$ref": "Operation"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/cloud-platform.read-only",
+      "https://www.googleapis.com/auth/ndev.cloudman",
+      "https://www.googleapis.com/auth/ndev.cloudman.readonly"
+     ]
+    },
+    "list": {
+     "id": "serviceregistry.operations.list",
+     "path": "{project}/global/operations",
+     "httpMethod": "GET",
+     "description": "Lists all operations for a project.",
+     "parameters": {
+      "filter": {
+       "type": "string",
+       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+       "location": "query"
+      },
+      "maxResults": {
+       "type": "integer",
+       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+       "default": "500",
+       "format": "uint32",
+       "minimum": "0",
+       "maximum": "500",
+       "location": "query"
+      },
+      "orderBy": {
+       "type": "string",
+       "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+       "location": "query"
+      },
+      "pageToken": {
+       "type": "string",
+       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+       "location": "query"
+      },
+      "project": {
+       "type": "string",
+       "description": "The project ID for this request.",
+       "required": true,
+       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+       "location": "path"
+      }
+     },
+     "parameterOrder": [
+      "project"
+     ],
+     "response": {
+      "$ref": "OperationsListResponse"
+     },
+     "scopes": [
+      "https://www.googleapis.com/auth/cloud-platform",
+      "https://www.googleapis.com/auth/cloud-platform.read-only",
+      "https://www.googleapis.com/auth/ndev.cloudman",
+      "https://www.googleapis.com/auth/ndev.cloudman.readonly"
+     ]
+    }
+   }
+  }
+ }
+}
diff --git a/serviceregistry/v0.alpha/serviceregistry-gen.go b/serviceregistry/v0.alpha/serviceregistry-gen.go
new file mode 100644
index 0000000..0452c4c
--- /dev/null
+++ b/serviceregistry/v0.alpha/serviceregistry-gen.go
@@ -0,0 +1,1751 @@
+// Package serviceregistry provides access to the Google Cloud Service Registry API V1.
+//
+// See https://developers.google.com/cloud-serviceregistry/
+//
+// Usage example:
+//
+//   import "google.golang.org/api/serviceregistry/v0.alpha"
+//   ...
+//   serviceregistryService, err := serviceregistry.New(oauthHttpClient)
+package serviceregistry // import "google.golang.org/api/serviceregistry/v0.alpha"
+
+import (
+	"bytes"
+	"encoding/json"
+	"errors"
+	"fmt"
+	context "golang.org/x/net/context"
+	ctxhttp "golang.org/x/net/context/ctxhttp"
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+var _ = ctxhttp.Do
+
+const apiId = "serviceregistry:alpha"
+const apiName = "serviceregistry"
+const apiVersion = "alpha"
+const basePath = "https://www.googleapis.com/serviceregistry/alpha/projects/"
+
+// OAuth2 scopes used by this API.
+const (
+	// View and manage your data across Google Cloud Platform services
+	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
+
+	// View your data across Google Cloud Platform services
+	CloudPlatformReadOnlyScope = "https://www.googleapis.com/auth/cloud-platform.read-only"
+
+	// View and manage your Google Cloud Platform management resources and
+	// deployment status information
+	NdevCloudmanScope = "https://www.googleapis.com/auth/ndev.cloudman"
+
+	// View your Google Cloud Platform management resources and deployment
+	// status information
+	NdevCloudmanReadonlyScope = "https://www.googleapis.com/auth/ndev.cloudman.readonly"
+)
+
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.Endpoints = NewEndpointsService(s)
+	s.Operations = NewOperationsService(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	Endpoints *EndpointsService
+
+	Operations *OperationsService
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewEndpointsService(s *Service) *EndpointsService {
+	rs := &EndpointsService{s: s}
+	return rs
+}
+
+type EndpointsService struct {
+	s *Service
+}
+
+func NewOperationsService(s *Service) *OperationsService {
+	rs := &OperationsService{s: s}
+	return rs
+}
+
+type OperationsService struct {
+	s *Service
+}
+
+type Endpoint struct {
+	// Address: A user-provided address of the service represented by this
+	// endpoint. This can be an IPv4 or IPv6 address, or a hostname.
+	Address string `json:"address,omitempty"`
+
+	// CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text
+	// format.
+	CreationTimestamp string `json:"creationTimestamp,omitempty"`
+
+	// Description: An optional user-provided description of the endpoint.
+	Description string `json:"description,omitempty"`
+
+	// Fingerprint: Supply the fingerprint value for update requests. The
+	// fingerprint value is generated by the server and ensures optimistic
+	// concurrency (so that only one update can be performed at a time). The
+	// fingerprint changes after each update.
+	Fingerprint string `json:"fingerprint,omitempty"`
+
+	// Id: [Output Only] Unique identifier for the resource; defined by the
+	// server.
+	Id uint64 `json:"id,omitempty,string"`
+
+	// Name: A user-provided name of the endpoint, which must be unique
+	// within the project. The name must comply with RFC1035. Specifically,
+	// the name must be 1-63 characters long and match the regular
+	// expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character
+	// must be a lowercase letter, and all following characters must be a
+	// dash, lowercase letter, or digit, except the last character, which
+	// cannot be a dash.
+	Name string `json:"name,omitempty"`
+
+	// Port: An optional user-provided port of the service represented by
+	// this endpoint.
+	Port int64 `json:"port,omitempty"`
+
+	// SelfLink: [Output Only] Self link for the endpoint.
+	SelfLink string `json:"selfLink,omitempty"`
+
+	// State: [Output Only] The current state of the endpoint, as determined
+	// by the system.
+	State string `json:"state,omitempty"`
+
+	// Visibility: The visibility of this endpoint. This must be a list of
+	// fully-qualified URLs to Compute Engine networks.
+	Visibility *EndpointEndpointVisibility `json:"visibility,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Address") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Endpoint) MarshalJSON() ([]byte, error) {
+	type noMethod Endpoint
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type EndpointEndpointVisibility struct {
+	// Networks: Google Compute Engine networks for which the name of this
+	// endpoint should be resolvable through DNS.
+	Networks []string `json:"networks,omitempty"`
+
+	// Projects: Google Cloud projects for which the name of this endpoint
+	// should be resolvable through DNS.
+	Projects []string `json:"projects,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Networks") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *EndpointEndpointVisibility) MarshalJSON() ([]byte, error) {
+	type noMethod EndpointEndpointVisibility
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// EndpointsListResponse: A response containing a partial list of
+// Endpoints and a page token used to build the next request if the
+// request has been truncated. Next available tag: 5
+type EndpointsListResponse struct {
+	// Endpoints: The endpoints contained in this response.
+	Endpoints []*Endpoint `json:"endpoints,omitempty"`
+
+	// NextPageToken: [Output Only] This token allows you to get the next
+	// page of results for list requests. If the number of results is larger
+	// than maxResults, use the nextPageToken as a value for the query
+	// parameter pageToken in the next list request. Subsequent list
+	// requests will have their own nextPageToken to continue paging through
+	// the results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Endpoints") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *EndpointsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod EndpointsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Operation: An Operation resource, used to manage asynchronous API
+// requests.
+type Operation struct {
+	// ClientOperationId: [Output Only] A unique client ID generated by the
+	// server.
+	ClientOperationId string `json:"clientOperationId,omitempty"`
+
+	// CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text
+	// format.
+	CreationTimestamp string `json:"creationTimestamp,omitempty"`
+
+	// Description: [Output Only] A textual description of the operation,
+	// which is set when the operation is created.
+	Description string `json:"description,omitempty"`
+
+	// EndTime: [Output Only] The time that this operation was completed.
+	// This value is in RFC3339 text format.
+	EndTime string `json:"endTime,omitempty"`
+
+	// Error: [Output Only] If errors are generated during processing of the
+	// operation, this field will be populated.
+	Error *OperationError `json:"error,omitempty"`
+
+	// HttpErrorMessage: [Output Only] If the operation fails, this field
+	// contains the HTTP error message that was returned, such as NOT FOUND.
+	HttpErrorMessage string `json:"httpErrorMessage,omitempty"`
+
+	// HttpErrorStatusCode: [Output Only] If the operation fails, this field
+	// contains the HTTP error status code that was returned. For example, a
+	// 404 means the resource was not found.
+	HttpErrorStatusCode int64 `json:"httpErrorStatusCode,omitempty"`
+
+	// Id: [Output Only] The unique identifier for the resource. This
+	// identifier is defined by the server.
+	Id uint64 `json:"id,omitempty,string"`
+
+	// InsertTime: [Output Only] The time that this operation was requested.
+	// This value is in RFC3339 text format.
+	InsertTime string `json:"insertTime,omitempty"`
+
+	// Kind: [Output Only] Type of the resource. Always compute#operation
+	// for Operation resources.
+	Kind string `json:"kind,omitempty"`
+
+	// Name: [Output Only] Name of the resource.
+	Name string `json:"name,omitempty"`
+
+	// OperationType: [Output Only] The type of operation, which can be
+	// insert, update, or delete.
+	OperationType string `json:"operationType,omitempty"`
+
+	// Progress: [Output Only] An optional progress indicator that ranges
+	// from 0 to 100. There is no requirement that this be linear or support
+	// any granularity of operations. This should not be used to guess when
+	// the operation will be complete. This number should monotonically
+	// increase as the operation progresses.
+	Progress int64 `json:"progress,omitempty"`
+
+	// Region: [Output Only] URL of the region where the operation resides.
+	// Only available when performing regional operations.
+	Region string `json:"region,omitempty"`
+
+	// SelfLink: [Output Only] Server-defined URL for the resource.
+	SelfLink string `json:"selfLink,omitempty"`
+
+	// StartTime: [Output Only] The time that this operation was started by
+	// the server. This value is in RFC3339 text format.
+	StartTime string `json:"startTime,omitempty"`
+
+	// Status: [Output Only] The status of the operation, which can be one
+	// of the following: PENDING, RUNNING, or DONE.
+	Status string `json:"status,omitempty"`
+
+	// StatusMessage: [Output Only] An optional textual description of the
+	// current status of the operation.
+	StatusMessage string `json:"statusMessage,omitempty"`
+
+	// TargetId: [Output Only] The unique target ID, which identifies a
+	// specific incarnation of the target resource.
+	TargetId uint64 `json:"targetId,omitempty,string"`
+
+	// TargetLink: [Output Only] The URL of the resource that the operation
+	// is modifying.
+	TargetLink string `json:"targetLink,omitempty"`
+
+	// User: [Output Only] User who requested the operation, for example:
+	// user@example.com.
+	User string `json:"user,omitempty"`
+
+	// Warnings: [Output Only] If warning messages are generated during
+	// processing of the operation, this field will be populated.
+	Warnings []*OperationWarnings `json:"warnings,omitempty"`
+
+	// Zone: [Output Only] URL of the zone where the operation resides. Only
+	// available when performing per-zone operations.
+	Zone string `json:"zone,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "ClientOperationId")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Operation) MarshalJSON() ([]byte, error) {
+	type noMethod Operation
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OperationError: [Output Only] If errors are generated during
+// processing of the operation, this field will be populated.
+type OperationError struct {
+	// Errors: [Output Only] The array of errors encountered while
+	// processing this operation.
+	Errors []*OperationErrorErrors `json:"errors,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Errors") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OperationError) MarshalJSON() ([]byte, error) {
+	type noMethod OperationError
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type OperationErrorErrors struct {
+	// Code: [Output Only] The error type identifier for this error.
+	Code string `json:"code,omitempty"`
+
+	// Location: [Output Only] Indicates the field in the request which
+	// caused the error. This property is optional.
+	Location string `json:"location,omitempty"`
+
+	// Message: [Output Only] An optional, human-readable error message.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OperationErrorErrors) MarshalJSON() ([]byte, error) {
+	type noMethod OperationErrorErrors
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type OperationWarnings struct {
+	// Code: [Output Only] A warning code, if applicable. For example,
+	// Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
+	// the response.
+	Code string `json:"code,omitempty"`
+
+	// Data: [Output Only] Metadata about this warning in key: value format.
+	// For example:
+	// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+	Data []*OperationWarningsData `json:"data,omitempty"`
+
+	// Message: [Output Only] A human-readable description of the warning
+	// code.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OperationWarnings) MarshalJSON() ([]byte, error) {
+	type noMethod OperationWarnings
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type OperationWarningsData struct {
+	// Key: [Output Only] A key that provides more detail on the warning
+	// being returned. For example, for warnings where there are no results
+	// in a list request for a particular zone, this key might be scope and
+	// the key value might be the zone name. Other examples might be a key
+	// indicating a deprecated resource, and a suggested replacement, or a
+	// warning about invalid network settings (for example, if an instance
+	// attempts to perform IP forwarding but is not enabled for IP
+	// forwarding).
+	Key string `json:"key,omitempty"`
+
+	// Value: [Output Only] A warning data value corresponding to the key.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Key") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OperationWarningsData) MarshalJSON() ([]byte, error) {
+	type noMethod OperationWarningsData
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// OperationsListResponse: A response containing a partial list of
+// operations and a page token used to build the next request if the
+// request has been truncated.
+type OperationsListResponse struct {
+	// NextPageToken: [Output Only] A token used to continue a truncated
+	// list request.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Operations: [Output Only] Operations contained in this list response.
+	Operations []*Operation `json:"operations,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *OperationsListResponse) MarshalJSON() ([]byte, error) {
+	type noMethod OperationsListResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// method id "serviceregistry.endpoints.delete":
+
+type EndpointsDeleteCall struct {
+	s          *Service
+	project    string
+	endpoint   string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Delete: Deletes an endpoint.
+func (r *EndpointsService) Delete(project string, endpoint string) *EndpointsDeleteCall {
+	c := &EndpointsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.endpoint = endpoint
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *EndpointsDeleteCall) Fields(s ...googleapi.Field) *EndpointsDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *EndpointsDeleteCall) Context(ctx context.Context) *EndpointsDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *EndpointsDeleteCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/global/endpoints/{endpoint}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("DELETE", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"project":  c.project,
+		"endpoint": c.endpoint,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "serviceregistry.endpoints.delete" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *EndpointsDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes an endpoint.",
+	//   "httpMethod": "DELETE",
+	//   "id": "serviceregistry.endpoints.delete",
+	//   "parameterOrder": [
+	//     "project",
+	//     "endpoint"
+	//   ],
+	//   "parameters": {
+	//     "endpoint": {
+	//       "description": "The name of the endpoint for this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "The project ID for this request.",
+	//       "location": "path",
+	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/global/endpoints/{endpoint}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/ndev.cloudman"
+	//   ]
+	// }
+
+}
+
+// method id "serviceregistry.endpoints.get":
+
+type EndpointsGetCall struct {
+	s            *Service
+	project      string
+	endpoint     string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets an endpoint.
+func (r *EndpointsService) Get(project string, endpoint string) *EndpointsGetCall {
+	c := &EndpointsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.endpoint = endpoint
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *EndpointsGetCall) Fields(s ...googleapi.Field) *EndpointsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *EndpointsGetCall) IfNoneMatch(entityTag string) *EndpointsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *EndpointsGetCall) Context(ctx context.Context) *EndpointsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *EndpointsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/global/endpoints/{endpoint}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"project":  c.project,
+		"endpoint": c.endpoint,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "serviceregistry.endpoints.get" call.
+// Exactly one of *Endpoint or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Endpoint.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *EndpointsGetCall) Do(opts ...googleapi.CallOption) (*Endpoint, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Endpoint{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets an endpoint.",
+	//   "httpMethod": "GET",
+	//   "id": "serviceregistry.endpoints.get",
+	//   "parameterOrder": [
+	//     "project",
+	//     "endpoint"
+	//   ],
+	//   "parameters": {
+	//     "endpoint": {
+	//       "description": "The name of the endpoint for this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "The project ID for this request.",
+	//       "location": "path",
+	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/global/endpoints/{endpoint}",
+	//   "response": {
+	//     "$ref": "Endpoint"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "serviceregistry.endpoints.insert":
+
+type EndpointsInsertCall struct {
+	s          *Service
+	project    string
+	endpoint   *Endpoint
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Insert: Creates an endpoint.
+func (r *EndpointsService) Insert(project string, endpoint *Endpoint) *EndpointsInsertCall {
+	c := &EndpointsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.endpoint = endpoint
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *EndpointsInsertCall) Fields(s ...googleapi.Field) *EndpointsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *EndpointsInsertCall) Context(ctx context.Context) *EndpointsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *EndpointsInsertCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.endpoint)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/global/endpoints")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "serviceregistry.endpoints.insert" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *EndpointsInsertCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates an endpoint.",
+	//   "httpMethod": "POST",
+	//   "id": "serviceregistry.endpoints.insert",
+	//   "parameterOrder": [
+	//     "project"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "The project ID for this request.",
+	//       "location": "path",
+	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/global/endpoints",
+	//   "request": {
+	//     "$ref": "Endpoint"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/ndev.cloudman"
+	//   ]
+	// }
+
+}
+
+// method id "serviceregistry.endpoints.list":
+
+type EndpointsListCall struct {
+	s            *Service
+	project      string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Lists endpoints for a project.
+func (r *EndpointsService) List(project string) *EndpointsListCall {
+	c := &EndpointsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	return c
+}
+
+// Filter sets the optional parameter "filter": Sets a filter expression
+// for filtering listed resources, in the form filter={expression}. Your
+// {expression} must be in the format: field_name comparison_string
+// literal_string.
+//
+// The field_name is the name of the field you want to compare. Only
+// atomic field types are supported (string, number, boolean). The
+// comparison_string must be either eq (equals) or ne (not equals). The
+// literal_string is the string value to filter to. The literal value
+// must be valid for the type of field you are filtering by (string,
+// number, boolean). For string fields, the literal value is interpreted
+// as a regular expression using RE2 syntax. The literal value must
+// match the entire field.
+//
+// For example, filter=name ne example-instance.
+//
+// Compute Engine Beta API Only: If you use filtering in the Beta API,
+// you can also filter on nested fields. For example, you could filter
+// on instances that have set the scheduling.automaticRestart field to
+// true. In particular, use filtering on nested fields to take advantage
+// of instance labels to organize and filter results based on label
+// values.
+//
+// The Beta API also supports filtering on multiple expressions by
+// providing each separate expression within parentheses. For example,
+// (scheduling.automaticRestart eq true) (zone eq us-central1-f).
+// Multiple expressions are treated as AND expressions meaning that
+// resources must match all expressions to pass the filters.
+func (c *EndpointsListCall) Filter(filter string) *EndpointsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": The maximum
+// number of results per page that Compute Engine should return. If the
+// number of available results is larger than maxResults, Compute Engine
+// returns a nextPageToken that can be used to get the next page of
+// results in subsequent list requests.
+func (c *EndpointsListCall) MaxResults(maxResults int64) *EndpointsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OrderBy sets the optional parameter "orderBy": Sorts list results by
+// a certain order. By default, results are returned in alphanumerical
+// order based on the resource name.
+//
+// You can also sort results in descending order based on the creation
+// timestamp using orderBy="creationTimestamp desc". This sorts results
+// based on the creationTimestamp field in reverse chronological order
+// (newest result first). Use this to sort resources like operations so
+// that the newest operation is returned first.
+//
+// Currently, only sorting by name or creationTimestamp desc is
+// supported.
+func (c *EndpointsListCall) OrderBy(orderBy string) *EndpointsListCall {
+	c.urlParams_.Set("orderBy", orderBy)
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Specifies a page
+// token to use. Set pageToken to the nextPageToken returned by a
+// previous list request to get the next page of results.
+func (c *EndpointsListCall) PageToken(pageToken string) *EndpointsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *EndpointsListCall) Fields(s ...googleapi.Field) *EndpointsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *EndpointsListCall) IfNoneMatch(entityTag string) *EndpointsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *EndpointsListCall) Context(ctx context.Context) *EndpointsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *EndpointsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/global/endpoints")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "serviceregistry.endpoints.list" call.
+// Exactly one of *EndpointsListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *EndpointsListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *EndpointsListCall) Do(opts ...googleapi.CallOption) (*EndpointsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &EndpointsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists endpoints for a project.",
+	//   "httpMethod": "GET",
+	//   "id": "serviceregistry.endpoints.list",
+	//   "parameterOrder": [
+	//     "project"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "default": "500",
+	//       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+	//       "format": "uint32",
+	//       "location": "query",
+	//       "maximum": "500",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "orderBy": {
+	//       "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "The project ID for this request.",
+	//       "location": "path",
+	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/global/endpoints",
+	//   "response": {
+	//     "$ref": "EndpointsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *EndpointsListCall) Pages(ctx context.Context, f func(*EndpointsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "serviceregistry.endpoints.patch":
+
+type EndpointsPatchCall struct {
+	s          *Service
+	project    string
+	endpoint   string
+	endpoint2  *Endpoint
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Patch: Updates an endpoint. This method supports patch semantics.
+func (r *EndpointsService) Patch(project string, endpoint string, endpoint2 *Endpoint) *EndpointsPatchCall {
+	c := &EndpointsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.endpoint = endpoint
+	c.endpoint2 = endpoint2
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *EndpointsPatchCall) Fields(s ...googleapi.Field) *EndpointsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *EndpointsPatchCall) Context(ctx context.Context) *EndpointsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *EndpointsPatchCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.endpoint2)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/global/endpoints/{endpoint}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PATCH", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"project":  c.project,
+		"endpoint": c.endpoint,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "serviceregistry.endpoints.patch" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *EndpointsPatchCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an endpoint. This method supports patch semantics.",
+	//   "httpMethod": "PATCH",
+	//   "id": "serviceregistry.endpoints.patch",
+	//   "parameterOrder": [
+	//     "project",
+	//     "endpoint"
+	//   ],
+	//   "parameters": {
+	//     "endpoint": {
+	//       "description": "The name of the endpoint for this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "The project ID for this request.",
+	//       "location": "path",
+	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/global/endpoints/{endpoint}",
+	//   "request": {
+	//     "$ref": "Endpoint"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/ndev.cloudman"
+	//   ]
+	// }
+
+}
+
+// method id "serviceregistry.endpoints.update":
+
+type EndpointsUpdateCall struct {
+	s          *Service
+	project    string
+	endpoint   string
+	endpoint2  *Endpoint
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+}
+
+// Update: Updates an endpoint.
+func (r *EndpointsService) Update(project string, endpoint string, endpoint2 *Endpoint) *EndpointsUpdateCall {
+	c := &EndpointsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.endpoint = endpoint
+	c.endpoint2 = endpoint2
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *EndpointsUpdateCall) Fields(s ...googleapi.Field) *EndpointsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *EndpointsUpdateCall) Context(ctx context.Context) *EndpointsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *EndpointsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.endpoint2)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/global/endpoints/{endpoint}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("PUT", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"project":  c.project,
+		"endpoint": c.endpoint,
+	})
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "serviceregistry.endpoints.update" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *EndpointsUpdateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates an endpoint.",
+	//   "httpMethod": "PUT",
+	//   "id": "serviceregistry.endpoints.update",
+	//   "parameterOrder": [
+	//     "project",
+	//     "endpoint"
+	//   ],
+	//   "parameters": {
+	//     "endpoint": {
+	//       "description": "The name of the endpoint for this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "The project ID for this request.",
+	//       "location": "path",
+	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/global/endpoints/{endpoint}",
+	//   "request": {
+	//     "$ref": "Endpoint"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/ndev.cloudman"
+	//   ]
+	// }
+
+}
+
+// method id "serviceregistry.operations.get":
+
+type OperationsGetCall struct {
+	s            *Service
+	project      string
+	operation    string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// Get: Gets information about a specific operation.
+func (r *OperationsService) Get(project string, operation string) *OperationsGetCall {
+	c := &OperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.operation = operation
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OperationsGetCall) Fields(s ...googleapi.Field) *OperationsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OperationsGetCall) IfNoneMatch(entityTag string) *OperationsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OperationsGetCall) Context(ctx context.Context) *OperationsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/global/operations/{operation}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"project":   c.project,
+		"operation": c.operation,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "serviceregistry.operations.get" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *OperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets information about a specific operation.",
+	//   "httpMethod": "GET",
+	//   "id": "serviceregistry.operations.get",
+	//   "parameterOrder": [
+	//     "project",
+	//     "operation"
+	//   ],
+	//   "parameters": {
+	//     "operation": {
+	//       "description": "The name of the operation for this request.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "The project ID for this request.",
+	//       "location": "path",
+	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/global/operations/{operation}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/ndev.cloudman",
+	//     "https://www.googleapis.com/auth/ndev.cloudman.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "serviceregistry.operations.list":
+
+type OperationsListCall struct {
+	s            *Service
+	project      string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+}
+
+// List: Lists all operations for a project.
+func (r *OperationsService) List(project string) *OperationsListCall {
+	c := &OperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	return c
+}
+
+// Filter sets the optional parameter "filter": Sets a filter expression
+// for filtering listed resources, in the form filter={expression}. Your
+// {expression} must be in the format: field_name comparison_string
+// literal_string.
+//
+// The field_name is the name of the field you want to compare. Only
+// atomic field types are supported (string, number, boolean). The
+// comparison_string must be either eq (equals) or ne (not equals). The
+// literal_string is the string value to filter to. The literal value
+// must be valid for the type of field you are filtering by (string,
+// number, boolean). For string fields, the literal value is interpreted
+// as a regular expression using RE2 syntax. The literal value must
+// match the entire field.
+//
+// For example, filter=name ne example-instance.
+//
+// Compute Engine Beta API Only: If you use filtering in the Beta API,
+// you can also filter on nested fields. For example, you could filter
+// on instances that have set the scheduling.automaticRestart field to
+// true. In particular, use filtering on nested fields to take advantage
+// of instance labels to organize and filter results based on label
+// values.
+//
+// The Beta API also supports filtering on multiple expressions by
+// providing each separate expression within parentheses. For example,
+// (scheduling.automaticRestart eq true) (zone eq us-central1-f).
+// Multiple expressions are treated as AND expressions meaning that
+// resources must match all expressions to pass the filters.
+func (c *OperationsListCall) Filter(filter string) *OperationsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// MaxResults sets the optional parameter "maxResults": The maximum
+// number of results per page that Compute Engine should return. If the
+// number of available results is larger than maxResults, Compute Engine
+// returns a nextPageToken that can be used to get the next page of
+// results in subsequent list requests.
+func (c *OperationsListCall) MaxResults(maxResults int64) *OperationsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OrderBy sets the optional parameter "orderBy": Sorts list results by
+// a certain order. By default, results are returned in alphanumerical
+// order based on the resource name.
+//
+// You can also sort results in descending order based on the creation
+// timestamp using orderBy="creationTimestamp desc". This sorts results
+// based on the creationTimestamp field in reverse chronological order
+// (newest result first). Use this to sort resources like operations so
+// that the newest operation is returned first.
+//
+// Currently, only sorting by name or creationTimestamp desc is
+// supported.
+func (c *OperationsListCall) OrderBy(orderBy string) *OperationsListCall {
+	c.urlParams_.Set("orderBy", orderBy)
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Specifies a page
+// token to use. Set pageToken to the nextPageToken returned by a
+// previous list request to get the next page of results.
+func (c *OperationsListCall) PageToken(pageToken string) *OperationsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *OperationsListCall) Fields(s ...googleapi.Field) *OperationsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *OperationsListCall) IfNoneMatch(entityTag string) *OperationsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *OperationsListCall) Context(ctx context.Context) *OperationsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/global/operations")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+	})
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		req.Header.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "serviceregistry.operations.list" call.
+// Exactly one of *OperationsListResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *OperationsListResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *OperationsListCall) Do(opts ...googleapi.CallOption) (*OperationsListResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &OperationsListResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists all operations for a project.",
+	//   "httpMethod": "GET",
+	//   "id": "serviceregistry.operations.list",
+	//   "parameterOrder": [
+	//     "project"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, filter=name ne example-instance.\n\nCompute Engine Beta API Only: If you use filtering in the Beta API, you can also filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. In particular, use filtering on nested fields to take advantage of instance labels to organize and filter results based on label values.\n\nThe Beta API also supports filtering on multiple expressions by providing each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions meaning that resources must match all expressions to pass the filters.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "default": "500",
+	//       "description": "The maximum number of results per page that Compute Engine should return. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.",
+	//       "format": "uint32",
+	//       "location": "query",
+	//       "maximum": "500",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "orderBy": {
+	//       "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "The project ID for this request.",
+	//       "location": "path",
+	//       "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/global/operations",
+	//   "response": {
+	//     "$ref": "OperationsListResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
+	//     "https://www.googleapis.com/auth/ndev.cloudman",
+	//     "https://www.googleapis.com/auth/ndev.cloudman.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *OperationsListCall) Pages(ctx context.Context, f func(*OperationsListResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
diff --git a/storage/v1/storage-api.json b/storage/v1/storage-api.json
index 439d42a..4f4e9ef 100644
--- a/storage/v1/storage-api.json
+++ b/storage/v1/storage-api.json
@@ -1,11 +1,11 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/iW6lW-fzl_pGlxeRN7h4J2G0OTQ\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/obxe7w0FjJgGPQFNs6hMClVbJfI\"",
  "discoveryVersion": "v1",
  "id": "storage:v1",
  "name": "storage",
  "version": "v1",
- "revision": "20151229",
+ "revision": "20160121",
  "title": "Cloud Storage JSON API",
  "description": "Lets you store and retrieve potentially-large, immutable data objects.",
  "ownerDomain": "google.com",
@@ -574,13 +574,7 @@
     },
     "contentType": {
      "type": "string",
-     "description": "Content-Type of the object data.",
-     "annotations": {
-      "required": [
-       "storage.objects.insert",
-       "storage.objects.update"
-      ]
-     }
+     "description": "Content-Type of the object data."
     },
     "crc32c": {
      "type": "string",
diff --git a/vision/v1/vision-api.json b/vision/v1/vision-api.json
new file mode 100644
index 0000000..9fd0084
--- /dev/null
+++ b/vision/v1/vision-api.json
@@ -0,0 +1,881 @@
+{
+  "id": "vision:v1",
+  "auth": {
+    "oauth2": {
+      "scopes": {
+        "https://www.googleapis.com/auth/cloud-platform": {
+          "description": "View and manage your data across Google Cloud Platform services"
+        }
+      }
+    }
+  },
+  "description": "The Google Cloud Vision API allows developers to easily integrate Google vision features, including image labeling, face, logo, and landmark detection, optical character recognition (OCR), and detection of explicit content, into applications.",
+  "protocol": "rest",
+  "title": "Cloud Vision API",
+  "resources": {
+    "images": {
+      "methods": {
+        "annotate": {
+          "id": "vision.images.annotate",
+          "response": {
+            "$ref": "BatchAnnotateImagesResponse"
+          },
+          "parameterOrder": [],
+          "description": "Run image detection and annotation for a batch of images.",
+          "request": {
+            "$ref": "BatchAnnotateImagesRequest"
+          },
+          "httpMethod": "POST",
+          "flatPath": "v1/images:annotate",
+          "parameters": {},
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ],
+          "path": "v1/images:annotate"
+        }
+      }
+    }
+  },
+  "schemas": {
+    "ImageSource": {
+      "description": "External image source (i.e. Google Cloud Storage image location).",
+      "properties": {
+        "gcsImageUri": {
+          "description": "Google Cloud Storage image URI. It must be in the following form:\n\"gs://bucket_name/object_name\". For more\ndetails, please see: https://cloud.google.com/storage/docs/reference-uris.\nNOTE: GCS object versioning is not supported!",
+          "type": "string"
+        }
+      },
+      "type": "object",
+      "id": "ImageSource"
+    },
+    "AnnotateImageRequest": {
+      "description": "Request for performing Vision tasks over a user-provided image, with\nuser-requested features.",
+      "properties": {
+        "image": {
+          "description": "The image to be processed.",
+          "$ref": "Image"
+        },
+        "imageContext": {
+          "description": "Additional context that may accompany the image.",
+          "$ref": "ImageContext"
+        },
+        "features": {
+          "description": "Requested features.",
+          "type": "array",
+          "items": {
+            "$ref": "Feature"
+          }
+        }
+      },
+      "type": "object",
+      "id": "AnnotateImageRequest"
+    },
+    "AnnotateImageResponse": {
+      "description": "Response to an image annotation request.",
+      "properties": {
+        "labelAnnotations": {
+          "description": "If present, label detection completed successfully.",
+          "type": "array",
+          "items": {
+            "$ref": "EntityAnnotation"
+          }
+        },
+        "landmarkAnnotations": {
+          "description": "If present, landmark detection completed successfully.",
+          "type": "array",
+          "items": {
+            "$ref": "EntityAnnotation"
+          }
+        },
+        "safeSearchAnnotation": {
+          "description": "If present, safe-search annotation completed successfully.",
+          "$ref": "SafeSearchAnnotation"
+        },
+        "textAnnotations": {
+          "description": "If present, text (OCR) detection completed successfully.",
+          "type": "array",
+          "items": {
+            "$ref": "EntityAnnotation"
+          }
+        },
+        "logoAnnotations": {
+          "description": "If present, logo detection completed successfully.",
+          "type": "array",
+          "items": {
+            "$ref": "EntityAnnotation"
+          }
+        },
+        "faceAnnotations": {
+          "description": "If present, face detection completed successfully.",
+          "type": "array",
+          "items": {
+            "$ref": "FaceAnnotation"
+          }
+        },
+        "error": {
+          "description": "If set, represents the error message for the operation.\nNote that filled-in mage annotations are guaranteed to be\ncorrect, even when \u003ccode\u003eerror\u003c/code\u003e is non-empty.",
+          "$ref": "Status"
+        }
+      },
+      "type": "object",
+      "id": "AnnotateImageResponse"
+    },
+    "LatLongRect": {
+      "description": "Rectangle determined by min and max LatLng pairs.",
+      "properties": {
+        "maxLatLng": {
+          "description": "Max lat/long pair.",
+          "$ref": "LatLng"
+        },
+        "minLatLng": {
+          "description": "Min lat/long pair.",
+          "$ref": "LatLng"
+        }
+      },
+      "type": "object",
+      "id": "LatLongRect"
+    },
+    "Status": {
+      "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` which can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting purpose.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "properties": {
+        "code": {
+          "description": "The status code, which should be an enum value of google.rpc.Code.",
+          "type": "integer",
+          "format": "int32"
+        },
+        "details": {
+          "description": "A list of messages that carry the error details.  There will be a\ncommon set of message types for APIs to use.",
+          "type": "array",
+          "items": {
+            "additionalProperties": {
+              "description": "Properties of the object. Contains field @ype with type URL.",
+              "type": "any"
+            },
+            "type": "object"
+          }
+        },
+        "message": {
+          "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+          "type": "string"
+        }
+      },
+      "type": "object",
+      "id": "Status"
+    },
+    "FaceAnnotation": {
+      "description": "A face annotation contains the results of face detection.",
+      "properties": {
+        "tiltAngle": {
+          "description": "Pitch angle. Indicates the upwards/downwards angle that the face is\npointing\nrelative to the image's horizontal plane. Range [-180,180].",
+          "type": "number",
+          "format": "float"
+        },
+        "underExposedLikelihood": {
+          "enum": [
+            "UNKNOWN",
+            "VERY_UNLIKELY",
+            "UNLIKELY",
+            "POSSIBLE",
+            "LIKELY",
+            "VERY_LIKELY"
+          ],
+          "description": "Under-exposed likelihood.",
+          "enumDescriptions": [
+            "Unknown likelihood.",
+            "The image very unlikely belongs to the vertical specified.",
+            "The image unlikely belongs to the vertical specified.",
+            "The image possibly belongs to the vertical specified.",
+            "The image likely belongs to the vertical specified.",
+            "The image very likely belongs to the vertical specified."
+          ],
+          "type": "string"
+        },
+        "fdBoundingPoly": {
+          "description": "This bounding polygon is tighter than the previous\n\u003ccode\u003eboundingPoly\u003c/code\u003e, and\nencloses only the skin part of the face. Typically, it is used to\neliminate the face from any image analysis that detects the\n\"amount of skin\" visible in an image. It is not based on the\nlandmarker results, only on the initial face detection, hence\nthe \u003ccode\u003efd\u003c/code\u003e (face detection) prefix.",
+          "$ref": "BoundingPoly"
+        },
+        "landmarkingConfidence": {
+          "description": "Face landmarking confidence. Range [0, 1].",
+          "type": "number",
+          "format": "float"
+        },
+        "joyLikelihood": {
+          "enum": [
+            "UNKNOWN",
+            "VERY_UNLIKELY",
+            "UNLIKELY",
+            "POSSIBLE",
+            "LIKELY",
+            "VERY_LIKELY"
+          ],
+          "description": "Joy likelihood.",
+          "enumDescriptions": [
+            "Unknown likelihood.",
+            "The image very unlikely belongs to the vertical specified.",
+            "The image unlikely belongs to the vertical specified.",
+            "The image possibly belongs to the vertical specified.",
+            "The image likely belongs to the vertical specified.",
+            "The image very likely belongs to the vertical specified."
+          ],
+          "type": "string"
+        },
+        "detectionConfidence": {
+          "description": "Detection confidence. Range [0, 1].",
+          "type": "number",
+          "format": "float"
+        },
+        "surpriseLikelihood": {
+          "enum": [
+            "UNKNOWN",
+            "VERY_UNLIKELY",
+            "UNLIKELY",
+            "POSSIBLE",
+            "LIKELY",
+            "VERY_LIKELY"
+          ],
+          "description": "Surprise likelihood.",
+          "enumDescriptions": [
+            "Unknown likelihood.",
+            "The image very unlikely belongs to the vertical specified.",
+            "The image unlikely belongs to the vertical specified.",
+            "The image possibly belongs to the vertical specified.",
+            "The image likely belongs to the vertical specified.",
+            "The image very likely belongs to the vertical specified."
+          ],
+          "type": "string"
+        },
+        "angerLikelihood": {
+          "enum": [
+            "UNKNOWN",
+            "VERY_UNLIKELY",
+            "UNLIKELY",
+            "POSSIBLE",
+            "LIKELY",
+            "VERY_LIKELY"
+          ],
+          "description": "Anger likelihood.",
+          "enumDescriptions": [
+            "Unknown likelihood.",
+            "The image very unlikely belongs to the vertical specified.",
+            "The image unlikely belongs to the vertical specified.",
+            "The image possibly belongs to the vertical specified.",
+            "The image likely belongs to the vertical specified.",
+            "The image very likely belongs to the vertical specified."
+          ],
+          "type": "string"
+        },
+        "headwearLikelihood": {
+          "enum": [
+            "UNKNOWN",
+            "VERY_UNLIKELY",
+            "UNLIKELY",
+            "POSSIBLE",
+            "LIKELY",
+            "VERY_LIKELY"
+          ],
+          "description": "Headwear likelihood.",
+          "enumDescriptions": [
+            "Unknown likelihood.",
+            "The image very unlikely belongs to the vertical specified.",
+            "The image unlikely belongs to the vertical specified.",
+            "The image possibly belongs to the vertical specified.",
+            "The image likely belongs to the vertical specified.",
+            "The image very likely belongs to the vertical specified."
+          ],
+          "type": "string"
+        },
+        "boundingPoly": {
+          "description": "The bounding polygon around the face. The coordinates of the bounding box\nare in the original image's scale, as returned in ImageParams.\nThe bounding box is computed to \"frame\" the face in accordance with human\nexpectations. It is based on the landmarker results.",
+          "$ref": "BoundingPoly"
+        },
+        "panAngle": {
+          "description": "Yaw angle. Indicates the leftward/rightward angle that the face is\npointing, relative to the vertical plane perpendicular to the image. Range\n[-180,180].",
+          "type": "number",
+          "format": "float"
+        },
+        "landmarks": {
+          "description": "Detected face landmarks.",
+          "type": "array",
+          "items": {
+            "$ref": "Landmark"
+          }
+        },
+        "blurredLikelihood": {
+          "enum": [
+            "UNKNOWN",
+            "VERY_UNLIKELY",
+            "UNLIKELY",
+            "POSSIBLE",
+            "LIKELY",
+            "VERY_LIKELY"
+          ],
+          "description": "Blurred likelihood.",
+          "enumDescriptions": [
+            "Unknown likelihood.",
+            "The image very unlikely belongs to the vertical specified.",
+            "The image unlikely belongs to the vertical specified.",
+            "The image possibly belongs to the vertical specified.",
+            "The image likely belongs to the vertical specified.",
+            "The image very likely belongs to the vertical specified."
+          ],
+          "type": "string"
+        },
+        "rollAngle": {
+          "description": "Roll angle. Indicates the amount of clockwise/anti-clockwise rotation of\nthe\nface relative to the image vertical, about the axis perpendicular to the\nface. Range [-180,180].",
+          "type": "number",
+          "format": "float"
+        },
+        "sorrowLikelihood": {
+          "enum": [
+            "UNKNOWN",
+            "VERY_UNLIKELY",
+            "UNLIKELY",
+            "POSSIBLE",
+            "LIKELY",
+            "VERY_LIKELY"
+          ],
+          "description": "Sorrow likelihood.",
+          "enumDescriptions": [
+            "Unknown likelihood.",
+            "The image very unlikely belongs to the vertical specified.",
+            "The image unlikely belongs to the vertical specified.",
+            "The image possibly belongs to the vertical specified.",
+            "The image likely belongs to the vertical specified.",
+            "The image very likely belongs to the vertical specified."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object",
+      "id": "FaceAnnotation"
+    },
+    "Vertex": {
+      "description": "A vertex represents a 2D point in the image.\nNOTE: the vertex coordinates are in the same scale as the original image.",
+      "properties": {
+        "y": {
+          "description": "Y coordinate.",
+          "type": "integer",
+          "format": "int32"
+        },
+        "x": {
+          "description": "X coordinate.",
+          "type": "integer",
+          "format": "int32"
+        }
+      },
+      "type": "object",
+      "id": "Vertex"
+    },
+    "BoundingPoly": {
+      "description": "A bounding polygon for the detected image annotation.",
+      "properties": {
+        "vertices": {
+          "description": "The bounding polygon vertices.",
+          "type": "array",
+          "items": {
+            "$ref": "Vertex"
+          }
+        }
+      },
+      "type": "object",
+      "id": "BoundingPoly"
+    },
+    "Landmark": {
+      "description": "A face-specific landmark (for example, a face feature).\nLandmark positions may fall outside the bounds of the image\nwhen the face is near one or more edges of the image.\nTherefore it is NOT guaranteed that 0 \u003c= x \u003c width or 0 \u003c= y \u003c height.",
+      "properties": {
+        "position": {
+          "description": "Face landmark position.",
+          "$ref": "Position"
+        },
+        "type": {
+          "enum": [
+            "UNKNOWN_LANDMARK",
+            "LEFT_EYE",
+            "RIGHT_EYE",
+            "LEFT_OF_LEFT_EYEBROW",
+            "RIGHT_OF_LEFT_EYEBROW",
+            "LEFT_OF_RIGHT_EYEBROW",
+            "RIGHT_OF_RIGHT_EYEBROW",
+            "MIDPOINT_BETWEEN_EYES",
+            "NOSE_TIP",
+            "UPPER_LIP",
+            "LOWER_LIP",
+            "MOUTH_LEFT",
+            "MOUTH_RIGHT",
+            "MOUTH_CENTER",
+            "NOSE_BOTTOM_RIGHT",
+            "NOSE_BOTTOM_LEFT",
+            "NOSE_BOTTOM_CENTER",
+            "LEFT_EYE_TOP_BOUNDARY",
+            "LEFT_EYE_RIGHT_CORNER",
+            "LEFT_EYE_BOTTOM_BOUNDARY",
+            "LEFT_EYE_LEFT_CORNER",
+            "RIGHT_EYE_TOP_BOUNDARY",
+            "RIGHT_EYE_RIGHT_CORNER",
+            "RIGHT_EYE_BOTTOM_BOUNDARY",
+            "RIGHT_EYE_LEFT_CORNER",
+            "LEFT_EYEBROW_UPPER_MIDPOINT",
+            "RIGHT_EYEBROW_UPPER_MIDPOINT",
+            "LEFT_EAR_TRAGION",
+            "RIGHT_EAR_TRAGION",
+            "LEFT_EYE_PUPIL",
+            "RIGHT_EYE_PUPIL",
+            "FOREHEAD_GLABELLA",
+            "CHIN_GNATHION",
+            "CHIN_LEFT_GONION",
+            "CHIN_RIGHT_GONION"
+          ],
+          "description": "Face landmark type.",
+          "enumDescriptions": [
+            "Unknown face landmark detected. Should not be filled.",
+            "Left eye.",
+            "Right eye.",
+            "Left of left eyebrow.",
+            "Right of left eyebrow.",
+            "Left of right eyebrow.",
+            "Right of right eyebrow.",
+            "Midpoint between eyes.",
+            "Nose tip.",
+            "Upper lip.",
+            "Lower lip.",
+            "Mouth left.",
+            "Mouth right.",
+            "Mouth center.",
+            "Nose, bottom right.",
+            "Nose, bottom left.",
+            "Nose, bottom center.",
+            "Left eye, top boundary.",
+            "Left eye, right corner.",
+            "Left eye, bottom boundary.",
+            "Left eye, left corner.",
+            "Right eye, top boundary.",
+            "Right eye, right corner.",
+            "Right eye, bottom boundary.",
+            "Right eye, left corner.",
+            "Left eyebrow, upper midpoint.",
+            "Right eyebrow, upper midpoint.",
+            "Left ear tragion.",
+            "Right ear tragion.",
+            "Left eye pupil.",
+            "Right eye pupil.",
+            "Forehead glabella.",
+            "Chin gnathion.",
+            "Chin left gonion.",
+            "Chin right gonion."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object",
+      "id": "Landmark"
+    },
+    "ImageContext": {
+      "description": "Image context.",
+      "properties": {
+        "languageHints": {
+          "description": "List of languages to use for TEXT_DETECTION. In most cases, an empty value\nwill yield the best results as it will allow text detection to\nautomatically detect the text language. For languages based on the latin\nalphabet a hint is not needed. In rare cases, when the language of\nthe text in the image is known in advance, setting this hint will help get\nbetter results (although it will hurt a great deal if the hint is wrong).\nText detection will return an error if one or more of the languages\nspecified here are not supported. The exact list of supported languages are\nspecified here:\nhttps://cloud.google.com/translate/v2/using_rest#language-params",
+          "type": "array",
+          "items": {
+            "type": "string"
+          }
+        },
+        "latLongRect": {
+          "description": "Lat/long rectangle that specifies the location of the image.",
+          "$ref": "LatLongRect"
+        }
+      },
+      "type": "object",
+      "id": "ImageContext"
+    },
+    "BatchAnnotateImagesRequest": {
+      "description": "Multiple image annotation requests are batched into a single service call.",
+      "properties": {
+        "requests": {
+          "description": "Individual image annotation requests for this batch.",
+          "type": "array",
+          "items": {
+            "$ref": "AnnotateImageRequest"
+          }
+        }
+      },
+      "type": "object",
+      "id": "BatchAnnotateImagesRequest"
+    },
+    "EntityAnnotation": {
+      "description": "Set of detected entity features.",
+      "properties": {
+        "mid": {
+          "description": "Knowledge Graph entity ID. Maps to a freebase entity ID.\n(for example, \"Google\" maps to: mid /m/045c7b).",
+          "type": "string"
+        },
+        "description": {
+          "description": "Entity textual description, expressed in its \u003ccode\u003elocale\u003c/code\u003e language.",
+          "type": "string"
+        },
+        "topicality": {
+          "description": "The relevancy of the ICA (Image Content Annotation) label to the\nimage. For example, the relevancy of 'tower' to an image containing\n'Eiffel Tower' is likely higher than an image containing a distant towering\nbuilding, though the confidence that there is a tower may be the same.\nRange [0, 1].",
+          "type": "number",
+          "format": "float"
+        },
+        "locale": {
+          "description": "The language code for the locale in which the entity textual\n\u003ccode\u003edescription\u003c/code\u003e (next field) is expressed.",
+          "type": "string"
+        },
+        "properties": {
+          "description": "Some entities can have additional optional \u003ccode\u003eProperty\u003c/code\u003e fields.\nFor example a different kind of score or string that qualifies the entity.",
+          "type": "array",
+          "items": {
+            "$ref": "Property"
+          }
+        },
+        "score": {
+          "description": "Overall score of the result. Range [0, 1].",
+          "type": "number",
+          "format": "float"
+        },
+        "boundingPoly": {
+          "description": "Image region to which this entity belongs.",
+          "$ref": "BoundingPoly"
+        },
+        "locations": {
+          "description": "The location information for the recognized entity. Multiple\n\u003ccode\u003eLocationInfo\u003c/code\u003e elements can be present since one location may\nindicate the location of the scene in the query image, and another the\nlocation of the place where the query image was taken. Location information\nis usually present for landmarks.",
+          "type": "array",
+          "items": {
+            "$ref": "LocationInfo"
+          }
+        },
+        "confidence": {
+          "description": "The accuracy of the entity recognition in an image.\nFor example, for an image containing 'Eiffel Tower,' this field represents\nthe confidence that there is a tower in the query image. Range [0, 1].",
+          "type": "number",
+          "format": "float"
+        }
+      },
+      "type": "object",
+      "id": "EntityAnnotation"
+    },
+    "Property": {
+      "description": "Arbitrary name/value pair.",
+      "properties": {
+        "value": {
+          "description": "Value of the property.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Name of the property.",
+          "type": "string"
+        }
+      },
+      "type": "object",
+      "id": "Property"
+    },
+    "LocationInfo": {
+      "description": "Detected entity location information.",
+      "properties": {
+        "latLng": {
+          "description": "Lat - long location coordinates.",
+          "$ref": "LatLng"
+        }
+      },
+      "type": "object",
+      "id": "LocationInfo"
+    },
+    "SafeSearchAnnotation": {
+      "description": "Set of features pertaining to the image, computed by various computer vision\nmethods over safe-search verticals (for example, adult, spoof, medical,\nviolence).",
+      "properties": {
+        "medical": {
+          "enum": [
+            "UNKNOWN",
+            "VERY_UNLIKELY",
+            "UNLIKELY",
+            "POSSIBLE",
+            "LIKELY",
+            "VERY_LIKELY"
+          ],
+          "description": "Likelihood this is a medical image.",
+          "enumDescriptions": [
+            "Unknown likelihood.",
+            "The image very unlikely belongs to the vertical specified.",
+            "The image unlikely belongs to the vertical specified.",
+            "The image possibly belongs to the vertical specified.",
+            "The image likely belongs to the vertical specified.",
+            "The image very likely belongs to the vertical specified."
+          ],
+          "type": "string"
+        },
+        "violence": {
+          "enum": [
+            "UNKNOWN",
+            "VERY_UNLIKELY",
+            "UNLIKELY",
+            "POSSIBLE",
+            "LIKELY",
+            "VERY_LIKELY"
+          ],
+          "description": "Violence likelihood.",
+          "enumDescriptions": [
+            "Unknown likelihood.",
+            "The image very unlikely belongs to the vertical specified.",
+            "The image unlikely belongs to the vertical specified.",
+            "The image possibly belongs to the vertical specified.",
+            "The image likely belongs to the vertical specified.",
+            "The image very likely belongs to the vertical specified."
+          ],
+          "type": "string"
+        },
+        "spoof": {
+          "enum": [
+            "UNKNOWN",
+            "VERY_UNLIKELY",
+            "UNLIKELY",
+            "POSSIBLE",
+            "LIKELY",
+            "VERY_LIKELY"
+          ],
+          "description": "Spoof likelihood. The likelihood that an obvious modification\nwas made to the image's canonical version to make it appear\nfunny or offensive.",
+          "enumDescriptions": [
+            "Unknown likelihood.",
+            "The image very unlikely belongs to the vertical specified.",
+            "The image unlikely belongs to the vertical specified.",
+            "The image possibly belongs to the vertical specified.",
+            "The image likely belongs to the vertical specified.",
+            "The image very likely belongs to the vertical specified."
+          ],
+          "type": "string"
+        },
+        "adult": {
+          "enum": [
+            "UNKNOWN",
+            "VERY_UNLIKELY",
+            "UNLIKELY",
+            "POSSIBLE",
+            "LIKELY",
+            "VERY_LIKELY"
+          ],
+          "description": "Represents the adult contents likelihood for the image.",
+          "enumDescriptions": [
+            "Unknown likelihood.",
+            "The image very unlikely belongs to the vertical specified.",
+            "The image unlikely belongs to the vertical specified.",
+            "The image possibly belongs to the vertical specified.",
+            "The image likely belongs to the vertical specified.",
+            "The image very likely belongs to the vertical specified."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object",
+      "id": "SafeSearchAnnotation"
+    },
+    "Image": {
+      "description": "Client image to perform Vision tasks over.",
+      "properties": {
+        "source": {
+          "description": "Google Cloud Storage image location. If both 'content' and 'source'\nare filled for an image, 'content' takes precedence and it will be\nused for performing the image annotation request.",
+          "$ref": "ImageSource"
+        },
+        "content": {
+          "description": "Image content, represented as a stream of bytes.",
+          "type": "string",
+          "format": "byte"
+        }
+      },
+      "type": "object",
+      "id": "Image"
+    },
+    "Feature": {
+      "description": "The \u003cem\u003eFeature\u003c/em\u003e indicates what type of image detection task to perform.\nUsers describe the type of Vision tasks to perform over images by\nusing \u003cem\u003eFeature\u003c/em\u003es. Features encode the Vision vertical to operate on\nand the number of top-scoring results to return.",
+      "properties": {
+        "maxResults": {
+          "description": "Maximum number of results of this type.",
+          "type": "integer",
+          "format": "int32"
+        },
+        "type": {
+          "enum": [
+            "TYPE_UNSPECIFIED",
+            "FACE_DETECTION",
+            "LANDMARK_DETECTION",
+            "LOGO_DETECTION",
+            "LABEL_DETECTION",
+            "TEXT_DETECTION",
+            "SAFE_SEARCH_DETECTION",
+            "IMAGE_PROPERTIES"
+          ],
+          "description": "The feature type.",
+          "enumDescriptions": [
+            "Unspecified feature type.",
+            "Run face detection.",
+            "Run landmark detection.",
+            "Run logo detection.",
+            "Run label detection.",
+            "Run OCR.",
+            "Run various computer vision models to",
+            "compute image safe-search properties.\nCompute image properties."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object",
+      "id": "Feature"
+    },
+    "BatchAnnotateImagesResponse": {
+      "description": "Response to a batch image annotation request.",
+      "properties": {
+        "responses": {
+          "description": "Individual responses to image annotation requests within the batch.",
+          "type": "array",
+          "items": {
+            "$ref": "AnnotateImageResponse"
+          }
+        }
+      },
+      "type": "object",
+      "id": "BatchAnnotateImagesResponse"
+    },
+    "Position": {
+      "description": "A 3D position in the image, used primarily for Face detection landmarks.\nA valid Position must have both x and y coordinates.\nThe position coordinates are in the same scale as the original image.",
+      "properties": {
+        "y": {
+          "description": "Y coordinate.",
+          "type": "number",
+          "format": "float"
+        },
+        "z": {
+          "description": "Z coordinate (or depth).",
+          "type": "number",
+          "format": "float"
+        },
+        "x": {
+          "description": "X coordinate.",
+          "type": "number",
+          "format": "float"
+        }
+      },
+      "type": "object",
+      "id": "Position"
+    },
+    "LatLng": {
+      "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n\u003ca href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\"\u003eWGS84\nstandard\u003c/a\u003e. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n    def NormalizeLongitude(longitude):\n      \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n      q, r = divmod(longitude, 360.0)\n      if r \u003e 180.0 or (r == 180.0 and q \u003c= -1.0):\n        return r - 360.0\n      return r\n\n    def NormalizeLatLng(latitude, longitude):\n      \"\"\"Wraps decimal degrees latitude and longitude to\n      [-180.0, 180.0] and [-90.0, 90.0], respectively.\"\"\"\n      r = latitude % 360.0\n      if r \u003c= 90.0:\n        return r, NormalizeLongitude(longitude)\n      elif r \u003e= 270.0:\n        return r - 360, NormalizeLongitude(longitude)\n      else:\n        return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n    assert 180.0 == NormalizeLongitude(180.0)\n    assert -180.0 == NormalizeLongitude(-180.0)\n    assert -179.0 == NormalizeLongitude(181.0)\n    assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n    assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n    assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n    assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n    assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n    assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n    assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n    assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)",
+      "properties": {
+        "longitude": {
+          "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
+          "type": "number",
+          "format": "double"
+        },
+        "latitude": {
+          "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
+          "type": "number",
+          "format": "double"
+        }
+      },
+      "type": "object",
+      "id": "LatLng"
+    }
+  },
+  "revision": "20160203",
+  "basePath": "",
+  "icons": {
+    "x32": "http://www.google.com/images/icons/product/search-32.gif",
+    "x16": "http://www.google.com/images/icons/product/search-16.gif"
+  },
+  "version_module": "True",
+  "discoveryVersion": "v1",
+  "parameters": {
+    "access_token": {
+      "description": "OAuth access token.",
+      "location": "query",
+      "type": "string"
+    },
+    "prettyPrint": {
+      "default": "true",
+      "description": "Returns response with indentations and line breaks.",
+      "location": "query",
+      "type": "boolean"
+    },
+    "key": {
+      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+      "location": "query",
+      "type": "string"
+    },
+    "quotaUser": {
+      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+      "location": "query",
+      "type": "string"
+    },
+    "pp": {
+      "default": "true",
+      "description": "Pretty-print response.",
+      "location": "query",
+      "type": "boolean"
+    },
+    "fields": {
+      "description": "Selector specifying which fields to include in a partial response.",
+      "location": "query",
+      "type": "string"
+    },
+    "alt": {
+      "description": "Data format for response.",
+      "location": "query",
+      "enum": [
+        "json",
+        "media",
+        "proto"
+      ],
+      "default": "json",
+      "enumDescriptions": [
+        "Responses with Content-Type of application/json",
+        "Media download with context-dependent Content-Type",
+        "Responses with Content-Type of application/x-protobuf"
+      ],
+      "type": "string"
+    },
+    "$.xgafv": {
+      "enum": [
+        "1",
+        "2"
+      ],
+      "description": "V1 error format.",
+      "enumDescriptions": [
+        "v1 error format",
+        "v2 error format"
+      ],
+      "location": "query",
+      "type": "string"
+    },
+    "callback": {
+      "description": "JSONP",
+      "location": "query",
+      "type": "string"
+    },
+    "uploadType": {
+      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    },
+    "oauth_token": {
+      "description": "OAuth 2.0 token for the current user.",
+      "location": "query",
+      "type": "string"
+    },
+    "upload_protocol": {
+      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    },
+    "bearer_token": {
+      "description": "OAuth bearer token.",
+      "location": "query",
+      "type": "string"
+    }
+  },
+  "name": "vision",
+  "baseUrl": "https://vision.googleapis.com/",
+  "ownerDomain": "google.com",
+  "documentationLink": "https://cloud.google.com/vision/",
+  "batchPath": "batch",
+  "servicePath": "",
+  "ownerName": "Google",
+  "version": "v1",
+  "rootUrl": "https://vision.googleapis.com/",
+  "kind": "discovery#restDescription"
+}
diff --git a/vision/v1/vision-gen.go b/vision/v1/vision-gen.go
new file mode 100644
index 0000000..de35824
--- /dev/null
+++ b/vision/v1/vision-gen.go
@@ -0,0 +1,1139 @@
+// Package vision provides access to the Cloud Vision API.
+//
+// See https://cloud.google.com/vision/
+//
+// Usage example:
+//
+//   import "google.golang.org/api/vision/v1"
+//   ...
+//   visionService, err := vision.New(oauthHttpClient)
+package vision // import "google.golang.org/api/vision/v1"
+
+import (
+	"bytes"
+	"encoding/json"
+	"errors"
+	"fmt"
+	context "golang.org/x/net/context"
+	ctxhttp "golang.org/x/net/context/ctxhttp"
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+var _ = ctxhttp.Do
+
+const apiId = "vision:v1"
+const apiName = "vision"
+const apiVersion = "v1"
+const basePath = "https://vision.googleapis.com/"
+
+// OAuth2 scopes used by this API.
+const (
+	// View and manage your data across Google Cloud Platform services
+	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
+)
+
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.Images = NewImagesService(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	Images *ImagesService
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewImagesService(s *Service) *ImagesService {
+	rs := &ImagesService{s: s}
+	return rs
+}
+
+type ImagesService struct {
+	s *Service
+}
+
+// AnnotateImageRequest: Request for performing Vision tasks over a
+// user-provided image, with
+// user-requested features.
+type AnnotateImageRequest struct {
+	// Features: Requested features.
+	Features []*Feature `json:"features,omitempty"`
+
+	// Image: The image to be processed.
+	Image *Image `json:"image,omitempty"`
+
+	// ImageContext: Additional context that may accompany the image.
+	ImageContext *ImageContext `json:"imageContext,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Features") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AnnotateImageRequest) MarshalJSON() ([]byte, error) {
+	type noMethod AnnotateImageRequest
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// AnnotateImageResponse: Response to an image annotation request.
+type AnnotateImageResponse struct {
+	// Error: If set, represents the error message for the operation.
+	// Note that filled-in mage annotations are guaranteed to be
+	// correct, even when <code>error</code> is non-empty.
+	Error *Status `json:"error,omitempty"`
+
+	// FaceAnnotations: If present, face detection completed successfully.
+	FaceAnnotations []*FaceAnnotation `json:"faceAnnotations,omitempty"`
+
+	// LabelAnnotations: If present, label detection completed successfully.
+	LabelAnnotations []*EntityAnnotation `json:"labelAnnotations,omitempty"`
+
+	// LandmarkAnnotations: If present, landmark detection completed
+	// successfully.
+	LandmarkAnnotations []*EntityAnnotation `json:"landmarkAnnotations,omitempty"`
+
+	// LogoAnnotations: If present, logo detection completed successfully.
+	LogoAnnotations []*EntityAnnotation `json:"logoAnnotations,omitempty"`
+
+	// SafeSearchAnnotation: If present, safe-search annotation completed
+	// successfully.
+	SafeSearchAnnotation *SafeSearchAnnotation `json:"safeSearchAnnotation,omitempty"`
+
+	// TextAnnotations: If present, text (OCR) detection completed
+	// successfully.
+	TextAnnotations []*EntityAnnotation `json:"textAnnotations,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Error") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *AnnotateImageResponse) MarshalJSON() ([]byte, error) {
+	type noMethod AnnotateImageResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// BatchAnnotateImagesRequest: Multiple image annotation requests are
+// batched into a single service call.
+type BatchAnnotateImagesRequest struct {
+	// Requests: Individual image annotation requests for this batch.
+	Requests []*AnnotateImageRequest `json:"requests,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Requests") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *BatchAnnotateImagesRequest) MarshalJSON() ([]byte, error) {
+	type noMethod BatchAnnotateImagesRequest
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// BatchAnnotateImagesResponse: Response to a batch image annotation
+// request.
+type BatchAnnotateImagesResponse struct {
+	// Responses: Individual responses to image annotation requests within
+	// the batch.
+	Responses []*AnnotateImageResponse `json:"responses,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Responses") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *BatchAnnotateImagesResponse) MarshalJSON() ([]byte, error) {
+	type noMethod BatchAnnotateImagesResponse
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// BoundingPoly: A bounding polygon for the detected image annotation.
+type BoundingPoly struct {
+	// Vertices: The bounding polygon vertices.
+	Vertices []*Vertex `json:"vertices,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Vertices") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *BoundingPoly) MarshalJSON() ([]byte, error) {
+	type noMethod BoundingPoly
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// EntityAnnotation: Set of detected entity features.
+type EntityAnnotation struct {
+	// BoundingPoly: Image region to which this entity belongs.
+	BoundingPoly *BoundingPoly `json:"boundingPoly,omitempty"`
+
+	// Confidence: The accuracy of the entity recognition in an image.
+	// For example, for an image containing 'Eiffel Tower,' this field
+	// represents
+	// the confidence that there is a tower in the query image. Range [0,
+	// 1].
+	Confidence float64 `json:"confidence,omitempty"`
+
+	// Description: Entity textual description, expressed in its
+	// <code>locale</code> language.
+	Description string `json:"description,omitempty"`
+
+	// Locale: The language code for the locale in which the entity
+	// textual
+	// <code>description</code> (next field) is expressed.
+	Locale string `json:"locale,omitempty"`
+
+	// Locations: The location information for the recognized entity.
+	// Multiple
+	// <code>LocationInfo</code> elements can be present since one location
+	// may
+	// indicate the location of the scene in the query image, and another
+	// the
+	// location of the place where the query image was taken. Location
+	// information
+	// is usually present for landmarks.
+	Locations []*LocationInfo `json:"locations,omitempty"`
+
+	// Mid: Knowledge Graph entity ID. Maps to a freebase entity ID.
+	// (for example, "Google" maps to: mid /m/045c7b).
+	Mid string `json:"mid,omitempty"`
+
+	// Properties: Some entities can have additional optional
+	// <code>Property</code> fields.
+	// For example a different kind of score or string that qualifies the
+	// entity.
+	Properties []*Property `json:"properties,omitempty"`
+
+	// Score: Overall score of the result. Range [0, 1].
+	Score float64 `json:"score,omitempty"`
+
+	// Topicality: The relevancy of the ICA (Image Content Annotation) label
+	// to the
+	// image. For example, the relevancy of 'tower' to an image
+	// containing
+	// 'Eiffel Tower' is likely higher than an image containing a distant
+	// towering
+	// building, though the confidence that there is a tower may be the
+	// same.
+	// Range [0, 1].
+	Topicality float64 `json:"topicality,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BoundingPoly") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *EntityAnnotation) MarshalJSON() ([]byte, error) {
+	type noMethod EntityAnnotation
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// FaceAnnotation: A face annotation contains the results of face
+// detection.
+type FaceAnnotation struct {
+	// AngerLikelihood: Anger likelihood.
+	//
+	// Possible values:
+	//   "UNKNOWN" - Unknown likelihood.
+	//   "VERY_UNLIKELY" - The image very unlikely belongs to the vertical
+	// specified.
+	//   "UNLIKELY" - The image unlikely belongs to the vertical specified.
+	//   "POSSIBLE" - The image possibly belongs to the vertical specified.
+	//   "LIKELY" - The image likely belongs to the vertical specified.
+	//   "VERY_LIKELY" - The image very likely belongs to the vertical
+	// specified.
+	AngerLikelihood string `json:"angerLikelihood,omitempty"`
+
+	// BlurredLikelihood: Blurred likelihood.
+	//
+	// Possible values:
+	//   "UNKNOWN" - Unknown likelihood.
+	//   "VERY_UNLIKELY" - The image very unlikely belongs to the vertical
+	// specified.
+	//   "UNLIKELY" - The image unlikely belongs to the vertical specified.
+	//   "POSSIBLE" - The image possibly belongs to the vertical specified.
+	//   "LIKELY" - The image likely belongs to the vertical specified.
+	//   "VERY_LIKELY" - The image very likely belongs to the vertical
+	// specified.
+	BlurredLikelihood string `json:"blurredLikelihood,omitempty"`
+
+	// BoundingPoly: The bounding polygon around the face. The coordinates
+	// of the bounding box
+	// are in the original image's scale, as returned in ImageParams.
+	// The bounding box is computed to "frame" the face in accordance with
+	// human
+	// expectations. It is based on the landmarker results.
+	BoundingPoly *BoundingPoly `json:"boundingPoly,omitempty"`
+
+	// DetectionConfidence: Detection confidence. Range [0, 1].
+	DetectionConfidence float64 `json:"detectionConfidence,omitempty"`
+
+	// FdBoundingPoly: This bounding polygon is tighter than the
+	// previous
+	// <code>boundingPoly</code>, and
+	// encloses only the skin part of the face. Typically, it is used
+	// to
+	// eliminate the face from any image analysis that detects the
+	// "amount of skin" visible in an image. It is not based on
+	// the
+	// landmarker results, only on the initial face detection, hence
+	// the <code>fd</code> (face detection) prefix.
+	FdBoundingPoly *BoundingPoly `json:"fdBoundingPoly,omitempty"`
+
+	// HeadwearLikelihood: Headwear likelihood.
+	//
+	// Possible values:
+	//   "UNKNOWN" - Unknown likelihood.
+	//   "VERY_UNLIKELY" - The image very unlikely belongs to the vertical
+	// specified.
+	//   "UNLIKELY" - The image unlikely belongs to the vertical specified.
+	//   "POSSIBLE" - The image possibly belongs to the vertical specified.
+	//   "LIKELY" - The image likely belongs to the vertical specified.
+	//   "VERY_LIKELY" - The image very likely belongs to the vertical
+	// specified.
+	HeadwearLikelihood string `json:"headwearLikelihood,omitempty"`
+
+	// JoyLikelihood: Joy likelihood.
+	//
+	// Possible values:
+	//   "UNKNOWN" - Unknown likelihood.
+	//   "VERY_UNLIKELY" - The image very unlikely belongs to the vertical
+	// specified.
+	//   "UNLIKELY" - The image unlikely belongs to the vertical specified.
+	//   "POSSIBLE" - The image possibly belongs to the vertical specified.
+	//   "LIKELY" - The image likely belongs to the vertical specified.
+	//   "VERY_LIKELY" - The image very likely belongs to the vertical
+	// specified.
+	JoyLikelihood string `json:"joyLikelihood,omitempty"`
+
+	// LandmarkingConfidence: Face landmarking confidence. Range [0, 1].
+	LandmarkingConfidence float64 `json:"landmarkingConfidence,omitempty"`
+
+	// Landmarks: Detected face landmarks.
+	Landmarks []*Landmark `json:"landmarks,omitempty"`
+
+	// PanAngle: Yaw angle. Indicates the leftward/rightward angle that the
+	// face is
+	// pointing, relative to the vertical plane perpendicular to the image.
+	// Range
+	// [-180,180].
+	PanAngle float64 `json:"panAngle,omitempty"`
+
+	// RollAngle: Roll angle. Indicates the amount of
+	// clockwise/anti-clockwise rotation of
+	// the
+	// face relative to the image vertical, about the axis perpendicular to
+	// the
+	// face. Range [-180,180].
+	RollAngle float64 `json:"rollAngle,omitempty"`
+
+	// SorrowLikelihood: Sorrow likelihood.
+	//
+	// Possible values:
+	//   "UNKNOWN" - Unknown likelihood.
+	//   "VERY_UNLIKELY" - The image very unlikely belongs to the vertical
+	// specified.
+	//   "UNLIKELY" - The image unlikely belongs to the vertical specified.
+	//   "POSSIBLE" - The image possibly belongs to the vertical specified.
+	//   "LIKELY" - The image likely belongs to the vertical specified.
+	//   "VERY_LIKELY" - The image very likely belongs to the vertical
+	// specified.
+	SorrowLikelihood string `json:"sorrowLikelihood,omitempty"`
+
+	// SurpriseLikelihood: Surprise likelihood.
+	//
+	// Possible values:
+	//   "UNKNOWN" - Unknown likelihood.
+	//   "VERY_UNLIKELY" - The image very unlikely belongs to the vertical
+	// specified.
+	//   "UNLIKELY" - The image unlikely belongs to the vertical specified.
+	//   "POSSIBLE" - The image possibly belongs to the vertical specified.
+	//   "LIKELY" - The image likely belongs to the vertical specified.
+	//   "VERY_LIKELY" - The image very likely belongs to the vertical
+	// specified.
+	SurpriseLikelihood string `json:"surpriseLikelihood,omitempty"`
+
+	// TiltAngle: Pitch angle. Indicates the upwards/downwards angle that
+	// the face is
+	// pointing
+	// relative to the image's horizontal plane. Range [-180,180].
+	TiltAngle float64 `json:"tiltAngle,omitempty"`
+
+	// UnderExposedLikelihood: Under-exposed likelihood.
+	//
+	// Possible values:
+	//   "UNKNOWN" - Unknown likelihood.
+	//   "VERY_UNLIKELY" - The image very unlikely belongs to the vertical
+	// specified.
+	//   "UNLIKELY" - The image unlikely belongs to the vertical specified.
+	//   "POSSIBLE" - The image possibly belongs to the vertical specified.
+	//   "LIKELY" - The image likely belongs to the vertical specified.
+	//   "VERY_LIKELY" - The image very likely belongs to the vertical
+	// specified.
+	UnderExposedLikelihood string `json:"underExposedLikelihood,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AngerLikelihood") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *FaceAnnotation) MarshalJSON() ([]byte, error) {
+	type noMethod FaceAnnotation
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Feature: The <em>Feature</em> indicates what type of image detection
+// task to perform.
+// Users describe the type of Vision tasks to perform over images
+// by
+// using <em>Feature</em>s. Features encode the Vision vertical to
+// operate on
+// and the number of top-scoring results to return.
+type Feature struct {
+	// MaxResults: Maximum number of results of this type.
+	MaxResults int64 `json:"maxResults,omitempty"`
+
+	// Type: The feature type.
+	//
+	// Possible values:
+	//   "TYPE_UNSPECIFIED" - Unspecified feature type.
+	//   "FACE_DETECTION" - Run face detection.
+	//   "LANDMARK_DETECTION" - Run landmark detection.
+	//   "LOGO_DETECTION" - Run logo detection.
+	//   "LABEL_DETECTION" - Run label detection.
+	//   "TEXT_DETECTION" - Run OCR.
+	//   "SAFE_SEARCH_DETECTION" - Run various computer vision models to
+	//   "IMAGE_PROPERTIES" - compute image safe-search properties.
+	// Compute image properties.
+	Type string `json:"type,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "MaxResults") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Feature) MarshalJSON() ([]byte, error) {
+	type noMethod Feature
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Image: Client image to perform Vision tasks over.
+type Image struct {
+	// Content: Image content, represented as a stream of bytes.
+	Content string `json:"content,omitempty"`
+
+	// Source: Google Cloud Storage image location. If both 'content' and
+	// 'source'
+	// are filled for an image, 'content' takes precedence and it will
+	// be
+	// used for performing the image annotation request.
+	Source *ImageSource `json:"source,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Content") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Image) MarshalJSON() ([]byte, error) {
+	type noMethod Image
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ImageContext: Image context.
+type ImageContext struct {
+	// LanguageHints: List of languages to use for TEXT_DETECTION. In most
+	// cases, an empty value
+	// will yield the best results as it will allow text detection
+	// to
+	// automatically detect the text language. For languages based on the
+	// latin
+	// alphabet a hint is not needed. In rare cases, when the language
+	// of
+	// the text in the image is known in advance, setting this hint will
+	// help get
+	// better results (although it will hurt a great deal if the hint is
+	// wrong).
+	// Text detection will return an error if one or more of the
+	// languages
+	// specified here are not supported. The exact list of supported
+	// languages are
+	// specified
+	// here:
+	// https://cloud.google.com/translate/v2/using_rest#language-params
+	LanguageHints []string `json:"languageHints,omitempty"`
+
+	// LatLongRect: Lat/long rectangle that specifies the location of the
+	// image.
+	LatLongRect *LatLongRect `json:"latLongRect,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "LanguageHints") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ImageContext) MarshalJSON() ([]byte, error) {
+	type noMethod ImageContext
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// ImageSource: External image source (i.e. Google Cloud Storage image
+// location).
+type ImageSource struct {
+	// GcsImageUri: Google Cloud Storage image URI. It must be in the
+	// following form:
+	// "gs://bucket_name/object_name". For more
+	// details, please see:
+	// https://cloud.google.com/storage/docs/reference-uris.
+	// NOTE: GCS object versioning is not supported!
+	GcsImageUri string `json:"gcsImageUri,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "GcsImageUri") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *ImageSource) MarshalJSON() ([]byte, error) {
+	type noMethod ImageSource
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Landmark: A face-specific landmark (for example, a face
+// feature).
+// Landmark positions may fall outside the bounds of the image
+// when the face is near one or more edges of the image.
+// Therefore it is NOT guaranteed that 0 <= x < width or 0 <= y <
+// height.
+type Landmark struct {
+	// Position: Face landmark position.
+	Position *Position `json:"position,omitempty"`
+
+	// Type: Face landmark type.
+	//
+	// Possible values:
+	//   "UNKNOWN_LANDMARK" - Unknown face landmark detected. Should not be
+	// filled.
+	//   "LEFT_EYE" - Left eye.
+	//   "RIGHT_EYE" - Right eye.
+	//   "LEFT_OF_LEFT_EYEBROW" - Left of left eyebrow.
+	//   "RIGHT_OF_LEFT_EYEBROW" - Right of left eyebrow.
+	//   "LEFT_OF_RIGHT_EYEBROW" - Left of right eyebrow.
+	//   "RIGHT_OF_RIGHT_EYEBROW" - Right of right eyebrow.
+	//   "MIDPOINT_BETWEEN_EYES" - Midpoint between eyes.
+	//   "NOSE_TIP" - Nose tip.
+	//   "UPPER_LIP" - Upper lip.
+	//   "LOWER_LIP" - Lower lip.
+	//   "MOUTH_LEFT" - Mouth left.
+	//   "MOUTH_RIGHT" - Mouth right.
+	//   "MOUTH_CENTER" - Mouth center.
+	//   "NOSE_BOTTOM_RIGHT" - Nose, bottom right.
+	//   "NOSE_BOTTOM_LEFT" - Nose, bottom left.
+	//   "NOSE_BOTTOM_CENTER" - Nose, bottom center.
+	//   "LEFT_EYE_TOP_BOUNDARY" - Left eye, top boundary.
+	//   "LEFT_EYE_RIGHT_CORNER" - Left eye, right corner.
+	//   "LEFT_EYE_BOTTOM_BOUNDARY" - Left eye, bottom boundary.
+	//   "LEFT_EYE_LEFT_CORNER" - Left eye, left corner.
+	//   "RIGHT_EYE_TOP_BOUNDARY" - Right eye, top boundary.
+	//   "RIGHT_EYE_RIGHT_CORNER" - Right eye, right corner.
+	//   "RIGHT_EYE_BOTTOM_BOUNDARY" - Right eye, bottom boundary.
+	//   "RIGHT_EYE_LEFT_CORNER" - Right eye, left corner.
+	//   "LEFT_EYEBROW_UPPER_MIDPOINT" - Left eyebrow, upper midpoint.
+	//   "RIGHT_EYEBROW_UPPER_MIDPOINT" - Right eyebrow, upper midpoint.
+	//   "LEFT_EAR_TRAGION" - Left ear tragion.
+	//   "RIGHT_EAR_TRAGION" - Right ear tragion.
+	//   "LEFT_EYE_PUPIL" - Left eye pupil.
+	//   "RIGHT_EYE_PUPIL" - Right eye pupil.
+	//   "FOREHEAD_GLABELLA" - Forehead glabella.
+	//   "CHIN_GNATHION" - Chin gnathion.
+	//   "CHIN_LEFT_GONION" - Chin left gonion.
+	//   "CHIN_RIGHT_GONION" - Chin right gonion.
+	Type string `json:"type,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Position") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Landmark) MarshalJSON() ([]byte, error) {
+	type noMethod Landmark
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// LatLng: An object representing a latitude/longitude pair. This is
+// expressed as a pair
+// of doubles representing degrees latitude and degrees longitude.
+// Unless
+// specified otherwise, this must conform to the
+// <a
+// href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
+// st
+// andard</a>. Values must be within normalized ranges.
+//
+// Example of normalization code in Python:
+//
+//     def NormalizeLongitude(longitude):
+//       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
+//       q, r = divmod(longitude, 360.0)
+//       if r > 180.0 or (r == 180.0 and q <= -1.0):
+//         return r - 360.0
+//       return r
+//
+//     def NormalizeLatLng(latitude, longitude):
+//       """Wraps decimal degrees latitude and longitude to
+//       [-180.0, 180.0] and [-90.0, 90.0], respectively."""
+//       r = latitude % 360.0
+//       if r <= 90.0:
+//         return r, NormalizeLongitude(longitude)
+//       elif r >= 270.0:
+//         return r - 360, NormalizeLongitude(longitude)
+//       else:
+//         return 180 - r, NormalizeLongitude(longitude + 180.0)
+//
+//     assert 180.0 == NormalizeLongitude(180.0)
+//     assert -180.0 == NormalizeLongitude(-180.0)
+//     assert -179.0 == NormalizeLongitude(181.0)
+//     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
+//     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
+//     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
+//     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
+//     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
+//     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
+//     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
+//     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
+//     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
+//     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
+type LatLng struct {
+	// Latitude: The latitude in degrees. It must be in the range [-90.0,
+	// +90.0].
+	Latitude float64 `json:"latitude,omitempty"`
+
+	// Longitude: The longitude in degrees. It must be in the range [-180.0,
+	// +180.0].
+	Longitude float64 `json:"longitude,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Latitude") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *LatLng) MarshalJSON() ([]byte, error) {
+	type noMethod LatLng
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// LatLongRect: Rectangle determined by min and max LatLng pairs.
+type LatLongRect struct {
+	// MaxLatLng: Max lat/long pair.
+	MaxLatLng *LatLng `json:"maxLatLng,omitempty"`
+
+	// MinLatLng: Min lat/long pair.
+	MinLatLng *LatLng `json:"minLatLng,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "MaxLatLng") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *LatLongRect) MarshalJSON() ([]byte, error) {
+	type noMethod LatLongRect
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// LocationInfo: Detected entity location information.
+type LocationInfo struct {
+	// LatLng: Lat - long location coordinates.
+	LatLng *LatLng `json:"latLng,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "LatLng") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *LocationInfo) MarshalJSON() ([]byte, error) {
+	type noMethod LocationInfo
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Position: A 3D position in the image, used primarily for Face
+// detection landmarks.
+// A valid Position must have both x and y coordinates.
+// The position coordinates are in the same scale as the original image.
+type Position struct {
+	// X: X coordinate.
+	X float64 `json:"x,omitempty"`
+
+	// Y: Y coordinate.
+	Y float64 `json:"y,omitempty"`
+
+	// Z: Z coordinate (or depth).
+	Z float64 `json:"z,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "X") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Position) MarshalJSON() ([]byte, error) {
+	type noMethod Position
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Property: Arbitrary name/value pair.
+type Property struct {
+	// Name: Name of the property.
+	Name string `json:"name,omitempty"`
+
+	// Value: Value of the property.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Name") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Property) MarshalJSON() ([]byte, error) {
+	type noMethod Property
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// SafeSearchAnnotation: Set of features pertaining to the image,
+// computed by various computer vision
+// methods over safe-search verticals (for example, adult, spoof,
+// medical,
+// violence).
+type SafeSearchAnnotation struct {
+	// Adult: Represents the adult contents likelihood for the image.
+	//
+	// Possible values:
+	//   "UNKNOWN" - Unknown likelihood.
+	//   "VERY_UNLIKELY" - The image very unlikely belongs to the vertical
+	// specified.
+	//   "UNLIKELY" - The image unlikely belongs to the vertical specified.
+	//   "POSSIBLE" - The image possibly belongs to the vertical specified.
+	//   "LIKELY" - The image likely belongs to the vertical specified.
+	//   "VERY_LIKELY" - The image very likely belongs to the vertical
+	// specified.
+	Adult string `json:"adult,omitempty"`
+
+	// Medical: Likelihood this is a medical image.
+	//
+	// Possible values:
+	//   "UNKNOWN" - Unknown likelihood.
+	//   "VERY_UNLIKELY" - The image very unlikely belongs to the vertical
+	// specified.
+	//   "UNLIKELY" - The image unlikely belongs to the vertical specified.
+	//   "POSSIBLE" - The image possibly belongs to the vertical specified.
+	//   "LIKELY" - The image likely belongs to the vertical specified.
+	//   "VERY_LIKELY" - The image very likely belongs to the vertical
+	// specified.
+	Medical string `json:"medical,omitempty"`
+
+	// Spoof: Spoof likelihood. The likelihood that an obvious
+	// modification
+	// was made to the image's canonical version to make it appear
+	// funny or offensive.
+	//
+	// Possible values:
+	//   "UNKNOWN" - Unknown likelihood.
+	//   "VERY_UNLIKELY" - The image very unlikely belongs to the vertical
+	// specified.
+	//   "UNLIKELY" - The image unlikely belongs to the vertical specified.
+	//   "POSSIBLE" - The image possibly belongs to the vertical specified.
+	//   "LIKELY" - The image likely belongs to the vertical specified.
+	//   "VERY_LIKELY" - The image very likely belongs to the vertical
+	// specified.
+	Spoof string `json:"spoof,omitempty"`
+
+	// Violence: Violence likelihood.
+	//
+	// Possible values:
+	//   "UNKNOWN" - Unknown likelihood.
+	//   "VERY_UNLIKELY" - The image very unlikely belongs to the vertical
+	// specified.
+	//   "UNLIKELY" - The image unlikely belongs to the vertical specified.
+	//   "POSSIBLE" - The image possibly belongs to the vertical specified.
+	//   "LIKELY" - The image likely belongs to the vertical specified.
+	//   "VERY_LIKELY" - The image very likely belongs to the vertical
+	// specified.
+	Violence string `json:"violence,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Adult") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *SafeSearchAnnotation) MarshalJSON() ([]byte, error) {
+	type noMethod SafeSearchAnnotation
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// Status: The `Status` type defines a logical error model that is
+// suitable for different
+// programming environments, including REST APIs and RPC APIs. It is
+// used by
+// [gRPC](https://github.com/grpc). The error model is designed to
+// be:
+//
+// - Simple to use and understand for most users
+// - Flexible enough to meet unexpected needs
+//
+// # Overview
+//
+// The `Status` message contains three pieces of data: error code, error
+// message,
+// and error details. The error code should be an enum value
+// of
+// google.rpc.Code, but it may accept additional error codes if needed.
+// The
+// error message should be a developer-facing English message that
+// helps
+// developers *understand* and *resolve* the error. If a localized
+// user-facing
+// error message is needed, put the localized message in the error
+// details or
+// localize it in the client. The optional error details may contain
+// arbitrary
+// information about the error. There is a predefined set of error
+// detail types
+// in the package `google.rpc` which can be used for common error
+// conditions.
+//
+// # Language mapping
+//
+// The `Status` message is the logical representation of the error
+// model, but it
+// is not necessarily the actual wire format. When the `Status` message
+// is
+// exposed in different client libraries and different wire protocols,
+// it can be
+// mapped differently. For example, it will likely be mapped to some
+// exceptions
+// in Java, but more likely mapped to some error codes in C.
+//
+// # Other uses
+//
+// The error model and the `Status` message can be used in a variety
+// of
+// environments, either with or without APIs, to provide a
+// consistent developer experience across different
+// environments.
+//
+// Example uses of this error model include:
+//
+// - Partial errors. If a service needs to return partial errors to the
+// client,
+//     it may embed the `Status` in the normal response to indicate the
+// partial
+//     errors.
+//
+// - Workflow errors. A typical workflow has multiple steps. Each step
+// may
+//     have a `Status` message for error reporting purpose.
+//
+// - Batch operations. If a client uses batch request and batch
+// response, the
+//     `Status` message should be used directly inside batch response,
+// one for
+//     each error sub-response.
+//
+// - Asynchronous operations. If an API call embeds asynchronous
+// operation
+//     results in its response, the status of those operations should
+// be
+//     represented directly using the `Status` message.
+//
+// - Logging. If some API errors are stored in logs, the message
+// `Status` could
+//     be used directly after any stripping needed for security/privacy
+// reasons.
+type Status struct {
+	// Code: The status code, which should be an enum value of
+	// google.rpc.Code.
+	Code int64 `json:"code,omitempty"`
+
+	// Details: A list of messages that carry the error details.  There will
+	// be a
+	// common set of message types for APIs to use.
+	Details []StatusDetails `json:"details,omitempty"`
+
+	// Message: A developer-facing error message, which should be in
+	// English. Any
+	// user-facing error message should be localized and sent in
+	// the
+	// google.rpc.Status.details field, or localized by the client.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Status) MarshalJSON() ([]byte, error) {
+	type noMethod Status
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+type StatusDetails interface{}
+
+// Vertex: A vertex represents a 2D point in the image.
+// NOTE: the vertex coordinates are in the same scale as the original
+// image.
+type Vertex struct {
+	// X: X coordinate.
+	X int64 `json:"x,omitempty"`
+
+	// Y: Y coordinate.
+	Y int64 `json:"y,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "X") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+}
+
+func (s *Vertex) MarshalJSON() ([]byte, error) {
+	type noMethod Vertex
+	raw := noMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields)
+}
+
+// method id "vision.images.annotate":
+
+type ImagesAnnotateCall struct {
+	s                          *Service
+	batchannotateimagesrequest *BatchAnnotateImagesRequest
+	urlParams_                 gensupport.URLParams
+	ctx_                       context.Context
+}
+
+// Annotate: Run image detection and annotation for a batch of images.
+func (r *ImagesService) Annotate(batchannotateimagesrequest *BatchAnnotateImagesRequest) *ImagesAnnotateCall {
+	c := &ImagesAnnotateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.batchannotateimagesrequest = batchannotateimagesrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ImagesAnnotateCall) Fields(s ...googleapi.Field) *ImagesAnnotateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ImagesAnnotateCall) Context(ctx context.Context) *ImagesAnnotateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+func (c *ImagesAnnotateCall) doRequest(alt string) (*http.Response, error) {
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.batchannotateimagesrequest)
+	if err != nil {
+		return nil, err
+	}
+	ctype := "application/json"
+	c.urlParams_.Set("alt", alt)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/images:annotate")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("POST", urls, body)
+	googleapi.SetOpaque(req.URL)
+	req.Header.Set("Content-Type", ctype)
+	req.Header.Set("User-Agent", c.s.userAgent())
+	if c.ctx_ != nil {
+		return ctxhttp.Do(c.ctx_, c.s.client, req)
+	}
+	return c.s.client.Do(req)
+}
+
+// Do executes the "vision.images.annotate" call.
+// Exactly one of *BatchAnnotateImagesResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *BatchAnnotateImagesResponse.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ImagesAnnotateCall) Do(opts ...googleapi.CallOption) (*BatchAnnotateImagesResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &BatchAnnotateImagesResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	if err := json.NewDecoder(res.Body).Decode(&ret); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Run image detection and annotation for a batch of images.",
+	//   "flatPath": "v1/images:annotate",
+	//   "httpMethod": "POST",
+	//   "id": "vision.images.annotate",
+	//   "parameterOrder": [],
+	//   "parameters": {},
+	//   "path": "v1/images:annotate",
+	//   "request": {
+	//     "$ref": "BatchAnnotateImagesRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "BatchAnnotateImagesResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
diff --git a/youtube/v3/youtube-api.json b/youtube/v3/youtube-api.json
index bceab97..3dd5960 100644
--- a/youtube/v3/youtube-api.json
+++ b/youtube/v3/youtube-api.json
@@ -1,12 +1,12 @@
 {
  "kind": "discovery#restDescription",
- "etag": "\"ye6orv2F-1npMW3u9suM3a7C5Bo/rAeglxtdeyhwqqUXexq32kOU_zQ\"",
+ "etag": "\"bRFOOrZKfO9LweMbPqu0kcu6De8/6wAqwYsI7XAGaEBx_b4jOSvwXg4\"",
  "discoveryVersion": "v1",
  "id": "youtube:v3",
  "name": "youtube",
  "canonicalName": "YouTube",
  "version": "v3",
- "revision": "20160106",
+ "revision": "20160201",
  "title": "YouTube Data API",
  "description": "Programmatic access to YouTube features.",
  "ownerDomain": "google.com",
@@ -974,15 +974,6 @@
     }
    }
   },
-  "ChannelId": {
-   "id": "ChannelId",
-   "type": "object",
-   "properties": {
-    "value": {
-     "type": "string"
-    }
-   }
-  },
   "ChannelListResponse": {
    "id": "ChannelListResponse",
    "type": "object",
@@ -1534,7 +1525,7 @@
    "description": "Basic details about a comment, such as its author and text.",
    "properties": {
     "authorChannelId": {
-     "$ref": "ChannelId",
+     "type": "any",
      "description": "The id of the author's YouTube channel, if any."
     },
     "authorChannelUrl": {
@@ -1743,7 +1734,7 @@
   "ContentRating": {
    "id": "ContentRating",
    "type": "object",
-   "description": "Ratings schemes. The country-specific ratings are mostly for movies and shows. NEXT_ID: 66",
+   "description": "Ratings schemes. The country-specific ratings are mostly for movies and shows. NEXT_ID: 67",
    "properties": {
     "acbRating": {
      "type": "string",
@@ -2206,6 +2197,32 @@
       ]
      }
     },
+    "ecbmctRating": {
+     "type": "string",
+     "description": "Rating system in Turkey - Evaluation and Classification Board of the Ministry of Culture and Tourism",
+     "enum": [
+      "ecbmct13a",
+      "ecbmct13plus",
+      "ecbmct15a",
+      "ecbmct15plus",
+      "ecbmct18plus",
+      "ecbmct7a",
+      "ecbmct7plus",
+      "ecbmctG",
+      "ecbmctUnrated"
+     ],
+     "enumDescriptions": [
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      "",
+      ""
+     ]
+    },
     "eefilmRating": {
      "type": "string",
      "description": "The video's rating in Estonia.",
@@ -2338,6 +2355,7 @@
      "type": "string",
      "description": "The video's rating from South Africa's Film and Publication Board.",
      "enum": [
+      "fpb10",
       "fpb1012Pg",
       "fpb13",
       "fpb16",
@@ -2359,6 +2377,7 @@
       "",
       "",
       "",
+      "",
       ""
      ]
     },
@@ -5327,6 +5346,9 @@
      "type": "string",
      "description": "The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set."
     },
+    "regionCode": {
+     "type": "string"
+    },
     "tokenPagination": {
      "$ref": "TokenPagination"
     },
@@ -5754,10 +5776,6 @@
      "$ref": "VideoContentDetails",
      "description": "The contentDetails object contains information about the video content, including the length of the video and its aspect ratio."
     },
-    "conversionPings": {
-     "$ref": "VideoConversionPings",
-     "description": "The conversionPings object encapsulates information about url pings that need to be respected by the App in different video contexts."
-    },
     "etag": {
      "type": "string",
      "description": "Etag of this resource."
@@ -6139,45 +6157,6 @@
     }
    }
   },
-  "VideoConversionPing": {
-   "id": "VideoConversionPing",
-   "type": "object",
-   "properties": {
-    "context": {
-     "type": "string",
-     "description": "Defines the context of the ping.",
-     "enum": [
-      "comment",
-      "dislike",
-      "like",
-      "share"
-     ],
-     "enumDescriptions": [
-      "",
-      "",
-      "",
-      ""
-     ]
-    },
-    "conversionUrl": {
-     "type": "string",
-     "description": "The url (without the schema) that the app shall send the ping to. It's at caller's descretion to decide which schema to use (http vs https) Example of a returned url: //googleads.g.doubleclick.net/pagead/ viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D like%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA%3Bytvid%3DUrIaJUvIQDg&labe=default The caller must append biscotti authentication (ms param in case of mobile, for example) to this ping."
-    }
-   }
-  },
-  "VideoConversionPings": {
-   "id": "VideoConversionPings",
-   "type": "object",
-   "properties": {
-    "pings": {
-     "type": "array",
-     "description": "Pings that the app shall fire for a video (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.",
-     "items": {
-      "$ref": "VideoConversionPing"
-     }
-    }
-   }
-  },
   "VideoFileDetails": {
    "id": "VideoFileDetails",
    "type": "object",
@@ -8684,7 +8663,7 @@
       "maxResults": {
        "type": "integer",
        "description": "The maxResults parameter specifies the maximum number of messages that should be returned in the result set.",
-       "default": "200",
+       "default": "500",
        "format": "uint32",
        "minimum": "200",
        "maximum": "2000",
diff --git a/youtube/v3/youtube-gen.go b/youtube/v3/youtube-gen.go
index 502552f..edc43ac 100644
--- a/youtube/v3/youtube-gen.go
+++ b/youtube/v3/youtube-gen.go
@@ -1513,24 +1513,6 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
-type ChannelId struct {
-	Value string `json:"value,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "Value") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-}
-
-func (s *ChannelId) MarshalJSON() ([]byte, error) {
-	type noMethod ChannelId
-	raw := noMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields)
-}
-
 type ChannelListResponse struct {
 	// Etag: Etag of this resource.
 	Etag string `json:"etag,omitempty"`
@@ -2141,7 +2123,7 @@
 // text.
 type CommentSnippet struct {
 	// AuthorChannelId: The id of the author's YouTube channel, if any.
-	AuthorChannelId *ChannelId `json:"authorChannelId,omitempty"`
+	AuthorChannelId interface{} `json:"authorChannelId,omitempty"`
 
 	// AuthorChannelUrl: Link to the author's YouTube channel, if any.
 	AuthorChannelUrl string `json:"authorChannelUrl,omitempty"`
@@ -2383,7 +2365,7 @@
 }
 
 // ContentRating: Ratings schemes. The country-specific ratings are
-// mostly for movies and shows. NEXT_ID: 66
+// mostly for movies and shows. NEXT_ID: 67
 type ContentRating struct {
 	// AcbRating: The video's Australian Classification Board (ACB) or
 	// Australian Communications and Media Authority (ACMA) rating. ACMA
@@ -2660,6 +2642,21 @@
 	//   "djctqViolence"
 	DjctqRatingReasons []string `json:"djctqRatingReasons,omitempty"`
 
+	// EcbmctRating: Rating system in Turkey - Evaluation and Classification
+	// Board of the Ministry of Culture and Tourism
+	//
+	// Possible values:
+	//   "ecbmct13a"
+	//   "ecbmct13plus"
+	//   "ecbmct15a"
+	//   "ecbmct15plus"
+	//   "ecbmct18plus"
+	//   "ecbmct7a"
+	//   "ecbmct7plus"
+	//   "ecbmctG"
+	//   "ecbmctUnrated"
+	EcbmctRating string `json:"ecbmctRating,omitempty"`
+
 	// EefilmRating: The video's rating in Estonia.
 	//
 	// Possible values:
@@ -2737,6 +2734,7 @@
 	// Publication Board.
 	//
 	// Possible values:
+	//   "fpb10"
 	//   "fpb1012Pg"
 	//   "fpb13"
 	//   "fpb16"
@@ -5871,6 +5869,8 @@
 	// pageToken parameter to retrieve the previous page in the result set.
 	PrevPageToken string `json:"prevPageToken,omitempty"`
 
+	RegionCode string `json:"regionCode,omitempty"`
+
 	TokenPagination *TokenPagination `json:"tokenPagination,omitempty"`
 
 	// VisitorId: The visitorId identifies the visitor.
@@ -6409,11 +6409,6 @@
 	// ratio.
 	ContentDetails *VideoContentDetails `json:"contentDetails,omitempty"`
 
-	// ConversionPings: The conversionPings object encapsulates information
-	// about url pings that need to be respected by the App in different
-	// video contexts.
-	ConversionPings *VideoConversionPings `json:"conversionPings,omitempty"`
-
 	// Etag: Etag of this resource.
 	Etag string `json:"etag,omitempty"`
 
@@ -6905,62 +6900,6 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields)
 }
 
-type VideoConversionPing struct {
-	// Context: Defines the context of the ping.
-	//
-	// Possible values:
-	//   "comment"
-	//   "dislike"
-	//   "like"
-	//   "share"
-	Context string `json:"context,omitempty"`
-
-	// ConversionUrl: The url (without the schema) that the app shall send
-	// the ping to. It's at caller's descretion to decide which schema to
-	// use (http vs https) Example of a returned url:
-	// //googleads.g.doubleclick.net/pagead/
-	// viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D
-	// like%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA%3Bytvid%3DUrIaJUvIQDg&labe=defau
-	// lt The caller must append biscotti authentication (ms param in case
-	// of mobile, for example) to this ping.
-	ConversionUrl string `json:"conversionUrl,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "Context") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-}
-
-func (s *VideoConversionPing) MarshalJSON() ([]byte, error) {
-	type noMethod VideoConversionPing
-	raw := noMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields)
-}
-
-type VideoConversionPings struct {
-	// Pings: Pings that the app shall fire for a video (authenticated by
-	// biscotti cookie). Each ping has a context, in which the app must fire
-	// the ping, and a url identifying the ping.
-	Pings []*VideoConversionPing `json:"pings,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "Pings") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-}
-
-func (s *VideoConversionPings) MarshalJSON() ([]byte, error) {
-	type noMethod VideoConversionPings
-	raw := noMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields)
-}
-
 // VideoFileDetails: Describes original video file properties, including
 // technical details about audio and video streams, but also metadata
 // information like content length, digitization time, or geotagging
@@ -14589,7 +14528,7 @@
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "default": "200",
+	//       "default": "500",
 	//       "description": "The maxResults parameter specifies the maximum number of messages that should be returned in the result set.",
 	//       "format": "uint32",
 	//       "location": "query",