Update an existing product listing. Only provided fields are changed.
Authenticated. OAuth (scope `products:write`) preferred; `api_key` accepted
as fallback.
Only fields you pass are changed; omitted fields are preserved.
Idempotent — calling twice with the same input yields the same final
state. For creating a new listing, use `create_product` instead.
Caller must own the product. Trying to update someone else's product
returns an error.
Args:
product_id: ID of the product to update. Get from `create_product`'s
return value, `get_my_products`, or `search_products`.
name: New product name. Omit to leave unchanged.
description: New description. Omit to leave unchanged.
price: New price in whole currency units (e.g. 15.99 = €15.99). Max
100000. Omit to leave unchanged.
currency: New currency symbol. Omit to leave unchanged.
url: New merchant URL. Omit to leave unchanged.
api_key: Optional API key (`pk_*`, generate at /account).
Used when there is no OAuth token, and also when the OAuth
token lacks the required scope — an explicitly passed key
overrides an ambient token that is scoped too narrowly.
An invalid or revoked token still fails regardless. Omit when using OAuth.
Returns:
The updated product record (full, not just the changed fields), or
``{"error": ...}`` on auth/ownership/validation failure.
Connector