/// <summary> /// Run the code examples. /// </summary> /// <param name="user">The DFP user object running the code examples.</param> public override void Run(DfpUser user) { // Get the ProposalLineItemService. ProposalLineItemService proposalLineItemService = (ProposalLineItemService) user.GetService(DfpService.v201502.ProposalLineItemService); // Get the NetworkService. NetworkService networkService = (NetworkService) user.GetService(DfpService.v201502.NetworkService); long proposalId = long.Parse(_T("INSERT_PROPOSAL_ID_HERE")); long rateCardId = long.Parse(_T("INSERT_RATE_CARD_ID_HERE")); long productId = long.Parse(_T("INSERT_PRODUCT_ID_HERE")); // Get the root ad unit ID used to target the whole site. String rootAdUnitId = networkService.getCurrentNetwork().effectiveRootAdUnitId; // Create inventory targeting. InventoryTargeting inventoryTargeting = new InventoryTargeting(); // Create ad unit targeting for the root ad unit (i.e. the whole network). AdUnitTargeting adUnitTargeting = new AdUnitTargeting(); adUnitTargeting.adUnitId = rootAdUnitId; adUnitTargeting.includeDescendants = true; inventoryTargeting.targetedAdUnits = new AdUnitTargeting[] {adUnitTargeting}; // Create targeting. Targeting targeting = new Targeting(); targeting.inventoryTargeting = inventoryTargeting; // Create a proposal line item. ProposalLineItem proposalLineItem = new ProposalLineItem(); proposalLineItem.name = "Proposal line item #" + new Random().Next(int.MaxValue); proposalLineItem.proposalId = proposalId; proposalLineItem.rateCardId = rateCardId; proposalLineItem.productId = productId; proposalLineItem.targeting = targeting; // Set the length of the proposal line item to run. proposalLineItem.startDateTime = DateTimeUtilities.FromDateTime(System.DateTime.Now); proposalLineItem.endDateTime = DateTimeUtilities.FromDateTime(System.DateTime.Now.AddDays(30)); // Set delivery specifications for the proposal line item. proposalLineItem.deliveryRateType = DeliveryRateType.EVENLY; proposalLineItem.creativeRotationType = CreativeRotationType.OPTIMIZED; // Set billing specifications for the proposal line item. proposalLineItem.billingCap = BillingCap.CAPPED_CUMULATIVE; proposalLineItem.billingSource = BillingSource.THIRD_PARTY_VOLUME; // Set pricing for the proposal line item for 1000 impressions at a CPM of $2 // for a total value of $2. proposalLineItem.goal = new Goal() {unitType = UnitType.IMPRESSIONS, units = 1000L}; proposalLineItem.cost = new Money() {currencyCode = "USD", microAmount = 2000000L}; proposalLineItem.costPerUnit = new Money() {currencyCode = "USD", microAmount = 2000000L}; proposalLineItem.rateType = RateType.CPM; try { // Create the proposal line item on the server. ProposalLineItem[] proposalLineItems = proposalLineItemService.createProposalLineItems( new ProposalLineItem[] {proposalLineItem}); foreach (ProposalLineItem createdProposalLineItem in proposalLineItems) { Console.WriteLine("A proposal line item with ID \"{0}\" and name \"{1}\" was created.", createdProposalLineItem.id, createdProposalLineItem.name); } } catch (Exception e) { Console.WriteLine("Failed to create proposal line items. Exception says \"{0}\"", e.Message); } }
/// <summary> /// Run the code example. /// </summary> /// <param name="user">The DFP user object running the code example.</param> public override void Run(DfpUser user) { // Get the LineItemService. LineItemService lineItemService = (LineItemService) user.GetService(DfpService.v201502.LineItemService); // Set the order that all created line items will belong to and the // video ad unit ID to target. long orderId = long.Parse(_T("INSERT_ORDER_ID_HERE")); string targetedVideoAdUnitId = _T("INSERT_TARGETED_VIDEO_AD_UNIT_ID_HERE"); // Set the custom targeting value ID representing the metadata // on the content to target. This would typically be from a key representing // a "genre" and a value representing something like "comedy". The value must // be from a key in a content metadata key hierarchy. long contentCustomTargetingValueId = long.Parse(_T("INSERT_CONTENT_CUSTOM_TARGETING_VALUE_ID_HERE")); // Create content targeting. ContentMetadataKeyHierarchyTargeting contentMetadataTargeting = new ContentMetadataKeyHierarchyTargeting(); contentMetadataTargeting.customTargetingValueIds = new long[] {contentCustomTargetingValueId}; ContentTargeting contentTargeting = new ContentTargeting(); contentTargeting.targetedContentMetadata = new ContentMetadataKeyHierarchyTargeting[] {contentMetadataTargeting}; // Create inventory targeting. InventoryTargeting inventoryTargeting = new InventoryTargeting(); AdUnitTargeting adUnitTargeting = new AdUnitTargeting(); adUnitTargeting.adUnitId = targetedVideoAdUnitId; adUnitTargeting.includeDescendants = true; inventoryTargeting.targetedAdUnits = new AdUnitTargeting[] {adUnitTargeting}; // Create video position targeting. VideoPosition videoPosition = new VideoPosition(); videoPosition.positionType = VideoPositionType.PREROLL; VideoPositionTarget videoPositionTarget = new VideoPositionTarget(); videoPositionTarget.videoPosition = videoPosition; VideoPositionTargeting videoPositionTargeting = new VideoPositionTargeting(); videoPositionTargeting.targetedPositions = new VideoPositionTarget[] {videoPositionTarget}; // Create targeting. Targeting targeting = new Targeting(); targeting.contentTargeting = contentTargeting; targeting.inventoryTargeting = inventoryTargeting; targeting.videoPositionTargeting = videoPositionTargeting; // Create local line item object. LineItem lineItem = new LineItem(); lineItem.name = "Video line item - " + this.GetTimeStamp(); lineItem.orderId = orderId; lineItem.targeting = targeting; lineItem.lineItemType = LineItemType.SPONSORSHIP; lineItem.allowOverbook = true; // Set the environment type to video. lineItem.environmentType = EnvironmentType.VIDEO_PLAYER; // Set the creative rotation type to optimized. lineItem.creativeRotationType = CreativeRotationType.OPTIMIZED; // Create the master creative placeholder. CreativePlaceholder creativeMasterPlaceholder = new CreativePlaceholder(); Size size1 = new Size(); size1.width = 400; size1.height = 300; size1.isAspectRatio = false; creativeMasterPlaceholder.size = size1; // Create companion creative placeholders. CreativePlaceholder companionCreativePlaceholder1 = new CreativePlaceholder(); Size size2 = new Size(); size2.width = 300; size2.height = 250; size2.isAspectRatio = false; companionCreativePlaceholder1.size = size2; CreativePlaceholder companionCreativePlaceholder2 = new CreativePlaceholder(); Size size3 = new Size(); size3.width = 728; size3.height = 90; size3.isAspectRatio = false; companionCreativePlaceholder2.size = size3; // Set companion creative placeholders. creativeMasterPlaceholder.companions = new CreativePlaceholder[] { companionCreativePlaceholder1, companionCreativePlaceholder2}; // Set the size of creatives that can be associated with this line item. lineItem.creativePlaceholders = new CreativePlaceholder[] {creativeMasterPlaceholder}; // Set delivery of video companions to optional. lineItem.companionDeliveryOption = CompanionDeliveryOption.OPTIONAL; // Set the length of the line item to run. lineItem.startDateTimeType = StartDateTimeType.IMMEDIATELY; lineItem.endDateTime = DateTimeUtilities.FromString("20120901 00:00:00"); // Set the cost per day to $1. lineItem.costType = CostType.CPD; Money money = new Money(); money.currencyCode = "USD"; money.microAmount = 1000000L; lineItem.costPerUnit = money; // Set the percentage to be 100%. Goal goal = new Goal(); goal.goalType = GoalType.DAILY; goal.unitType = UnitType.IMPRESSIONS; goal.units = 100; lineItem.primaryGoal = goal; try { // Create the line item on the server. LineItem[] createdLineItems = lineItemService.createLineItems(new LineItem[] {lineItem}); foreach (LineItem createdLineItem in createdLineItems) { Console.WriteLine("A line item with ID \"{0}\", belonging to order ID \"{1}\", and " + "named \"{2}\" was created.", createdLineItem.id, createdLineItem.orderId, createdLineItem.name); } } catch (Exception ex) { Console.WriteLine("Failed to create line items. Exception says \"{0}\"", ex.Message); } }