When using
CampaignCriterionService to add a
MobileDevice CampaignCriterion to a mobile-app install Display network campaign, it seems that some valid devices cannot be targeted and return the following error:
[CriterionError.CANNOT_TARGET_OBSOLETE_CRITERION @ operations[0].operand.criterion;
For example, if I try to target the HTC Hero Android device, the following SOAP exchange happens:
REQUEST:
<SOAP-ENV:Body>
<ns1:mutate>
<ns1:operations>
<ns1:operator>ADD</ns1:operator>
<ns1:operand>
<ns1:campaignId>{REDACTED}</ns1:campaignId>
<ns1:criterion xsi:type="ns1:MobileDevice">
<ns1:id>600329</ns1:id>
<ns1:Criterion.Type>MobileDevice</ns1:Criterion.Type>
<ns1:deviceName>Hero</ns1:deviceName>
<ns1:manufacturerName>HTC</ns1:manufacturerName>
<ns1:deviceType>DEVICE_TYPE_MOBILE</ns1:deviceType>
<ns1:operatingSystemName>Android</ns1:operatingSystemName>
</ns1:criterion>
</ns1:operand>
</ns1:operations>
</ns1:mutate>
</SOAP-ENV:Body>
ERROR RESPONSE:
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>[CriterionError.CANNOT_TARGET_OBSOLETE_CRITERION @ operations[0].operand.criterion; trigger:'600329']</faultstring>
<detail>
<message>[CriterionError.CANNOT_TARGET_OBSOLETE_CRITERION @ operations[0].operand.criterion; trigger:'600329']</message>
<ApplicationException.Type>ApiException</ApplicationException.Type>
<fieldPath>operations[0].operand.criterion</fieldPath>
<trigger>600329</trigger>
<errorString>CriterionError.CANNOT_TARGET_OBSOLETE_CRITERION</errorString>
<ApiError.Type>CriterionError</ApiError.Type>
<reason>CANNOT_TARGET_OBSOLETE_CRITERION</reason>
</errors>
</ApiExceptionFault>
</detail>
</soap:Fault>
</soap:Body>
My question is, since I got this device from ConstantDataService, and it looks the same as any other valid targetable device, how do I determine which devices are OK to target and which are obsolete?
Thanks.
Mark