We are implementing the “Placements and Product Types” breaking change announced 4/21/2015, and have found some surprising behavior in the API:
-
Line Item
product_type is validated in the context of the Campaign’s objective: this mostly matches the behavior of placement_type, although there were more valid values for the latter. This validation seems to be undocumented. Is there a way to predict which product_type attribute is valid for a given objective?
-
product_type and placements are immutable; once set, they cannot change, but the API will return success if you do attempt to change them.
-
The
POST/PUT /line_item API responses do not contain the current placements value - Creating or updating a line item with any placements attribute responds with an empty array of “placements”. The GET /line_item API responds with the correct value.
-
placements returns validation messages for placement_type - Creating a second Line Item within a Campaign where the placements values are not equal responds with the error “INVALID: LineItems with different placement types are not allowed inside a campaign”. It’s not clear to us if a. sending placements sets the legacy placement_type value, then validates it, returning a message for placement_type instead of placements, or b) if placement_type and placements have the same validation constraint (cannot mix within a campaign), or c.) both.
-
Using
PUBLISHER_NETWORK as a placement value adds undocumented validations - The POST /line_item touches on it, but there are additional attributes you are required to pass if you select a PUBLISHER_NETWORK placement value: categories and advertiser_domain. An API supports categories but advertiser_domain is not well documented. It also requires an enabled account feature, PTW_ON_TWITTER_PUBLISHER_NETWORK.
We’re changing our product in light of #1, #2 and #5, but we’re a little puzzled by #3 & 4. Are these bugs, or is the API working as intended?