<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://adcentercommunity.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">adCenter API</title><subtitle type="html" /><id>http://adcentercommunity.com/blogs/api/atom.aspx</id><link rel="alternate" type="text/html" href="http://adcentercommunity.com/blogs/api/default.aspx" /><link rel="self" type="application/atom+xml" href="http://adcentercommunity.com/blogs/api/atom.aspx" /><generator uri="http://communityserver.org" version="3.1.20917.1142">Community Server</generator><updated>2008-03-28T14:54:00Z</updated><entry><title>ReportAggregation.Summary Value Update: TimePeriod Column Removed</title><link rel="alternate" type="text/html" href="http://adcentercommunity.com/blogs/api/archive/2008/05/09/reportaggregation-summary-value-update-timeperiod-column-removed.aspx" /><id>http://adcentercommunity.com/blogs/api/archive/2008/05/09/reportaggregation-summary-value-update-timeperiod-column-removed.aspx</id><published>2008-05-09T19:25:00Z</published><updated>2008-05-09T19:25:00Z</updated><content type="html">&lt;p&gt;An update to the adCenter API was recently released to allow the &lt;strong&gt;ReportAggregation.Summary&lt;/strong&gt; value to pull the aggregate reports without the &lt;strong&gt;TimePeriod&lt;/strong&gt; column required. 
&lt;p&gt;We removed this extra column in the &lt;strong&gt;ReportAggregation.Summary&lt;/strong&gt; value to help streamline your report request and simplify the data we need to create your report. 
&lt;p&gt;To use this updated value, you will need to remove the &lt;strong&gt;TimePeriod&lt;/strong&gt; column from the &lt;strong&gt;ReportAggregation.Summary&lt;/strong&gt; value. If you submit the &lt;strong&gt;ReportAggregation.Summary&lt;/strong&gt; value with the &lt;strong&gt;TimePeriod&lt;/strong&gt; column still in place, you may receive a 2034 error message: “The specified report request contains a &lt;strong&gt;TimePeriod&lt;/strong&gt; column which is incompatible with the requested Summary report aggregation. Please submit a report request with valid report columns for a summary report.” 
&lt;p&gt;It is important to note that the &lt;strong&gt;TimePeriod&lt;/strong&gt; is still required for all other reports. This only applies to the &lt;strong&gt;ReportAggregation.Summary&lt;/strong&gt; value. 
&lt;p&gt;Please let us know if you have questions. 
&lt;p&gt;-Chris&lt;/p&gt;&lt;img src="http://adcentercommunity.com/aggbug.aspx?PostID=1135" width="1" height="1"&gt;</content><author><name>Chris Norred - MSFT</name><uri>http://adcentercommunity.com/members/Chris-Norred-_2D00_-MSFT.aspx</uri></author><category term="Documentation" scheme="http://adcentercommunity.com/blogs/api/archive/tags/Documentation/default.aspx" /><category term="Top Issues" scheme="http://adcentercommunity.com/blogs/api/archive/tags/Top+Issues/default.aspx" /><category term="Tips" scheme="http://adcentercommunity.com/blogs/api/archive/tags/Tips/default.aspx" /></entry><entry><title>Handling Large Arrays in API V5 (.NET)</title><link rel="alternate" type="text/html" href="http://adcentercommunity.com/blogs/api/archive/2008/04/29/handling-large-arrays-in-api-v5-net.aspx" /><id>http://adcentercommunity.com/blogs/api/archive/2008/04/29/handling-large-arrays-in-api-v5-net.aspx</id><published>2008-04-29T19:41:00Z</published><updated>2008-04-29T19:41:00Z</updated><content type="html">&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;TEXT-INDENT:0.25in;"&gt;&lt;font face="Calibri" size="3"&gt;When transferring large amounts of data (large arrays) in Version 5 of the API when using .NET, some changes to the client configuration may be necessary. The following elements may need to be adjusted in app.config, for example:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;"&gt;&lt;span style="FONT-FAMILY:symbol;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;&lt;strong&gt;MaxReceivedMessageSize&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;"&gt;&lt;span style="FONT-FAMILY:symbol;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;&lt;strong&gt;MaxBufferSize&lt;/strong&gt; (should be same size as &lt;strong&gt;MaxReceivedMessageSize&lt;/strong&gt;)&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="MARGIN:0in 0in 10pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;"&gt;&lt;span style="FONT-FAMILY:symbol;mso-fareast-font-family:symbol;mso-bidi-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;&lt;strong&gt;MaxItemsInObjectGraph&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;For &lt;strong&gt;MaxItemsInObjectGraph&lt;/strong&gt;, a custom behavior is needed, as shown in the following configuration file snippet:&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&lt;font face="Calibri" size="3"&gt;
&lt;div&gt;&lt;pre style="PADDING-RIGHT:0px;PADDING-LEFT:0px;FONT-SIZE:8pt;PADDING-BOTTOM:0px;MARGIN:0em;OVERFLOW:visible;WIDTH:100%;COLOR:black;BORDER-TOP-STYLE:none;LINE-HEIGHT:12pt;PADDING-TOP:0px;FONT-FAMILY:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;BORDER-RIGHT-STYLE:none;BORDER-LEFT-STYLE:none;BACKGROUND-COLOR:#f4f4f4;BORDER-BOTTOM-STYLE:none;"&gt;&amp;lt;bindings&amp;gt;          
    &amp;lt;basicHttpBinding&amp;gt;
        &amp;lt;binding name=&lt;span style="COLOR:#006080;"&gt;&amp;quot;BasicHttpBinding_ICampaignManagementService&amp;quot;&lt;/span&gt; closeTimeout=&lt;span style="COLOR:#006080;"&gt;&amp;quot;00:01:00&amp;quot;&lt;/span&gt;
            openTimeout=&lt;span style="COLOR:#006080;"&gt;&amp;quot;00:01:00&amp;quot;&lt;/span&gt; receiveTimeout=&lt;span style="COLOR:#006080;"&gt;&amp;quot;00:10:00&amp;quot;&lt;/span&gt; sendTimeout=&lt;span style="COLOR:#006080;"&gt;&amp;quot;00:01:00&amp;quot;&lt;/span&gt;
            allowCookies=&lt;span style="COLOR:#006080;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; bypassProxyOnLocal=&lt;span style="COLOR:#006080;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; hostNameComparisonMode=&lt;span style="COLOR:#006080;"&gt;&amp;quot;StrongWildcard&amp;quot;&lt;/span&gt;
            maxBufferSize=&lt;span style="COLOR:#006080;"&gt;&amp;quot;6553600&amp;quot;&lt;/span&gt; maxBufferPoolSize=&lt;span style="COLOR:#006080;"&gt;&amp;quot;524288&amp;quot;&lt;/span&gt; maxReceivedMessageSize=&lt;span style="COLOR:#006080;"&gt;&amp;quot;6553600&amp;quot;&lt;/span&gt;
            messageEncoding=&lt;span style="COLOR:#006080;"&gt;&amp;quot;Text&amp;quot;&lt;/span&gt; textEncoding=&lt;span style="COLOR:#006080;"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt; transferMode=&lt;span style="COLOR:#006080;"&gt;&amp;quot;Buffered&amp;quot;&lt;/span&gt;
            useDefaultWebProxy=&lt;span style="COLOR:#006080;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&amp;gt;
            &amp;lt;readerQuotas maxDepth=&lt;span style="COLOR:#006080;"&gt;&amp;quot;32&amp;quot;&lt;/span&gt; maxStringContentLength=&lt;span style="COLOR:#006080;"&gt;&amp;quot;8192&amp;quot;&lt;/span&gt; maxArrayLength=&lt;span style="COLOR:#006080;"&gt;&amp;quot;16384&amp;quot;&lt;/span&gt;
                maxBytesPerRead=&lt;span style="COLOR:#006080;"&gt;&amp;quot;4096&amp;quot;&lt;/span&gt; maxNameTableCharCount=&lt;span style="COLOR:#006080;"&gt;&amp;quot;16384&amp;quot;&lt;/span&gt; /&amp;gt;
            &amp;lt;security mode=&lt;span style="COLOR:#006080;"&gt;&amp;quot;Transport&amp;quot;&lt;/span&gt;&amp;gt;
                &amp;lt;transport clientCredentialType=&lt;span style="COLOR:#006080;"&gt;&amp;quot;None&amp;quot;&lt;/span&gt; proxyCredentialType=&lt;span style="COLOR:#006080;"&gt;&amp;quot;None&amp;quot;&lt;/span&gt;
                    realm=&lt;span style="COLOR:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt; /&amp;gt;
                &amp;lt;message clientCredentialType=&lt;span style="COLOR:#006080;"&gt;&amp;quot;UserName&amp;quot;&lt;/span&gt; algorithmSuite=&lt;span style="COLOR:#006080;"&gt;&amp;quot;Default&amp;quot;&lt;/span&gt; /&amp;gt;
            &amp;lt;/security&amp;gt;
        &amp;lt;/binding&amp;gt;
       
    &amp;lt;/basicHttpBinding&amp;gt;
