# Ad Exchange Buyer API . products

## Instance Methods

Gets the requested product by id.

Gets the requested product.

### Method Details

`get(productId)`

    Gets the requested product by id.

    Args:
      productId: string, The id for the product to get the head revision for. (required)

    Returns:
      An object of the form:

        { # 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.
        "creatorContacts": [ # Optional contact information for the creator of this product. (buyer-readonly)
          {
            "email": "A String", # Email address of the contact.
            "name": "A String", # The name of the contact.
          },
        ],
        "publisherProvidedForecast": { # This message carries publisher provided forecasting information. # Publisher self-provided forecast information.
          "weeklyImpressions": "A String", # Publisher provided weekly impressions.
          "dimensions": [ # Publisher provided dimensions. E.g. geo, sizes etc...
            { # This message carries publisher provided breakdown. E.g. {dimension_type: 'COUNTRY', [{dimension_value: {id: 1, name: 'US'}}, {dimension_value: {id: 2, name: 'UK'}}]}
              "dimensionType": "A String",
              "dimensionValues": [
                { # Value of the dimension.
                  "id": 42, # Id of the dimension.
                  "name": "A String", # Name of the dimension mainly for debugging purposes.
                },
              ],
            },
          ],
          "weeklyUniques": "A String", # Publisher provided weekly uniques.
        },
        "flightEndTimeMs": "A String", # The proposed end time for the deal (ms since epoch) (buyer-readonly)
        "labels": [ # Optional List of labels for the product (optional, buyer-readonly).
          {
            "createTimeMs": "A String", # The creation time (in ms since epoch) for the label.
            "deprecatedMarketplaceDealParty": { # Information about the party that created the label.
              "buyer": { # The buyer/seller associated with the deal. One of buyer/seller is specified for a deal-party.
                "accountId": "A String", # Adx account id of the buyer.
              },
              "seller": { # The buyer/seller associated with the deal. One of buyer/seller is specified for a deal party.
                "subAccountId": "A String", # Optional sub-account id for the seller.
                "accountId": "A String", # The unique id for the seller. The seller fills in this field. The seller account id is then available to buyer in the product.
              },
            },
            "label": "A String", # The label to use.
            "accountId": "A String", # The accountId of the party that created the label.
          },
        ],
        "inventorySource": "A String", # What exchange will provide this inventory (readonly, except on create).
        "publisherProfileId": "A String", # Id of the publisher profile for a given seller. A (seller.account_id, publisher_profile_id) pair uniquely identifies a publisher profile. Buyers can call the PublisherProfiles::List endpoint to get a list of publisher profiles for a given seller.
        "revisionNumber": "A String", # The revision number of the product. (readonly)
        "seller": { # Information about the seller that created this product (readonly, except on create)
          "subAccountId": "A String", # Optional sub-account id for the seller.
          "accountId": "A String", # The unique id for the seller. The seller fills in this field. The seller account id is then available to buyer in the product.
        },
        "webPropertyCode": "A String", # The web property code for the seller. This field is meant to be copied over as is when creating deals.
        "state": "A String", # The state of the product. (buyer-readonly)
        "hasCreatorSignedOff": True or False, # 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.
        "productId": "A String", # The unique id for the product (readonly)
        "deliveryControl": { # The set of fields around delivery control that are interesting for a buyer to see but are non-negotiable. These are set by the publisher. This message is assigned an id of 100 since some day we would want to model this as a protobuf extension.
          "frequencyCaps": [
            {
              "numTimeUnits": 42,
              "timeUnitType": "A String",
              "maxImpressions": 42,
            },
          ],
          "creativeBlockingLevel": "A String",
          "deliveryRateType": "A String",
        },
        "terms": { # The negotiable terms of the deal (buyer-readonly)
          "brandingType": "A String", # Visibilty of the URL in bid requests.
          "estimatedGrossSpend": { # Non-binding estimate of the estimated gross spend for this deal Can be set by buyer or seller.
            "pricingType": "A String", # The pricing type for the deal/product.
            "currencyCode": "A String", # The currency code for the price.
            "amountMicros": 3.14, # The price value in micros.
          },
          "sellerTimeZone": "A String", # For deals with Cost Per Day billing, defines the timezone used to mark the boundaries of a day (buyer-readonly)
          "estimatedImpressionsPerDay": "A String", # Non-binding estimate of the impressions served per day Can be set by buyer or seller.
          "nonGuaranteedFixedPriceTerms": { # The terms for non-guaranteed fixed price deals.
            "fixedPrices": [ # Fixed price for the specified buyer.
              { # 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.
                "auctionTier": "A String", # Optional access type for this buyer.
                "buyer": { # The buyer who will pay this price. If unset, all buyers can pay this price (if the advertisers match, and there's no more specific rule matching the buyer).
                  "accountId": "A String", # Adx account id of the buyer.
                },
                "price": { # The specified price
                  "pricingType": "A String", # The pricing type for the deal/product.
                  "currencyCode": "A String", # The currency code for the price.
                  "amountMicros": 3.14, # The price value in micros.
                },
              },
            ],
          },
          "guaranteedFixedPriceTerms": { # The terms for guaranteed fixed price deals.
            "guaranteedImpressions": "A String", # Guaranteed impressions as a percentage. This is the percentage of guaranteed looks that the buyer is guaranteeing to buy.
            "fixedPrices": [ # Fixed price for the specified buyer.
              { # 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.
                "auctionTier": "A String", # Optional access type for this buyer.
                "buyer": { # The buyer who will pay this price. If unset, all buyers can pay this price (if the advertisers match, and there's no more specific rule matching the buyer).
                  "accountId": "A String", # Adx account id of the buyer.
                },
                "price": { # The specified price
                  "pricingType": "A String", # The pricing type for the deal/product.
                  "currencyCode": "A String", # The currency code for the price.
                  "amountMicros": 3.14, # The price value in micros.
                },
              },
            ],
            "guaranteedLooks": "A String", # Count of guaranteed looks. Required for deal, optional for product.
            "billingInfo": { # External billing info for this Deal. This field is relevant when external billing info such as price has a different currency code than DFP/AdX.
              "price": { # The original reservation price for the deal, if the currency code is different from the one used in negotiation.
                "pricingType": "A String", # The pricing type for the deal/product.
                "currencyCode": "A String", # The currency code for the price.
                "amountMicros": 3.14, # The price value in micros.
              },
              "originalContractedQuantity": "A String", # The original contracted quantity (# impressions) for this deal. To ensure delivery, sometimes publisher will book the deal with a impression buffer, however clients are billed using the original contracted quantity.
              "currencyConversionTimeMs": "A String", # The timestamp (in ms since epoch) when the original reservation price for the deal was first converted to DFP currency. This is used to convert the contracted price into advertiser's currency without discrepancy.
            },
          },
          "nonGuaranteedAuctionTerms": { # The terms for non-guaranteed auction deals.
            "autoOptimizePrivateAuction": True or False, # True if open auction buyers are allowed to compete with invited buyers in this private auction (buyer-readonly).
            "reservePricePerBuyers": [ # Reserve price for the specified buyer.
              { # 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.
                "auctionTier": "A String", # Optional access type for this buyer.
                "buyer": { # The buyer who will pay this price. If unset, all buyers can pay this price (if the advertisers match, and there's no more specific rule matching the buyer).
                  "accountId": "A String", # Adx account id of the buyer.
                },
                "price": { # The specified price
                  "pricingType": "A String", # The pricing type for the deal/product.
                  "currencyCode": "A String", # The currency code for the price.
                  "amountMicros": 3.14, # The price value in micros.
                },
              },
            ],
          },
          "description": "A String", # Description for the proposed terms of the deal.
        },
        "privateAuctionId": "A String", # Optional private auction id if this offer is a private auction offer.
        "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)
          {
            "inclusions": [ # The list of value to include as part of the targeting. Each value is OR'd together.
              {
                "longValue": "A String", # The long value to exclude/include.
                "dayPartTargetingValue": { # The daypart targeting to include / exclude. Filled in when the key is GOOG_DAYPART_TARGETING.
                  "dayParts": [
                    {
                      "dayOfWeek": "A String",
                      "endHour": 42,
                      "startMinute": 42,
                      "endMinute": 42,
                      "startHour": 42,
                    },
                  ],
                  "timeZoneType": "A String",
                },
                "creativeSizeValue": { # The creative size value to exclude/include.
                  "creativeSizeType": "A String", # The Creative size type.
                  "companionSizes": [ # For video size type, the list of companion sizes.
                    {
                      "width": 42, # The width of the creative.
                      "height": 42, # The height of the creative.
                    },
                  ],
                  "size": { # For regular or video creative size type, specifies the size of the creative.
                    "width": 42, # The width of the creative.
                    "height": 42, # The height of the creative.
                  },
                },
                "stringValue": "A String", # The string value to exclude/include.
              },
            ],
            "exclusions": [ # The list of values to exclude from targeting. Each value is AND'd together.
              {
                "longValue": "A String", # The long value to exclude/include.
                "dayPartTargetingValue": { # The daypart targeting to include / exclude. Filled in when the key is GOOG_DAYPART_TARGETING.
                  "dayParts": [
                    {
                      "dayOfWeek": "A String",
                      "endHour": 42,
                      "startMinute": 42,
                      "endMinute": 42,
                      "startHour": 42,
                    },
                  ],
                  "timeZoneType": "A String",
                },
                "creativeSizeValue": { # The creative size value to exclude/include.
                  "creativeSizeType": "A String", # The Creative size type.
                  "companionSizes": [ # For video size type, the list of companion sizes.
                    {
                      "width": 42, # The width of the creative.
                      "height": 42, # The height of the creative.
                    },
                  ],
                  "size": { # For regular or video creative size type, specifies the size of the creative.
                    "width": 42, # The width of the creative.
                    "height": 42, # The height of the creative.
                  },
                },
                "stringValue": "A String", # The string value to exclude/include.
              },
            ],
            "key": "A String", # The key representing the shared targeting criterion.
          },
        ],
        "lastUpdateTimeMs": "A String", # Time of last update in ms. since epoch (readonly)
        "legacyOfferId": "A String", # Optional legacy offer id if this offer is a preferred deal offer.
        "kind": "adexchangebuyer#product", # Identifies what kind of resource this is. Value: the fixed string "adexchangebuyer#product".
        "name": "A String", # The name for this product as set by the seller. (buyer-readonly)
        "syndicationProduct": "A String", # The syndication product associated with the deal. (readonly, except on create)
        "flightStartTimeMs": "A String", # Inventory availability dates. (times are in ms since epoch) The granularity is generally in the order of seconds. (buyer-readonly)
        "creationTimeMs": "A String", # Creation time in ms. since epoch (readonly)
      }

