public long CreateBudget(AdWordsUser user) {
      BudgetService budgetService =
          (BudgetService) user.GetService(AdWordsService.v201402.BudgetService);

      // Create the campaign budget.
      Budget budget = new Budget();
      budget.name = "Interplanetary Cruise Budget #" + DateTime.Now.ToString("yyyy-M-d H:m:s.ffffff");
      budget.period = BudgetBudgetPeriod.DAILY;
      budget.deliveryMethod = BudgetBudgetDeliveryMethod.STANDARD;
      budget.amount = new Money();
      budget.amount.microAmount = 500000;

      BudgetOperation budgetOperation = new BudgetOperation();
      budgetOperation.@operator = Operator.ADD;
      budgetOperation.operand = budget;

      BudgetReturnValue budgetRetval = budgetService.mutate(new BudgetOperation[] { budgetOperation });
      return budgetRetval.value[0].budgetId;
    }
    /// <summary>
    /// Runs the code example.
    /// </summary>
    /// <param name="user">The AdWords user.</param>
    public void Run(AdWordsUser user) {
      // Get the BudgetService.
      BudgetService budgetService =
          (BudgetService) user.GetService(AdWordsService.v201402.BudgetService);

      // Get the CampaignService.
      CampaignService campaignService =
          (CampaignService) user.GetService(AdWordsService.v201402.CampaignService);

      // Create the campaign budget.
      Budget budget = new Budget();
      budget.name = "Interplanetary Cruise Budget #" + ExampleUtilities.GetRandomString();
      budget.period = BudgetBudgetPeriod.DAILY;
      budget.deliveryMethod = BudgetBudgetDeliveryMethod.STANDARD;
      budget.amount = new Money();
      budget.amount.microAmount = 500000;

      BudgetOperation budgetOperation = new BudgetOperation();
      budgetOperation.@operator = Operator.ADD;
      budgetOperation.operand = budget;

      try {
        BudgetReturnValue budgetRetval = budgetService.mutate(new BudgetOperation[] {budgetOperation});
        budget = budgetRetval.value[0];
      } catch (Exception ex) {
        throw new System.ApplicationException("Failed to add shared budget.", ex);
      }

      List<CampaignOperation> operations = new List<CampaignOperation>();

      for (int i = 0; i < NUM_ITEMS; i++) {
        // Create the campaign.
        Campaign campaign = new Campaign();
        campaign.name = "Interplanetary Cruise #" + ExampleUtilities.GetRandomString();
        campaign.status = CampaignStatus.PAUSED;
        campaign.advertisingChannelType = AdvertisingChannelType.SEARCH;

        BiddingStrategyConfiguration biddingConfig = new BiddingStrategyConfiguration();
        biddingConfig.biddingStrategyType = BiddingStrategyType.MANUAL_CPC;
        campaign.biddingStrategyConfiguration = biddingConfig;

        campaign.budget = new Budget();
        campaign.budget.budgetId = budget.budgetId;

        // Set the campaign network options.
        campaign.networkSetting = new NetworkSetting();
        campaign.networkSetting.targetGoogleSearch = true;
        campaign.networkSetting.targetSearchNetwork = true;
        campaign.networkSetting.targetContentNetwork = false;
        campaign.networkSetting.targetPartnerSearchNetwork = false;

        // Set the campaign settings for Advanced location options.
        GeoTargetTypeSetting geoSetting = new GeoTargetTypeSetting();
        geoSetting.positiveGeoTargetType = GeoTargetTypeSettingPositiveGeoTargetType.DONT_CARE;
        geoSetting.negativeGeoTargetType = GeoTargetTypeSettingNegativeGeoTargetType.DONT_CARE;

        // Set the campaign settings for near-exact and near-phrase matches.
        KeywordMatchSetting keywordSetting = new KeywordMatchSetting();
        keywordSetting.optIn = false;

        campaign.settings = new Setting[] {geoSetting, keywordSetting};

        // Optional: Set the start date.
        campaign.startDate = DateTime.Now.AddDays(1).ToString("yyyyMMdd");

        // Optional: Set the end date.
        campaign.endDate = DateTime.Now.AddYears(1).ToString("yyyyMMdd");

        // Optional: Set the campaign ad serving optimization status.
        campaign.adServingOptimizationStatus = AdServingOptimizationStatus.ROTATE;

        // Optional: Set the frequency cap.
        FrequencyCap frequencyCap = new FrequencyCap();
        frequencyCap.impressions = 5;
        frequencyCap.level = Level.ADGROUP;
        frequencyCap.timeUnit = TimeUnit.DAY;
        campaign.frequencyCap = frequencyCap;

        // Create the operation.
        CampaignOperation operation = new CampaignOperation();
        operation.@operator = Operator.ADD;
        operation.operand = campaign;

        operations.Add(operation);
      }

      try {
        // Add the campaign.
        CampaignReturnValue retVal = campaignService.mutate(operations.ToArray());

        // Display the results.
        if (retVal != null && retVal.value != null && retVal.value.Length > 0) {
          foreach (Campaign newCampaign in retVal.value) {
            Console.WriteLine("Campaign with name = '{0}' and id = '{1}' was added.",
                newCampaign.name, newCampaign.id);
          }
        } else {
          Console.WriteLine("No campaigns were added.");
        }
      } catch (Exception ex) {
        throw new System.ApplicationException("Failed to add campaigns.", ex);
      }
    }
        /// <summary>
        /// Creates an explicit budget to be used only to create the Campaign.
        /// </summary>
        /// <param name="budgetService">The budget service.</param>
        /// <param name="name">The budget name.</param>
        /// <param name="amount">The budget amount.</param>
        /// <returns>The budget object.</returns>
        private Budget CreateSharedBudget(BudgetService budgetService, String name, long amount)
        {
            // Create a shared budget
              Budget budget = new Budget();
              budget.name = name;
              budget.period = BudgetBudgetPeriod.DAILY;
              budget.amount = new Money();
              budget.amount.microAmount = amount;
              budget.deliveryMethod = BudgetBudgetDeliveryMethod.STANDARD;
              budget.isExplicitlyShared = true;

              // Create operation.
              BudgetOperation operation = new BudgetOperation();
              operation.operand = budget;
              operation.@operator = Operator.ADD;

              // Make the mutate request.
              return budgetService.mutate(new BudgetOperation[] {operation}).value[0];
        }
    /// <summary>
    /// Runs the code example.
    /// </summary>
    /// <param name="user">The AdWords user.</param>
    public void Run(AdWordsUser user) {
      // Get the BudgetService.
      BudgetService budgetService =
          (BudgetService) user.GetService(AdWordsService.v201402.BudgetService);

      // Get the VideoCampaignService.
      VideoCampaignService videoCampaignService =
          (VideoCampaignService) user.GetService(AdWordsService.v201402.VideoCampaignService);

      // Create the campaign budget.
      Budget budget = new Budget();
      budget.name = "Interplanetary Cruise Budget #" + ExampleUtilities.GetRandomString();
      budget.period = BudgetBudgetPeriod.DAILY;
      budget.deliveryMethod = BudgetBudgetDeliveryMethod.STANDARD;
      budget.amount = new Money();
      budget.amount.microAmount = 500000;

      BudgetOperation budgetOperation = new BudgetOperation();
      budgetOperation.@operator = Operator.ADD;
      budgetOperation.operand = budget;

      try {
        BudgetReturnValue budgetRetval = budgetService.mutate(new BudgetOperation[] { budgetOperation });
        budget = budgetRetval.value[0];
      } catch (Exception ex) {
        throw new System.ApplicationException("Failed to add shared budget.", ex);
      }

      // Create video campaign.
      VideoCampaign videoCampaign = new VideoCampaign();
      videoCampaign.name = ("Interplanetary Cruise #" + ExampleUtilities.GetRandomString());
      videoCampaign.status = VideoCampaignStatus.PAUSED;
      videoCampaign.budgetId = budget.budgetId;

      // You can optionally provide these field(s). The dates will be
      // interpreted using the account's timezone.
      videoCampaign.startDate = DateTime.Now.AddDays(1).ToString("yyyyMMdd");

      try {
        // Create operations.
        VideoCampaignOperation operation = new VideoCampaignOperation();
        operation.operand = videoCampaign;
        operation.@operator = Operator.ADD;

        VideoCampaignOperation[] operations = new VideoCampaignOperation[] { operation };

        // Add video campaigns.
        VideoCampaignReturnValue retval = videoCampaignService.mutate(operations);

        // Display video campaigns.
        if (retval != null && retval.value != null && retval.value.Length > 0) {
          VideoCampaign newVideoCampaign = retval.value[0];
          Console.WriteLine("Campaign with name '{0}' and id = {1} was added.",
              newVideoCampaign.name, newVideoCampaign.id);
        } else {
          Console.WriteLine("No video campaigns were added.");
        }
      } catch (Exception ex) {
        throw new System.ApplicationException("Failed to add video campaign.", ex);
      }
    }