save_advertiser_instructions records what your Seller Account wants applied
to one specific buying operator working for one specific brand: free-form
notes, an optional country scope and an optional discount. It is a Seller
Account tool. A Buyer Account uses save_advertiser and its privateNotes
field instead; see Private advertiser notes.
In a Seller Account,
advertiser means a brand domain and operator domain
pair that you wrote instructions for. It is not a registry-verified
identity, a buyer’s own Advertiser, or an ad-server advertiser. Every domain
you save carries verified: false on the way back.What you can change
One instruction row is identified by its exact pair,operator.domain plus
brand.domain. You can write three things on it:
The pair itself is fixed once the row exists. To target a different operator or
brand, save a new row.
Create an instruction
Send both domains and a non-nullinstructions.notes or discountPercent.
A create without either, including one that carries only a country scope, is
refused with VALIDATION_FAILED and lists the missing fields.
action: "created" with the saved projection as object.
If the write lands but the read-back is unavailable, the result reports
action: "created" with warning: "created_but_readback_unavailable", the row
id when known, and the pair. Read the row with get before you save again.
Change an instruction
Address the row byid, or by sending the same two domains again. Send only
the fields you want to change. Anything you omit keeps its stored value.
- A change that matches what is already stored returns
action: "unchanged"with the current projection and writes nothing. - A change returns
action: "updated". As with a create, a successful write whose read-back is unavailable returnsupdated_but_readback_unavailable. - If you send an
idand also domains that do not match that row, the call is refused withPAIR_MISMATCH, naming the requested and the stored pair. Omitidto create the pair you named, or correct the domains. - If two stored rows match the same pair, the call is refused with
AMBIGUOUS_MATCHand the matchingids. Send theidof the one you mean. - An
idthat does not exist returnsNOT_FOUND. Omitidand send both domains to create the row instead.
null.
Read an instruction
List the rows withsearch, then read one with get:
query matches the operator domain, the brand domain and the notes. Search
results omit the discount, routing, access and trust projections on purpose.
get adds them, each with a provenance sentence that says where the value
comes from:
You cannot change the effective discount, routing, sponsored access or account
trust with this tool. Author discounts as house-discount rules in the playbook,
and open the inventory source or the relationship Page for the others.
Limits
- The tool needs a Seller Account. A Buyer Account is refused with a wrong-account error.
- Sending the same state again returns
unchangedrather than writing twice. - The rows you save are the instruction rows your storefront reads when it composes products for a matching buyer. Keep notes to selling guidance. They are not a place for credentials.