platformLinks tell you which of those happened, who must act, and why. Read
them before you tell anyone that a seller rejected a creative: a seller rejection
is one reason among several, and in most cases the seller never saw the creative.
get with kind: "creative" returns one entry in platformLinks per seller.
The same read in v2 returns platform_links, with the names in the last column
of the tables below.
Where the creative stands
Each seller link is in exactly one stage, or in none when there is nothing to report (the creative is synced and approved).Who must act
The party who must act follows the cause, not the step where it showed up.
A
not_sent creative always names Apostra.
Why
In v2,sync_reason carries the reason. In v3, failureReason carries it for
links that are not_sent or failed, and is absent for a link that is pending
or live. For a pending link, read status and approvalStatus: a seller
reviewing the creative reads as approvalStatus: "pending", and a seller that
asked for changes reads as approvalStatus: "changes_requested". Every reason
fixes its stage and the party who must act.
The set is closed. A link with no reason has nothing to report, or was last
written before reasons were recorded; it fills in the next time the creative is
sent to that seller.
What to say to a buyer
- Say a seller rejected a creative only for
seller_rejected_content, or whenapprovalStatusisrejected. - For
not_sent, say the creative was not sent and Apostra must fix it. The buyer does not need to change the creative. - For
buyer, say what must change, using the reason above. rejectionReason(v2:rejection_reason) is only the seller’s own note. A creative that was not sent has none.