&amp;lt;/bindings&amp;gt;

&amp;lt;client&amp;gt;
    &amp;lt;endpoint address=&lt;span style="COLOR:#006080;"&gt;&amp;quot;https://adcenterapi.microsoft.com/Api/Advertiser/V5/CampaignManagement/CampaignManagementService.svc&amp;quot;&lt;/span&gt;
        binding=&lt;span style="COLOR:#006080;"&gt;&amp;quot;basicHttpBinding&amp;quot;&lt;/span&gt; bindingConfiguration=&lt;span style="COLOR:#006080;"&gt;&amp;quot;BasicHttpBinding_ICampaignManagementService&amp;quot;&lt;/span&gt;
        contract=&lt;span style="COLOR:#006080;"&gt;&amp;quot;ICampaignManagementService&amp;quot;&lt;/span&gt; name=&lt;span style="COLOR:#006080;"&gt;&amp;quot;BasicHttpBinding_ICampaignManagementService&amp;quot;&lt;/span&gt;
    behaviorConfiguration=&lt;span style="COLOR:#006080;"&gt;&amp;quot;LargeQuotaBehavior&amp;quot;&lt;/span&gt;/&amp;gt;           
&amp;lt;/client&amp;gt;

&amp;lt;behaviors&amp;gt;
  &amp;lt;endpointBehaviors&amp;gt;
    &amp;lt;behavior name=&lt;span style="COLOR:#006080;"&gt;&amp;quot;LargeQuotaBehavior&amp;quot;&lt;/span&gt;&amp;gt;
      &amp;lt;dataContractSerializer maxItemsInObjectGraph=&lt;span style="COLOR:#006080;"&gt;&amp;quot;2147483647&amp;quot;&lt;/span&gt;/&amp;gt;
    &amp;lt;/behavior&amp;gt;
  &amp;lt;/endpointBehaviors&amp;gt;
