/stores/{storeId}/webhooks/{webhookId}Change its URL, events or description, or turn it off and on. Turning it back on clears its failures.
collector.updateStoreWebhook()store:webhooks:writeX-Request-IdstoreIdstring (uuid)requiredwebhookIdstring (uuid)requiredOnly the fields sent change.
urlstring (uri)1–2048 characters
eventsarray of enum1–50 items
collection.item.createdcollection.item.updatedcollection.item.deletedwishlist.matchhold.requestedhold.acceptedhold.declinedhold.expiredhold.cancelledhold.completedquestion.askedquestion.answeredlisting.soldlisting.out_of_stockmoderation.item.createdmoderation.item.resolvedcatalog.record.changedexport.readydescriptionstring or nullat most 200 characters
activebooleanTurn it off, or back on (which clears its failures; a store or admin webhook then works as you).
200OKThe webhook, changed.
object
invalid_requestinvalid_jsoninvalid_webhook_url
invalid_request: The query or body doesn’t match the schema (see errors[]).
invalid_json: The body isn’t JSON.
invalid_webhook_url: The URL isn’t one webhooks may use: not https, a port under 1024 (other than 443), a user name or password in it, or a host that doesn’t resolve or resolves to a private address.
unauthorized: Not signed in (no session or token, or an expired one).
forbidden: Store staff can’t manage webhooks.
insufficient_scope: With an API key: subscribing to an event also needs the scope that reads it.
not_found: Nothing at that address.
payload_too_large: The body is over 1,048,576 bytes, this operation’s limit.
rate_limitedtemporarily_blocked
rate_limited: Over the caller’s limit: the per-minute burst or the per-day quota (RateLimit headers; wait Retry-After seconds).
temporarily_blocked: Too many refused requests in a row: blocked for a while (Retry-After says how long).
internal: Something went wrong on our side (quote the requestId).