In a Display Network - mobile app installs campaign, when trying to set a campaign placement exclusion for the Google YouTube mobile app on iOS using a NegativeCampaignCriterion, the API returns the following error:
[CriterionError.INVALID_MOBILE_APP @ operations[0].operand.criterion.appId; trigger:'1-544007664']
Furthermore, when querying for stats using the API, the same app ID gets returned. For example, from the URL Placement Report:
Criteria Display Name: Mobile App: YouTube (iTunes App Store), by Google, Inc.
[Jun 13 2016 17:58:32.000000 - ERROR] POST /api/adwords/cm/v201605/CampaignCriterionService HTTP/1.1
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.5.9-1ubuntu4.11, gzip
Accept-Encoding: gzip, deflate
Content-Encoding: gzip
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Content-Length: 488
Authorization: {REDACTED}
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Header>
<ns1:RequestHeader>
<ns1:clientCustomerId>{REDACTED}</ns1:clientCustomerId>
<ns1:developerToken>{REDACTED}</ns1:developerToken>
<ns1:userAgent>{REDACTED}</ns1:userAgent>
</ns1:RequestHeader>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:mutate>
<ns1:operations>
<ns1:operator>ADD</ns1:operator>
<ns1:operand xsi:type="ns1:NegativeCampaignCriterion">
<ns1:campaignId>281979435</ns1:campaignId>
<ns1:criterion xsi:type="ns1:MobileApplication">
<ns1:appId>1-544007664</ns1:appId>
</ns1:criterion>
</ns1:operand>
</ns1:operations>
</ns1:mutate>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
HTTP/1.1 500 Internal Server Error
Content-Type: text/xml; charset=UTF-8
Content-Encoding: gzip
Date: Mon, 13 Jun 2016 17:58:32 GMT
Expires: Mon, 13 Jun 2016 17:58:32 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Transfer-Encoding: chunked
<?xml version="1.0"?>
<soap:Header>
<requestId>0005352ca2efbd580a4c0a442a014aaa</requestId>
<serviceName>CampaignCriterionService</serviceName>
<methodName>mutate</methodName>
<operations>1</operations>
<responseTime>80</responseTime>
</ResponseHeader>
</soap:Header>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>[CriterionError.INVALID_MOBILE_APP @ operations[0].operand.criterion.appId; trigger:'1-544007664']</faultstring>
<detail>
<message>[CriterionError.INVALID_MOBILE_APP @ operations[0].operand.criterion.appId; trigger:'1-544007664']</message>
<ApplicationException.Type>ApiException</ApplicationException.Type>
<fieldPath>operations[0].operand.criterion.appId</fieldPath>
<trigger>1-544007664</trigger>
<errorString>CriterionError.INVALID_MOBILE_APP</errorString>
<ApiError.Type>CriterionError</ApiError.Type>
<reason>INVALID_MOBILE_APP</reason>
</errors>
</ApiExceptionFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>