&amp;lt;/behaviors&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;For further information, see the following article on &lt;a class="" title="MSDN" href="http://msdn2.microsoft.com/en-us/library/ms732038.aspx" target="_blank"&gt;MSDN&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Jeff Dillon, API Support&lt;/font&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&lt;/p&gt;&lt;/font&gt;&lt;img src="http://adcentercommunity.com/aggbug.aspx?PostID=948" width="1" height="1"&gt;</content><author><name>Jeff Dillon - MSFT</name><uri>http://adcentercommunity.com/members/Jeff-Dillon-_2D00_-MSFT.aspx</uri></author></entry><entry><title>V5 Error "Bid is less than floor price" when Updating Keyword Bids with Zeroes</title><link rel="alternate" type="text/html" href="http://adcentercommunity.com/blogs/api/archive/2008/04/29/v5-error-quot-bid-is-less-than-floor-price-quot-when-updating-keyword-bids-with-zeroes.aspx" /><id>http://adcentercommunity.com/blogs/api/archive/2008/04/29/v5-error-quot-bid-is-less-than-floor-price-quot-when-updating-keyword-bids-with-zeroes.aspx</id><published>2008-04-29T17:01:00Z</published><updated>2008-04-29T17:01:00Z</updated><content type="html">&lt;p&gt;&lt;span style="FONT-SIZE:11pt;COLOR:black;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;When using V5 of the API, it is now possible to send nulls for object properties that should remain intact. However, when sending nulls or zeroes for bids, the system incorrectly sees the bid as less than floor price and you&amp;nbsp;may see an error returned in the response message. We are hoping to resolve this issue this week. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:11pt;COLOR:black;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;It is ok to send nulls for other object properties in V5, as described in our &lt;/span&gt;&lt;span style="FONT-SIZE:11pt;COLOR:black;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb671460.aspx"&gt;MSDN API documentation&lt;/a&gt;&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:11pt;COLOR:black;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;V5 offers the ability to update campaigns, ads, ad groups, and keywords without requiring values for the properties that are not being changed. For example, you can specify new bid amounts for a keyword, but leave the Param1, Param2, Param3, Status, Text, and NegativeKeywords properties set to &lt;b&gt;null&lt;/b&gt; when calling the UpdateKeywords method. Only the bid amounts will be changed. The keyword properties that are set to &lt;b&gt;null&lt;/b&gt; will remain unchanged&lt;/span&gt;&lt;/p&gt;&lt;img src="http://adcentercommunity.com/aggbug.aspx?PostID=943" width="1" height="1"&gt;</content><author><name>Jeff Dillon - MSFT</name><uri>http://adcentercommunity.com/members/Jeff-Dillon-_2D00_-MSFT.aspx</uri></author></entry><entry><title>API Upgrade for Editorial Validation Errors</title><link rel="alternate" type="text/html" href="http://adcentercommunity.com/blogs/api/archive/2008/04/28/api-upgrade-for-editorial-validation-errors.aspx" /><id>http://adcentercommunity.com/blogs/api/archive/2008/04/28/api-upgrade-for-editorial-validation-errors.aspx</id><published>2008-04-28T18:33:00Z</published><updated>2008-04-28T18:33:00Z</updated><content type="html">&lt;p&gt;We’ve recently updated the adCenter API Production and Sandbox+ environments for Version 5 to improve transparency for editorial decisions. 
&lt;p&gt;The &lt;a href="http://msdn2.microsoft.com/en-us/library/cc197195.aspx"&gt;EditorialApiFaultDetail.EditorialErrors&lt;/a&gt; property now contains any editorial validation errors. Previously, this array was always empty. 
&lt;p&gt;This will help you understand editorial decisions, and take action to appropriately update these ads and keywords to meet editorial guidelines. 
&lt;p&gt;The adCenter user interface was also upgraded this week with new and improved features each designed to give you easier, more efficient ways to use adCenter. In our upcoming monthly webcast, Shamit Patel, the API program manager, will discuss a comparison of adCenter user interface features and API features. 
&lt;p&gt;&lt;a href="http://msmedia.microsoft.com/Key=12927.NN.C.C.GSpSln"&gt;API Version 5 Live Meeting&lt;/a&gt; is schedule May 20th, at 1 p.m. Pacific time. Call-in information to join the conference call will be provided in the Live Meeting. 
&lt;p&gt;We will also be preparing articles for the blog to document the comparison of the adCenter UI and API features. 
&lt;p&gt;&lt;b&gt;&lt;/b&gt;
&lt;p&gt;&lt;b&gt;Reminder: &lt;/b&gt;Version 4 of the API will be supported for at least 100 days from today. Please continue to actively migrate your applications from Version 4 to Version 5 of the API to avoid any disruption of your service. 
&lt;p&gt;&lt;b&gt;adCenter UI Upgrade highlights &lt;/b&gt;&lt;br /&gt;For more about the UI upgrades,see the advertiser blog post &lt;a href="http://www.adcentercommunity.com/blogs/advertiser/archive/2008/04/28/adcenter-spring-upgrade-campaign-management-updates.aspx"&gt;adCenter spring upgrade: campaign management updates&lt;/a&gt; 
&lt;p&gt;Thanks 
&lt;p&gt;adCenter Team&lt;/p&gt;&lt;img src="http://adcentercommunity.com/aggbug.aspx?PostID=927" width="1" height="1"&gt;</content><author><name>Chris Norred - MSFT</name><uri>http://adcentercommunity.com/members/Chris-Norred-_2D00_-MSFT.aspx</uri></author></entry><entry><title>Slides and Notes from adCenter API V5 Presentation</title><link rel="alternate" type="text/html" href="http://adcentercommunity.com/blogs/api/archive/2008/04/18/slides-and-notes-from-adcenter-api-v5-presentation.aspx" /><link rel="enclosure" type="application/vnd.openxmlformats-officedocument.pres" length="1288920" href="http://adcentercommunity.com/blogs/api/attachment/797.ashx" /><id>http://adcentercommunity.com/blogs/api/archive/2008/04/18/slides-and-notes-from-adcenter-api-v5-presentation.aspx</id><published>2008-04-18T21:25:00Z</published><updated>2008-04-18T21:25:00Z</updated><content type="html">&lt;p align="left"&gt;Those of you who attended the Live Meeting conference on Tuesday had a chance to talk with Shamit Patel, the program manager leading API development for adCenter. We appreciate your taking the time to&lt;a class="" title="adCenter API Migration Presentation" href="http://adcentercommunity.com/blogs/api/attachment/797.ashx" target="_blank"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="184" alt="APIslidehomepage" src="http://adcentercommunity.com/blogs/api/WindowsLiveWriter/SlidesandNotesfromadCenterAPIV5Presentat_CACC/APIslidehomepage_thumb.jpg" width="244" align="right" border="0" /&gt;&lt;/a&gt; learn more about the new version and to share your questions and requests. I&amp;#39;ve attached the PowerPoint slides and notes from the presentation. I will upload the recording of Shamit&amp;#39;s session in the next couple days.&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;Thank you,&lt;/p&gt;
&lt;p align="left"&gt;-Chris&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://adcentercommunity.com/blogs/api/WindowsLiveWriter/SlidesandNotesfromadCenterAPIV5Presentat_CACC/APIslidehomepage_2.jpg"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://adcentercommunity.com/aggbug.aspx?PostID=797" width="1" height="1"&gt;</content><author><name>Chris Norred - MSFT</name><uri>http://adcentercommunity.com/members/Chris-Norred-_2D00_-MSFT.aspx</uri></author><category term="Documentation" scheme="http://adcentercommunity.com/blogs/api/archive/tags/Documentation/default.aspx" /><category term="Version 5 Upgrade" scheme="http://adcentercommunity.com/blogs/api/archive/tags/Version+5+Upgrade/default.aspx" /><category term="Top Issues" scheme="http://adcentercommunity.com/blogs/api/archive/tags/Top+Issues/default.aspx" /></entry><entry><title>Using svcutil.exe with adCenter API V5</title><link rel="alternate" type="text/html" href="http://adcentercommunity.com/blogs/api/archive/2008/04/18/using-svcutil-exe-with-v5.aspx" /><id>http://adcentercommunity.com/blogs/api/archive/2008/04/18/using-svcutil-exe-with-v5.aspx</id><published>2008-04-18T16:38:00Z</published><updated>2008-04-18T16:38:00Z</updated><content type="html">&lt;p&gt;A question that has come up a few times in the community as you are working to migrate to V5 involves the use of &lt;strong&gt;svcutil.exe&lt;/strong&gt; 
&lt;p&gt;For example, a developer asked: with adCenter API v4 and with other search engine advertising APIs, we used the wsdl.exe tool and the /sharetypes switch in the Windows framework SDKs to produce a C# code file. This file included all the services for a single search engine API in one namespace. We were able to add it to a master library that all our programs access. 
&lt;p&gt;We have been trying to figure out how to make this happen with the v5 files and the SvcUtil.exe tool as you suggest in your documentation, any suggestions? 
&lt;p&gt;Our senior development lead, Gopal Madhavan, and development engineer Sean Yao, tested the use of &lt;strong&gt;svcutil.exe &lt;/strong&gt;to verify and see if there were any suggestions. 
&lt;p&gt;Here is the reply from Sean: 
&lt;p&gt;&amp;quot;They can use &amp;quot;svcutil.exe /mc &amp;lt;url&amp;gt;*&amp;quot; to generate API proxies with shared types in one file. 
&lt;p&gt;For example: 
&lt;p&gt;&lt;em&gt;svcutil.exe /mc &lt;/em&gt;&lt;a href="https://adcenterapi.microsoft.com/api/advertiser/v5/reporting/reportingservice.svc?wsdl"&gt;&lt;em&gt;https://adcenterapi.microsoft.com/api/advertiser/v5/reporting/reportingservice.svc?wsdl&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;&lt;a href="https://adcenterapi.microsoft.com/Api/Advertiser/V5/CampaignManagement/CampaignManagementService.svc?wsdl"&gt;&lt;em&gt;https://adcenterapi.microsoft.com/Api/Advertiser/V5/CampaignManagement/CampaignManagementService.svc?wsdl&lt;/em&gt;&lt;/a&gt;&lt;em&gt; /out:CampaignAndReporting.cs&lt;/em&gt; 
&lt;p&gt;The system will show some warnings, but it works fine, according to Sean. 
&lt;p&gt;Also, check documentation at &lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Rockwell&amp;#39;,&amp;#39;serif&amp;#39;;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa983138.aspx"&gt;&lt;font color="#0000ff"&gt;Getting Started with the Microsoft adCenter API&lt;/font&gt;&lt;/a&gt; for more general information about using svcutil. &lt;/span&gt;
&lt;p&gt;Thank you for the questions and please let us know if you have more questions on this issue. 
&lt;p&gt;-Chris&lt;/p&gt;&lt;img src="http://adcentercommunity.com/aggbug.aspx?PostID=789" width="1" height="1"&gt;</content><author><name>Chris Norred - MSFT</name><uri>http://adcentercommunity.com/members/Chris-Norred-_2D00_-MSFT.aspx</uri></author></entry><entry><title>adCenter API V5 Update - Setting Keyword Bid Amounts to Zero</title><link rel="alternate" type="text/html" href="http://adcentercommunity.com/blogs/api/archive/2008/04/18/adcenter-api-v5-update.aspx" /><id>http://adcentercommunity.com/blogs/api/archive/2008/04/18/adcenter-api-v5-update.aspx</id><published>2008-04-18T16:36:00Z</published><updated>2008-04-18T16:36:00Z</updated><content type="html">&lt;p&gt;An update was made recently to version 5 of the adCenter API to allow keyword bid amounts to be zero. Prior to this update, if you specified a keyword bid amount of zero, the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb671664.aspx" target="_blank"&gt;UpdateKeywords&lt;/a&gt; service operation would return error 1515, which means that one or more of the keyword bid amounts are less than the floor price. This prevented you from being able to remove a match type bid that had previously been established.&lt;/p&gt;
&lt;p&gt;Now that the update has been published, you can set one or more of the keyword bid amounts to zero and the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb671664.aspx" target="_blank"&gt;UpdateKeywords&lt;/a&gt; service operation will succeed (assuming that there are no other errors).&lt;/p&gt;
&lt;p&gt;Thank You,&lt;br /&gt;&lt;br /&gt;Strohm Armstrong&lt;br /&gt;Programming Writer&lt;br /&gt;adCenter API&lt;/p&gt;&lt;img src="http://adcentercommunity.com/aggbug.aspx?PostID=788" width="1" height="1"&gt;</content><author><name>Strohm Armstrong - MSFT</name><uri>http://adcentercommunity.com/members/Strohm-Armstrong-_2D00_-MSFT.aspx</uri></author></entry><entry><title>Announcement: Sandbox Maintenance on Monday</title><link rel="alternate" type="text/html" href="http://adcentercommunity.com/blogs/api/archive/2008/04/17/announcement-sandbox-maintenance-on-monday.aspx" /><id>http://adcentercommunity.com/blogs/api/archive/2008/04/17/announcement-sandbox-maintenance-on-monday.aspx</id><published>2008-04-17T21:49:45Z</published><updated>2008-04-17T21:49:45Z</updated><content type="html">&lt;p&gt;The API Sandbox+ environment will undergo a scheduled maintenance on Monday, April 21. During this maintenance, the adCenter Sandbox user interface will be unavailable intermittently for up to 24 hours beginning at 11:00 A.M. Pacific Time (GMT-8). Calls to the API methods will execute as expected. &lt;br /&gt; &lt;p&gt;If you have questions about the maintenance, please let us know. &lt;p&gt;-Chris&lt;/p&gt;&lt;img src="http://adcentercommunity.com/aggbug.aspx?PostID=769" width="1" height="1"&gt;</content><author><name>Chris Norred - MSFT</name><uri>http://adcentercommunity.com/members/Chris-Norred-_2D00_-MSFT.aspx</uri></author></entry><entry><title>API Live Meeting Tomorrow -</title><link rel="alternate" type="text/html" href="http://adcentercommunity.com/blogs/api/archive/2008/04/14/api-live-meeting-tomorrow.aspx" /><id>http://adcentercommunity.com/blogs/api/archive/2008/04/14/api-live-meeting-tomorrow.aspx</id><published>2008-04-14T17:32:56Z</published><updated>2008-04-14T17:32:56Z</updated><content type="html">&lt;p&gt;To assist you with your migration process, we invite you to participate in our third API Version 5 Live Meeting on &lt;b&gt;Tuesday, April 15&lt;/b&gt;, from 1 P.M. to 2:30 P.M. Pacific Time. &lt;p&gt;&lt;br /&gt;The April 15 session is the third in a series of adCenter API Live Meeting sessions. This session will feature a live demonstration using new code samples for V5 and a discussion of the most frequently asked questions about differences in V5.&lt;/p&gt; &lt;p&gt;The Live Meetings are a great opportunity to talk with members of the development team. Sessions are held on the third Tuesday of every month. They are recorded and saved for you to listen in later. If you have questions that you&amp;#39;d like the team to address, post them in the comments below or in this forum thread &lt;a title="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3173789&amp;amp;SiteID=1" href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3173789&amp;amp;SiteID=1"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3173789&amp;amp;SiteID=1&lt;/a&gt; &lt;p&gt;If you have not used Live Meeting before, we recommend visiting &lt;a href="http://msmedia.microsoft.com/Key=12927.NN.C.C.GSpSln"&gt;API Version 5 Live Meeting&lt;/a&gt; a few minutes before the session begins to complete any required installation steps. You can listen on line and submit questions via Live Meeting. Also, call-in information to join the conference call will be provided in the Live Meeting. &lt;p&gt;Sessions scheduled: &lt;ol&gt; &lt;li&gt; &lt;p&gt;Apr 15th 1pm to 2:30pm PST&lt;/p&gt; &lt;li&gt; &lt;p&gt;May 20th 1pm to 2:30pm PST&lt;/p&gt; &lt;li&gt; &lt;p&gt;Jun 17th 1pm to 2:30pm PST&lt;/p&gt; &lt;li&gt; &lt;p&gt;Jul 15th 1pm to 2:30pm PST&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Sincerely,  &lt;p&gt;adCenter API Team&lt;/p&gt;&lt;img src="http://adcentercommunity.com/aggbug.aspx?PostID=704" width="1" height="1"&gt;</content><author><name>Chris Norred - MSFT</name><uri>http://adcentercommunity.com/members/Chris-Norred-_2D00_-MSFT.aspx</uri></author></entry><entry><title>How to Check the Status of an Ad Group in PHP (V5)</title><link rel="alternate" type="text/html" href="http://adcentercommunity.com/blogs/api/archive/2008/03/28/check-the-status-of-an-ad-group.aspx" /><id>http://adcentercommunity.com/blogs/api/archive/2008/03/28/check-the-status-of-an-ad-group.aspx</id><published>2008-03-28T19:12:00Z</published><updated>2008-03-28T19:12:00Z</updated><content type="html">&lt;p&gt;We will release PHP samples in V5 to MSDN by May 2008. In the interim, we&amp;#39;ll use this site to release PHP samples in V5.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;After submitting an ad group for review, you can check the status of the ad group by calling the GetKeywordAdAssociationsByAdIds, GetKeywordAdAssociationsByKeywordIds, or GetKeywordAdAssociationsByStatus service operation. The following PHP examples show how to use these service operations to check the status of an ad group. These examples assume that you have already submitted an ad group for review. These examples also assume that you have already determined which ad group IDs, ad IDs, and keyword IDs will be checked; you must substitute your own values for the ad group IDs, ad IDs, and keyword IDs used in the following code.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;br /&gt;Walter Poupore&lt;br /&gt;Lead Programming Writer&lt;br /&gt;Microsoft adCenter API&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Check the Status of an Ad Group by Using GetKeywordAdAssociationsByAdIds&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;?php&lt;/p&gt;
&lt;p&gt;// This program requires the following PHP extensions:&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; php_soap.dll&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; php_openssl.dll&lt;/p&gt;
&lt;p&gt;// To ensure that a cached WSDL is not being used,&lt;br /&gt;// disable WSDL caching.&lt;br /&gt;ini_set(&amp;quot;soap.wsdl_cache_enabled&amp;quot;, &amp;quot;0&amp;quot;);&lt;/p&gt;
&lt;p&gt;try&lt;br /&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $adGroupId = 50787199;&amp;nbsp; //Application-specific value.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use either the sandbox or production URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This example is for the sandbox URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $URI =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;https://sandboxapi.adcenter.microsoft.com/api/advertiser/v5/&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The following commented-out line contains the production URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //$URI = &amp;quot;https://adcenterapi.microsoft.com/api/advertiser/v5/&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The adCenter API namespace.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns = &amp;quot;https://adcenter.microsoft.com/api/advertiser/v5&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The proxy for the Campaign Management Web service.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $campaignProxy = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $URI . &amp;quot;CampaignManagement/CampaignManagementService.svc?wsdl&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The name of the service operation that will be called.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $action = &amp;quot;GetKeywordAdAssociationsByAdIds&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The user name, password, and developer token are &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // expected to be passed in as command-line&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // arguments.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[0] is the PHP file name.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[1] is the user name.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[2] is the password.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[3] is the developer token.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($argc !=4)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&amp;quot;Usage:\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;php file.php username password devtoken\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $username = $argv[1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $password = $argv[2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerTokenValue = $argv[3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationTokenValue=&amp;quot;&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Assign the credentials to the classes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // that are used by the SOAP headers.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials=new UserCredentials();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials-&amp;gt;Username=$username;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials-&amp;gt;Password=$password;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken=new DeveloperToken();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken-&amp;gt;Value=$developerTokenValue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken=new ApplicationToken();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken-&amp;gt;Value=$applicationTokenValue;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP headers.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerApplicationToken = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;ApplicationToken&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerDeveloperToken = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;DeveloperToken&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerUserCredentials = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;UserCredentials&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP input header array.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $inputHeaders = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerApplicationToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerDeveloperToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerUserCredentials&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $adIds = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 164481,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 258488,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP client.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $opts = array(&amp;#39;trace&amp;#39; =&amp;gt; true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $client = new SOAPClient($campaignProxy, $opts);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Specify the parameters for the SOAP call.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $params = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;AdGroupId&amp;#39; =&amp;gt; $adGroupId,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;AdIds&amp;#39; =&amp;gt; $adIds&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Execute the SOAP call.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $result = $client-&amp;gt;__soapCall&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $action,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array( $action.&amp;#39;Request&amp;#39; =&amp;gt; $params ),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $inputHeaders,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $outputHeaders&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;$action succeeded with Tracking ID &amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . $outputHeaders[&amp;#39;ApiCallTrackingData&amp;#39;]-&amp;gt;TrackingId&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . &amp;quot;.\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isset($result-&amp;gt;KeywordAdAssociations-&amp;gt;ArrayOfKeywordAdAssociation))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associationsArray = $result-&amp;gt;KeywordAdAssociations-&amp;gt;ArrayOfKeywordAdAssociation;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Ensure that ArrayOfKeywordAdAssociations is an array.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( 2 &amp;gt; sizeof($associationsArray))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Only a single object, not an array, was returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Convert the object into an array.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $temp = array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $temp[] = $associationsArray;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associationsArray = array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associationsArray = $temp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Process each array of keyword ad associations.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for ($i = 0; $i &amp;lt; sizeof($associationsArray); $i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associations = $associationsArray[$i]-&amp;gt;KeywordAdAssociation;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( 2 &amp;gt; sizeof($associations))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Only a single object, not an array, was returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Convert the object into an array.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $temp = array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $temp[] = $associations;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associations = array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associations = $temp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Print each keyword ad association.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($associations as $association)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!isset($association-&amp;gt;KeywordId))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // There was no association returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Print out the keyword ID, ad ID, and status.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;Keyword ID $association-&amp;gt;KeywordId &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;associated with ad ID $association-&amp;gt;AdId &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;has status $association-&amp;gt;Status.\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;catch (Exception $e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;$action failed.\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Display the fault code and the fault string.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $e-&amp;gt;faultcode . &amp;quot; &amp;quot; . $e-&amp;gt;faultstring . &amp;quot;.\n&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;TrackingID: &amp;quot; . &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;TrackingId . &amp;quot;.\n&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Process operation errors.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isset(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors-&amp;gt;OperationError&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (is_array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors-&amp;gt;OperationError&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // An array of operation errors has been returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $obj =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors-&amp;gt;OperationError;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // A single operation error has been returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $obj = $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($obj as $operationError)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;Operation error &amp;quot; . &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $operationError-&amp;gt;Code . &amp;quot; encountered. &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $operationError-&amp;gt;Message . &amp;quot;\n&amp;quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Process batch errors.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isset(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;BatchErrors-&amp;gt;BatchError&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (is_array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;BatchErrors-&amp;gt;BatchError&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // An array of batch errors has been returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $obj = $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;BatchErrors-&amp;gt;BatchError;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // A single batch error has been returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $obj = $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;BatchErrors;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($obj as $batchError)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;Campaign index &amp;quot; . $batchError-&amp;gt;Index . &amp;quot;\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;Batch error &amp;quot; . &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $batchError-&amp;gt;Code . &amp;quot; encountered. &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $batchError-&amp;gt;Message . &amp;quot;\n&amp;quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;// Definitions for classes that are used by the SOAP headers.&lt;br /&gt;class ApplicationToken&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Value;&lt;br /&gt;}&lt;br /&gt;class DeveloperToken&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Value;&lt;br /&gt;}&lt;br /&gt;class UserCredentials&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Password;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Username;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;?&amp;gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Check the Status of an Ad Group by Using GetKeywordAdAssociationsByKeywordIds&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;?php&lt;/p&gt;
&lt;p&gt;// This program requires the following PHP extensions:&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; php_soap.dll&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; php_openssl.dll&lt;/p&gt;
&lt;p&gt;// To ensure that a cached WSDL is not being used,&lt;br /&gt;// disable WSDL caching.&lt;br /&gt;ini_set(&amp;quot;soap.wsdl_cache_enabled&amp;quot;, &amp;quot;0&amp;quot;);&lt;/p&gt;
&lt;p&gt;try&lt;br /&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $adGroupId = 50787199;&amp;nbsp; //Application-specific value.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use either the sandbox or production URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This example is for the sandbox URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $URI =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;https://sandboxapi.adcenter.microsoft.com/api/advertiser/v5/&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The following commented-out line contains the production URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //$URI = &amp;quot;https://adcenterapi.microsoft.com/api/advertiser/v5/&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The adCenter API namespace.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns = &amp;quot;https://adcenter.microsoft.com/api/advertiser/v5&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The proxy for the Campaign Management Web service.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $campaignProxy = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $URI . &amp;quot;CampaignManagement/CampaignManagementService.svc?wsdl&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The name of the service operation that will be called.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $action = &amp;quot;GetKeywordAdAssociationsByKeywordIds&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The user name, password, and developer token are &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // expected to be passed in as command-line&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // arguments.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[0] is the PHP file name.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[1] is the user name.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[2] is the password.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[3] is the developer token.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($argc !=4)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&amp;quot;Usage:\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;php file.php username password devtoken\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $username = $argv[1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $password = $argv[2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerTokenValue = $argv[3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationTokenValue=&amp;quot;&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Assign the credentials to the classes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // that are used by the SOAP headers.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials=new UserCredentials();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials-&amp;gt;Username=$username;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials-&amp;gt;Password=$password;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken=new DeveloperToken();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken-&amp;gt;Value=$developerTokenValue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken=new ApplicationToken();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken-&amp;gt;Value=$applicationTokenValue;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP headers.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerApplicationToken = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;ApplicationToken&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerDeveloperToken = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;DeveloperToken&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerUserCredentials = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;UserCredentials&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP input header array.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $inputHeaders = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerApplicationToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerDeveloperToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerUserCredentials&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $keywordIds = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 58528531,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 58527999,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 58528000,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 58528001&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP client.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $opts = array(&amp;#39;trace&amp;#39; =&amp;gt; true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $client = new SOAPClient($campaignProxy, $opts);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Specify the parameters for the SOAP call.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $params = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;AdGroupId&amp;#39; =&amp;gt; $adGroupId,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;KeywordIds&amp;#39; =&amp;gt; $keywordIds&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Execute the SOAP call.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $result = $client-&amp;gt;__soapCall&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $action,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array( $action.&amp;#39;Request&amp;#39; =&amp;gt; $params ),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $inputHeaders,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $outputHeaders&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;$action succeeded with Tracking ID &amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . $outputHeaders[&amp;#39;ApiCallTrackingData&amp;#39;]-&amp;gt;TrackingId&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . &amp;quot;.\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isset($result-&amp;gt;KeywordAdAssociations-&amp;gt;ArrayOfKeywordAdAssociation))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associationsArray = $result-&amp;gt;KeywordAdAssociations-&amp;gt;ArrayOfKeywordAdAssociation;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Ensure that ArrayOfKeywordAdAssociations is an array.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( 2 &amp;gt; sizeof($associationsArray))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Only a single object, not an array, was returned. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Convert the object into an array.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $temp = array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $temp[] = $associationsArray;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associationsArray = array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associationsArray = $temp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Process each array of keyword ad associations.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for ($i = 0; $i &amp;lt; sizeof($associationsArray); $i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associations = $associationsArray[$i]-&amp;gt;KeywordAdAssociation;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( 2 &amp;gt; sizeof($associations))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Only a single object, not an array, was returned. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Convert the object into an array.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $temp = array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $temp[] = $associations;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associations = array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associations = $temp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Print each keyword ad association.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($associations as $association)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!isset($association-&amp;gt;KeywordId))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // There was no association returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Print out the keyword ID, ad ID, and status.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;Keyword ID $association-&amp;gt;KeywordId &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;associated with ad ID $association-&amp;gt;AdId &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;has status $association-&amp;gt;Status.\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;catch (Exception $e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;$action failed.\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Display the fault code and the fault string.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $e-&amp;gt;faultcode . &amp;quot; &amp;quot; . $e-&amp;gt;faultstring . &amp;quot;.\n&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;TrackingID: &amp;quot; . &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;TrackingId . &amp;quot;.\n&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Process operation errors.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isset(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors-&amp;gt;OperationError&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (is_array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors-&amp;gt;OperationError&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // An array of operation errors has been returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $obj =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors-&amp;gt;OperationError;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // A single operation error has been returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $obj = $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($obj as $operationError)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;Operation error &amp;quot; . &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $operationError-&amp;gt;Code . &amp;quot; encountered. &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $operationError-&amp;gt;Message . &amp;quot;\n&amp;quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Process batch errors.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isset(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;BatchErrors-&amp;gt;BatchError&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (is_array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;BatchErrors-&amp;gt;BatchError&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // An array of batch errors has been returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $obj = $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;BatchErrors-&amp;gt;BatchError;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // A single batch error has been returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $obj = $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;BatchErrors;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($obj as $batchError)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;Campaign index &amp;quot; . $batchError-&amp;gt;Index . &amp;quot;\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;Batch error &amp;quot; . &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $batchError-&amp;gt;Code . &amp;quot; encountered. &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $batchError-&amp;gt;Message . &amp;quot;\n&amp;quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;// Definitions for classes that are used by the SOAP headers.&lt;br /&gt;class ApplicationToken&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Value;&lt;br /&gt;}&lt;br /&gt;class DeveloperToken&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Value;&lt;br /&gt;}&lt;br /&gt;class UserCredentials&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Password;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Username;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;?&amp;gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;&amp;nbsp;Check the Status of an Ad Group by Using GetKeywordAdAssociationsByStatus&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;?php&lt;/p&gt;
&lt;p&gt;// This program requires the following PHP extensions:&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; php_soap.dll&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; php_openssl.dll&lt;/p&gt;
&lt;p&gt;// To ensure that a cached WSDL is not being used,&lt;br /&gt;// disable WSDL caching.&lt;br /&gt;ini_set(&amp;quot;soap.wsdl_cache_enabled&amp;quot;, &amp;quot;0&amp;quot;);&lt;/p&gt;
&lt;p&gt;try&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $adGroupId = 50787199;&amp;nbsp; //Application-specific value.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use either the sandbox or production URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This example is for the sandbox URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $URI =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;https://sandboxapi.adcenter.microsoft.com/api/advertiser/v5/&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The following commented-out line contains the production URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //$URI = &amp;quot;https://adcenterapi.microsoft.com/api/advertiser/v5/&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The adCenter API namespace.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns = &amp;quot;https://adcenter.microsoft.com/api/advertiser/v5&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The proxy for the Campaign Management Web service.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $campaignProxy = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $URI . &amp;quot;CampaignManagement/CampaignManagementService.svc?wsdl&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The name of the service operation that will be called.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $action = &amp;quot;GetKeywordAdAssociationsByStatus&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The user name, password, and developer token are &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // expected to be passed in as command-line&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // arguments.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[0] is the PHP file name.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[1] is the user name.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[2] is the password.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[3] is the developer token.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($argc !=4)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&amp;quot;Usage:\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;php file.php username password devtoken\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $username = $argv[1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $password = $argv[2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerTokenValue = $argv[3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationTokenValue=&amp;quot;&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Assign the credentials to the classes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // that are used by the SOAP headers.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials=new UserCredentials();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials-&amp;gt;Username=$username;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials-&amp;gt;Password=$password;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken=new DeveloperToken();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken-&amp;gt;Value=$developerTokenValue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken=new ApplicationToken();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken-&amp;gt;Value=$applicationTokenValue;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP headers.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerApplicationToken = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;ApplicationToken&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerDeveloperToken = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;DeveloperToken&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerUserCredentials = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;UserCredentials&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP input header array.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $inputHeaders = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerApplicationToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerDeveloperToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerUserCredentials&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP client.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $opts = array(&amp;#39;trace&amp;#39; =&amp;gt; true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $client = new SOAPClient($campaignProxy, $opts); &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This sample checks for the Active status.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Update your code as needed to check for&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // different statuses.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $status = &amp;quot;Active&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Show all status changes since Jan. 1, 2008, at 12:00 P.M. (noon).&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $modifiedAfter = &amp;#39;2008-01-01T12:00:00.000Z&amp;#39;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Specify the parameters for the SOAP call.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $params = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;AdGroupId&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $adGroupId,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;ModifiedAfter&amp;#39; =&amp;gt; $modifiedAfter,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;Status&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $status&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Execute the SOAP call.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $result = $client-&amp;gt;__soapCall&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $action,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array( $action.&amp;#39;Request&amp;#39; =&amp;gt; $params ),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $inputHeaders,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $outputHeaders&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;$action succeeded with Tracking ID &amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . $outputHeaders[&amp;#39;ApiCallTrackingData&amp;#39;]-&amp;gt;TrackingId&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . &amp;quot;.\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isset($result-&amp;gt;KeywordAdAssociations))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associations = $result-&amp;gt;KeywordAdAssociations-&amp;gt;KeywordAdAssociation;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Ensure that $associations is an array.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( 2 &amp;gt; sizeof($associations))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Only a single object, not an array, was returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Convert the object into an array.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $temp = array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $temp[] = $associations;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associations = array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $associations = $temp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Print each keyword ad association.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($associations as $association)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!isset($association-&amp;gt;KeywordId))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // There was no association returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Print out the keyword ID, ad ID, and status.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;Keyword ID $association-&amp;gt;KeywordId &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;associated with ad ID $association-&amp;gt;AdId &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;has status $association-&amp;gt;Status.\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;catch (Exception $e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;$action failed.\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Display the fault code and the fault string.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $e-&amp;gt;faultcode . &amp;quot; &amp;quot; . $e-&amp;gt;faultstring . &amp;quot;.\n&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;TrackingID: &amp;quot; . &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;TrackingId . &amp;quot;.\n&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Process operation errors.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isset(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors-&amp;gt;OperationError&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (is_array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors-&amp;gt;OperationError&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // An array of operation errors has been returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $obj =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors-&amp;gt;OperationError;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // A single operation error has been returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $obj = $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($obj as $operationError)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;Operation error &amp;quot; . &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $operationError-&amp;gt;Code . &amp;quot; encountered. &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $operationError-&amp;gt;Message . &amp;quot;\n&amp;quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;// Definitions for classes that are used by the SOAP headers.&lt;br /&gt;class ApplicationToken&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Value;&lt;br /&gt;}&lt;br /&gt;class DeveloperToken&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Value;&lt;br /&gt;}&lt;br /&gt;class UserCredentials&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Password;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Username;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;?&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://adcentercommunity.com/aggbug.aspx?PostID=434" width="1" height="1"&gt;</content><author><name>Walter Poupore - MSFT</name><uri>http://adcentercommunity.com/members/Walter-Poupore-_2D00_-MSFT.aspx</uri></author></entry><entry><title>How to Submit an Ad Group for Approval in PHP (V5)</title><link rel="alternate" type="text/html" href="http://adcentercommunity.com/blogs/api/archive/2008/03/28/how-to-submit-an-ad-group-for-approval-in-php-v5.aspx" /><id>http://adcentercommunity.com/blogs/api/archive/2008/03/28/how-to-submit-an-ad-group-for-approval-in-php-v5.aspx</id><published>2008-03-28T19:09:00Z</published><updated>2008-03-28T19:09:00Z</updated><content type="html">&lt;p&gt;We will release PHP samples in V5 to MSDN by May 2008. In the interim, we&amp;#39;ll use this site to release PHP samples in V5.&lt;/p&gt;
&lt;p&gt;Ad groups are submitted for approval by calling the SubmitAdGroupForApproval service operation. The approval process includes several automated checks for relevance and adherence to Editorial Guidelines. Generally, an ad is approved or disapproved immediately after being submitted. In some cases, however, the process might take up to five business days.&lt;/p&gt;
&lt;p&gt;The following PHP example shows how to submit an ad group for approval by using &lt;code&gt;SubmitAdGroupForApproval&lt;/code&gt;. This example assumes that you have already created your ads and keywords. This example also assumes that you have already determined which ad group ID will be submitted for approval; you must substitute your ad group ID for the &lt;code&gt;$adGroupId&lt;/code&gt; variable that is assigned &lt;code&gt;50786905&lt;/code&gt; in the following code.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;br /&gt;Walter Poupore&lt;br /&gt;Lead Programming Writer&lt;br /&gt;Microsoft adCenter API&lt;/p&gt;
&lt;p&gt;&amp;lt;?php&lt;/p&gt;
&lt;p&gt;// This program requires the following PHP extensions:&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; php_soap.dll&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; php_openssl.dll&lt;/p&gt;
&lt;p&gt;// To ensure that a cached WSDL is not being used,&lt;br /&gt;// disable WSDL caching.&lt;br /&gt;ini_set(&amp;quot;soap.wsdl_cache_enabled&amp;quot;, &amp;quot;0&amp;quot;);&lt;/p&gt;
&lt;p&gt;try&lt;br /&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $adGroupId = 50786905;&amp;nbsp; //Application-specific value.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use either the sandbox or production URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This example is for the sandbox URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $URI =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;https://sandboxapi.adcenter.microsoft.com/api/advertiser/v5/&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The following commented-out line contains the production URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //$URI = &amp;quot;https://adcenterapi.microsoft.com/api/advertiser/v5/&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The Microsoft adCenter API namespace.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns = &amp;quot;https://adcenter.microsoft.com/api/advertiser/v5&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The proxy for the Campaign Management Web service.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $campaignProxy = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $URI . &amp;quot;CampaignManagement/CampaignManagementService.svc?wsdl&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The name of the service operation that will be called.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $action = &amp;quot;SubmitAdGroupForApproval&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The user name, password, and developer token are &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // expected to be passed in as command-line&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // arguments.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[0] is the PHP file name.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[1] is the user name.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[2] is the password.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[3] is the developer token.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($argc !=4)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&amp;quot;Usage:\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;php file.php username password devtoken\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $username = $argv[1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $password = $argv[2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerTokenValue = $argv[3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationTokenValue=&amp;quot;&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Assign the credentials to the classes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // that are used by the SOAP headers.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials=new UserCredentials();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials-&amp;gt;Username=$username;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials-&amp;gt;Password=$password;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken=new DeveloperToken();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken-&amp;gt;Value=$developerTokenValue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken=new ApplicationToken();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken-&amp;gt;Value=$applicationTokenValue;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP headers.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerApplicationToken = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;ApplicationToken&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerDeveloperToken = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;DeveloperToken&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerUserCredentials = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;UserCredentials&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP input header array.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $inputHeaders = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerApplicationToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerDeveloperToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerUserCredentials&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP client.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $opts = array(&amp;#39;trace&amp;#39; =&amp;gt; true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $client = new SOAPClient($campaignProxy, $opts); &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Specify the parameters for the SOAP call.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $params = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;AdGroupId&amp;#39; =&amp;gt; $adGroupId&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Execute the SOAP call.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $result = $client-&amp;gt;__soapCall&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $action,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array( $action.&amp;#39;Request&amp;#39; =&amp;gt; $params ),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $inputHeaders,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $outputHeaders&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;$action succeeded with Tracking ID &amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . $outputHeaders[&amp;#39;ApiCallTrackingData&amp;#39;]-&amp;gt;TrackingId&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . &amp;quot;.\n&amp;quot;;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;catch (Exception $e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;$action failed.\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Display the fault code and the fault string.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $e-&amp;gt;faultcode . &amp;quot; &amp;quot; . $e-&amp;gt;faultstring . &amp;quot;.\n&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;TrackingID: &amp;quot; . &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;TrackingId . &amp;quot;.\n&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Process operation errors.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isset(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors-&amp;gt;OperationError&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (is_array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors-&amp;gt;OperationError&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // An array of operation errors has been returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $obj =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors-&amp;gt;OperationError;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // A single operation error has been returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $obj = $e-&amp;gt;detail-&amp;gt;ApiFaultDetail-&amp;gt;OperationErrors;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($obj as $operationError)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;Operation error &amp;quot; . &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $operationError-&amp;gt;Code . &amp;quot; encountered. &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $operationError-&amp;gt;Message . &amp;quot;\n&amp;quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;// Definitions for classes that are used by the SOAP headers.&lt;br /&gt;class ApplicationToken&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Value;&lt;br /&gt;}&lt;br /&gt;class DeveloperToken&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Value;&lt;br /&gt;}&lt;br /&gt;class UserCredentials&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Password;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $Username;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;?&amp;gt;&lt;/p&gt;&lt;img src="http://adcentercommunity.com/aggbug.aspx?PostID=433" width="1" height="1"&gt;</content><author><name>Walter Poupore - MSFT</name><uri>http://adcentercommunity.com/members/Walter-Poupore-_2D00_-MSFT.aspx</uri></author></entry><entry><title>How to Create Keywords in PHP (V5)</title><link rel="alternate" type="text/html" href="http://adcentercommunity.com/blogs/api/archive/2008/03/28/how-to-create-keywords-in-php-v5.aspx" /><id>http://adcentercommunity.com/blogs/api/archive/2008/03/28/how-to-create-keywords-in-php-v5.aspx</id><published>2008-03-28T19:05:00Z</published><updated>2008-03-28T19:05:00Z</updated><content type="html">&lt;p&gt;We will release PHP samples in V5 to MSDN by May 2008. In the interim, we&amp;#39;ll use this site to release PHP samples in V5.&lt;/p&gt;
&lt;p&gt;The following PHP example shows how to create keywords by using the Campaign Management Web service. This example assumes that you have already determined which ad group ID will be used for the keywords; you must substitute your ad group ID for the &lt;code&gt;$adGroupID&lt;/code&gt; variable that is assigned &lt;code&gt;50786905&lt;/code&gt; in the following code.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks,&lt;br /&gt;Walter Poupore&lt;br /&gt;Lead Programming Writer&lt;br /&gt;Microsoft adCenter API&lt;/p&gt;
&lt;p&gt;&amp;lt;?php&lt;/p&gt;
&lt;p&gt;// This program requires the following PHP extensions:&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; php_soap.dll&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; php_openssl.dll&lt;/p&gt;
&lt;p&gt;// To ensure that a cached WSDL is not being used,&lt;br /&gt;// disable WSDL caching.&lt;br /&gt;ini_set(&amp;quot;soap.wsdl_cache_enabled&amp;quot;, &amp;quot;0&amp;quot;);&lt;/p&gt;
&lt;p&gt;try&lt;br /&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $adGroupId = 50786905;&amp;nbsp; //Application-specific value.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use either the sandbox or production URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This example is for the sandbox URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $URI =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;https://sandboxapi.adcenter.microsoft.com/api/advertiser/v5/&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The following commented-out line contains the production URI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //$URI = &amp;quot;https://adcenterapi.microsoft.com/api/advertiser/v5/&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The Microsoft adCenter API namespace.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns = &amp;quot;https://adcenter.microsoft.com/api/advertiser/v5&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The proxy for the Campaign Management Web service.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $campaignProxy = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $URI . &amp;quot;CampaignManagement/CampaignManagementService.svc?wsdl&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The name of the service operation that will be called.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $action = &amp;quot;AddKeywords&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The user name, password, and developer token are &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // expected to be passed in as command-line&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // arguments.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[0] is the PHP file name.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[1] is the user name.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[2] is the password.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // $argv[3] is the developer token.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($argc !=4)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&amp;quot;Usage:\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;php file.php username password devtoken\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $username = $argv[1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $password = $argv[2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerTokenValue = $argv[3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationTokenValue=&amp;quot;&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Assign the credentials to the classes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // that are used by the SOAP headers.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials=new UserCredentials();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials-&amp;gt;Username=$username;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials-&amp;gt;Password=$password;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken=new DeveloperToken();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken-&amp;gt;Value=$developerTokenValue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken=new ApplicationToken();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken-&amp;gt;Value=$applicationTokenValue;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP headers.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerApplicationToken = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;ApplicationToken&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $applicationToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerDeveloperToken = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;DeveloperToken&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $developerToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerUserCredentials = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapHeader&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $xmlns,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;UserCredentials&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userCredentials,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP input header array.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $inputHeaders = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerApplicationToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerDeveloperToken,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $headerUserCredentials&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the SOAP client.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $opts = array(&amp;#39;trace&amp;#39; =&amp;gt; true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $client = new SOAPClient($campaignProxy, $opts); &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $negativeKeywords = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;latex&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;boxing&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;softball&amp;#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;baseball&amp;#39;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create an array of keywords.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $keywords[] = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BroadMatchBid =&amp;gt; 0.50,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContentMatchBid =&amp;gt; 0.50,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExactMatchBid =&amp;gt; 0.50,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NegativeKeywords =&amp;gt; null,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Param1 =&amp;gt; null,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Param2 =&amp;gt; null,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Param3 =&amp;gt; null,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Text =&amp;gt; &amp;#39;mittens&amp;#39;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $keywords[] = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BroadMatchBid =&amp;gt; 0.50,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContentMatchBid =&amp;gt; 0.50,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExactMatchBid =&amp;gt; 0.50,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NegativeKeywords =&amp;gt; $negativeKeywords,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Param1 =&amp;gt; null,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Param2 =&amp;gt; null,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Param3 =&amp;gt; null,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Text =&amp;gt; &amp;#39;gloves&amp;#39;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Specify the parameters for the SOAP call.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $params = array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;AdGroupId&amp;#39; =&amp;gt; $adGroupId,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;Keywords&amp;#39; =&amp;gt; $keywords&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Execute the SOAP call.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $result = $client-&amp;gt;__soapCall&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $action,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array( $action.&amp;#39;Request&amp;#39; =&amp;gt; $params ),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $inputHeaders,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $outputHeaders&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;$action succeeded with Tracking ID &amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . $outputHeaders[&amp;#39;ApiCallTrackingData&amp;#39;]-&amp;gt;TrackingId&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . &amp;quot;.\n&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Retrieve the keyword IDs.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isset(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $result-&amp;gt;KeywordIds-&amp;gt;int&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (is_array($result-&amp;gt;KeywordIds-&amp;gt;int))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // An array of keyword IDs has been returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $obj = $result-&amp;gt;KeywordIds-&amp;gt;int;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // A single keyword ID has been returned.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $obj = $result-&amp;gt;KeywordIds;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;The following keyword IDs were returned by $action:\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($obj as $keywordId)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;Keyword ID: &amp;quot; . $keywordId . &amp;quot;\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;catch (Exception $e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;$action failed.\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Display the fault code and the fault string.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $e-&amp;gt;faultcode . &amp;quot; &amp;quot; . $e-&amp;gt;faultstring . &amp;quot;.\n&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;TrackingID: &amp;quot; . &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;EditorialApiFaultDetail-&amp;gt;TrackingId . &amp;quot;.\n&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Process any editorial validation errors.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isset(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $e-&amp;gt;detail-&amp;gt;EditorialApiFaultDetail-&amp;gt;EditorialErrors-&amp;gt;EditorialError&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;n