`search(pqlQuery=None)`

    Gets the requested product.

    Args:
      pqlQuery: string, The pql query used to query for products.

    Returns:
      An object of the form:

        {
        "products": [ # The returned list of products.
          { # 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.
            "creatorContacts": [ # Optional contact information for the creator of this product. (buyer-readonly)
              {
                "email": "A String", # Email address of the contact.
                "name": "A String", # The name of the contact.
              },
            ],
            "publisherProvidedForecast": { # This message carries publisher provided forecasting information. # Publisher self-provided forecast information.
              "weeklyImpressions": "A String", # Publisher provided weekly impressions.
              "dimensions": [ # Publisher provided dimensions. E.g. geo, sizes etc...
                { # This message carries publisher provided breakdown. E.g. {dimension_type: 'COUNTRY', [{dimension_value: {id: 1, name: 'US'}}, {dimension_value: {id: 2, name: 'UK'}}]}
                  "dimensionType": "A String",
                  "dimensionValues": [
                    { # Value of the dimension.
                      "id": 42, # Id of the dimension.
                      "name": "A String", # Name of the dimension mainly for debugging purposes.
                    },
                  ],
                },
              ],
              "weeklyUniques": "A String", # Publisher provided weekly uniques.
            },
            "flightEndTimeMs": "A String", # The proposed end time for the deal (ms since epoch) (buyer-readonly)
            "labels": [ # Optional List of labels for the product (optional, buyer-readonly).
              {
                "createTimeMs": "A String", # The creation time (in ms since epoch) for the label.
                "deprecatedMarketplaceDealParty": { # Information about the party that created the label.
                  "buyer": { # The buyer/seller associated with the deal. One of buyer/seller is specified for a deal-party.
                    "accountId": "A String", # Adx account id of the buyer.
                  },
                  "seller": { # The buyer/seller associated with the deal. One of buyer/seller is specified for a deal party.
                    "subAccountId": "A String", # Optional sub-account id for the seller.
                    "accountId": "A String", # The unique id for the seller. The seller fills in this field. The seller account id is then available to buyer in the product.
                  },
                },
                "label": "A String", # The label to use.
                "accountId": "A String", # The accountId of the party that created the label.
              },
            ],
            "inventorySource": "A String", # What exchange will provide this inventory (readonly, except on create).
            "publisherProfileId": "A String", # Id of the publisher profile for a given seller. A (seller.account_id, publisher_profile_id) pair uniquely identifies a publisher profile. Buyers can call the PublisherProfiles::List endpoint to get a list of publisher profiles for a given seller.
            "revisionNumber": "A String", # The revision number of the product. (readonly)
            "seller": { # Information about the seller that created this product (readonly, except on create)
              "subAccountId": "A String", # Optional sub-account id for the seller.
              "accountId": "A String", # The unique id for the seller. The seller fills in this field. The seller account id is then available to buyer in the product.
            },
            "webPropertyCode": "A String", # The web property code for the seller. This field is meant to be copied over as is when creating deals.
            "state": "A String", # The state of the product. (buyer-readonly)
            "hasCreatorSignedOff": True or False, # 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.
            "productId": "A String", # The unique id for the product (readonly)
            "deliveryControl": { # The set of fields around delivery control that are interesting for a buyer to see but are non-negotiable. These are set by the publisher. This message is assigned an id of 100 since some day we would want to model this as a protobuf extension.
              "frequencyCaps": [
                {
                  "numTimeUnits": 42,
                  "timeUnitType": "A String",
                  "maxImpressions": 42,
                },
              ],
              "creativeBlockingLevel": "A String",
              "deliveryRateType": "A String",
            },
            "terms": { # The negotiable terms of the deal (buyer-readonly)
              "brandingType": "A String", # Visibilty of the URL in bid requests.
              "estimatedGrossSpend": { # Non-binding estimate of the estimated gross spend for this deal Can be set by buyer or seller.
                "pricingType": "A String", # The pricing type for the deal/product.
                "currencyCode": "A String", # The currency code for the price.
                "amountMicros": 3.14, # The price value in micros.
              },
              "sellerTimeZone": "A String", # For deals with Cost Per Day billing, defines the timezone used to mark the boundaries of a day (buyer-readonly)
              "estimatedImpressionsPerDay": "A String", # Non-binding estimate of the impressions served per day Can be set by buyer or seller.
              "nonGuaranteedFixedPriceTerms": { # The terms for non-guaranteed fixed price deals.
                "fixedPrices": [ # Fixed price for the specified buyer.
                  { # 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.
                    "auctionTier": "A String", # Optional access type for this buyer.
                    "buyer": { # The buyer who will pay this price. If unset, all buyers can pay this price (if the advertisers match, and there's no more specific rule matching the buyer).
                      "accountId": "A String", # Adx account id of the buyer.
                    },
                    "price": { # The specified price
                      "pricingType": "A String", # The pricing type for the deal/product.
                      "currencyCode": "A String", # The currency code for the price.
                      "amountMicros": 3.14, # The price value in micros.
                    },
                  },
                ],
              },
              "guaranteedFixedPriceTerms": { # The terms for guaranteed fixed price deals.
                "guaranteedImpressions": "A String", # Guaranteed impressions as a percentage. This is the percentage of guaranteed looks that the buyer is guaranteeing to buy.
                "fixedPrices": [ # Fixed price for the specified buyer.
                  { # 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.
                    "auctionTier": "A String", # Optional access type for this buyer.
                    "buyer": { # The buyer who will pay this price. If unset, all buyers can pay this price (if the advertisers match, and there's no more specific rule matching the buyer).
                      "accountId": "A String", # Adx account id of the buyer.
                    },
                    "price": { # The specified price
                      "pricingType": "A String", # The pricing type for the deal/product.
                      "currencyCode": "A String", # The currency code for the price.
                      "amountMicros": 3.14, # The price value in micros.
                    },
                  },
                ],
                "guaranteedLooks": "A String", # Count of guaranteed looks. Required for deal, optional for product.
                "billingInfo": { # External billing info for this Deal. This field is relevant when external billing info such as price has a different currency code than DFP/AdX.
                  "price": { # The original reservation price for the deal, if the currency code is different from the one used in negotiation.
                    "pricingType": "A String", # The pricing type for the deal/product.
                    "currencyCode": "A String", # The currency code for the price.
                    "amountMicros": 3.14, # The price value in micros.
                  },
                  "originalContractedQuantity": "A String", # The original contracted quantity (# impressions) for this deal. To ensure delivery, sometimes publisher will book the deal with a impression buffer, however clients are billed using the original contracted quantity.
                  "currencyConversionTimeMs": "A String", # The timestamp (in ms since epoch) when the original reservation price for the deal was first converted to DFP currency. This is used to convert the contracted price into advertiser's currency without discrepancy.
                },
              },
              "nonGuaranteedAuctionTerms": { # The terms for non-guaranteed auction deals.
                "autoOptimizePrivateAuction": True or False, # True if open auction buyers are allowed to compete with invited buyers in this private auction (buyer-readonly).
                "reservePricePerBuyers": [ # Reserve price for the specified buyer.
                  { # 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.
                    "auctionTier": "A String", # Optional access type for this buyer.
                    "buyer": { # The buyer who will pay this price. If unset, all buyers can pay this price (if the advertisers match, and there's no more specific rule matching the buyer).
                      "accountId": "A String", # Adx account id of the buyer.
                    },
                    "price": { # The specified price
                      "pricingType": "A String", # The pricing type for the deal/product.
                      "currencyCode": "A String", # The currency code for the price.
                      "amountMicros": 3.14, # The price value in micros.
                    },
                  },
                ],
              },
              "description": "A String", # Description for the proposed terms of the deal.
            },
            "privateAuctionId": "A String", # Optional private auction id if this offer is a private auction offer.
            "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)
              {
                "inclusions": [ # The list of value to include as part of the targeting. Each value is OR'd together.
                  {
                    "longValue": "A String", # The long value to exclude/include.
                    "dayPartTargetingValue": { # The daypart targeting to include / exclude. Filled in when the key is GOOG_DAYPART_TARGETING.
                      "dayParts": [
                        {
                          "dayOfWeek": "A String",
                          "endHour": 42,
                          "startMinute": 42,
                          "endMinute": 42,
                          "startHour": 42,
                        },
                      ],
                      "timeZoneType": "A String",
                    },
                    "creativeSizeValue": { # The creative size value to exclude/include.
                      "creativeSizeType": "A String", # The Creative size type.
                      "companionSizes": [ # For video size type, the list of companion sizes.
                        {
                          "width": 42, # The width of the creative.
                          "height": 42, # The height of the creative.
                        },
                      ],
                      "size": { # For regular or video creative size type, specifies the size of the creative.
                        "width": 42, # The width of the creative.
                        "height": 42, # The height of the creative.
                      },
                    },
                    "stringValue": "A String", # The string value to exclude/include.
                  },
                ],
                "exclusions": [ # The list of values to exclude from targeting. Each value is AND'd together.
                  {
                    "longValue": "A String", # The long value to exclude/include.
                    "dayPartTargetingValue": { # The daypart targeting to include / exclude. Filled in when the key is GOOG_DAYPART_TARGETING.
                      "dayParts": [
                        {
                          "dayOfWeek": "A String",
                          "endHour": 42,
                          "startMinute": 42,
                          "endMinute": 42,
                          "startHour": 42,
                        },
                      ],
                      "timeZoneType": "A String",
                    },
                    "creativeSizeValue": { # The creative size value to exclude/include.
                      "creativeSizeType": "A String", # The Creative size type.
                      "companionSizes": [ # For video size type, the list of companion sizes.
                        {
                          "width": 42, # The width of the creative.
                          "height": 42, # The height of the creative.
                        },
                      ],
                      "size": { # For regular or video creative size type, specifies the size of the creative.
                        "width": 42, # The width of the creative.
                        "height": 42, # The height of the creative.
                      },
                    },
                    "stringValue": "A String", # The string value to exclude/include.
                  },
                ],
                "key": "A String", # The key representing the shared targeting criterion.
              },
            ],
            "lastUpdateTimeMs": "A String", # Time of last update in ms. since epoch (readonly)
            "legacyOfferId": "A String", # Optional legacy offer id if this offer is a preferred deal offer.
            "kind": "adexchangebuyer#product", # Identifies what kind of resource this is. Value: the fixed string "adexchangebuyer#product".
            "name": "A String", # The name for this product as set by the seller. (buyer-readonly)
            "syndicationProduct": "A String", # The syndication product associated with the deal. (readonly, except on create)
            "flightStartTimeMs": "A String", # Inventory availability dates. (times are in ms since epoch) The granularity is generally in the order of seconds. (buyer-readonly)
            "creationTimeMs": "A String", # Creation time in ms. since epoch (readonly)
          },
        ],
      }