Update delivery
API v2 is in public beta: endpoints and fields can change before general availability. See the changelog
/back_in_stock/settings/deliveryCosts 2 rate-limit points · Rate limits
Update back-in-stock delivery settings (batching, stock threshold, locations, any-variant, password-protected sending, alerts on publish). Market setup and market-based alerts are PATCH /account/markets.
Deep partial. Toggles set via this PATCH: batching.enabled, locations.filter_enabled, any_variant.enabled: e.g. { batching: { enabled: true } }. batching.mode is an enum: 'multiplier' (batch size = restocked quantity x batching.multiplier) or 'fixed' (batch size = batching.batch_size); batching.wait_hours is the wait between batches. stock_threshold is the minimum restocked quantity before notifications send (>= 1). any_variant.all_products is a boolean: when true, any-variant alerts apply to every product and any_variant.product_ids is ignored; when false, only the listed products qualify. locations.shopify_location_ids and any_variant.shopify_product_ids are arrays of Shopify gids and are replaced wholesale when present. send_while_password_protected is a boolean: false (default) holds back-in-stock alerts while the storefront password is on (signups stay pending for the next restock); true sends anyway. alert_on_publish also alerts when a product is published.
Also searched asedit delivery settingschange delivery settingsbatch notificationsenable batchingturn on batchingdisable batchingturn off batchingsend all at onceset batch sizeset batching multiplierset batching modeset wait between batchesset stock thresholdset minimum stock to notifyonly notify when 5 in stockrequire minimum quantity before notifyingfilter by locationenable location filterdisable location filterset notification locationsonly count inventory at locationsnotify for any variantenable any variant notificationsdisable any variant notificationsnotify when any variant restockssend alerts while store is password protectedhold alerts while store is password protectedalert when a product is publishednotify customers when a product is published
Headers
Idempotency-KeystringA fresh unique key for every write (a new UUID, say); reuse it only to retry that write. Keys are remembered for 1 hour: the same key and the same request within that hour returns the first result, with
Idempotent-Replayed: true, without running again; the same key with a different method, path or body is refused (422idempotency_key_reused); a retry while the first is still running gets 409idempotency_key_in_progress. Keys are per store. Server errors and rate limits are not kept, so their retry runs.
Request body
batchingstringExample:stringstock_thresholdstringExample:stringlocationsstringExample:stringany_variantstringExample:stringsend_while_password_protectedstringExample:stringalert_on_publishstringExample:string
Errors
Missing or invalid X-Auth-Token.
An earlier request with the same Idempotency-Key is still running. Wait, then resend the same request with the same key.
The request failed validation.
Rate limited: cost-weighted per token (read 1, write 2; 360 points / 60s). Check Retry-After.
Every error has the same shape: see Errors.
curl -X PATCH "https://app.stoqapp.com/api/v2/external/back_in_stock/settings/delivery" \
-H "X-Auth-Token: $STOQ_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"batching": "string",
"stock_threshold": "string",
"locations": "string",
"any_variant": "string",
"send_while_password_protected": "string",
"alert_on_publish": "string"
}'const res = await fetch("https://app.stoqapp.com/api/v2/external/back_in_stock/settings/delivery", {
method: "PATCH",
headers: {
"X-Auth-Token": process.env.STOQ_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"batching": "string",
"stock_threshold": "string",
"locations": "string",
"any_variant": "string",
"send_while_password_protected": "string",
"alert_on_publish": "string"
}),
});
const data = await res.json();import os
import requests
res = requests.patch(
"https://app.stoqapp.com/api/v2/external/back_in_stock/settings/delivery",
headers={"X-Auth-Token": os.environ["STOQ_API_KEY"]},
json={
"batching": "string",
"stock_threshold": "string",
"locations": "string",
"any_variant": "string",
"send_while_password_protected": "string",
"alert_on_publish": "string"
},
)
data = res.json()require "net/http"
require "json"
uri = URI("https://app.stoqapp.com/api/v2/external/back_in_stock/settings/delivery")
req = Net::HTTP::Patch.new(uri, "X-Auth-Token" => ENV["STOQ_API_KEY"], "Content-Type" => "application/json")
req.body = {
batching: "string",
stock_threshold: "string",
locations: "string",
any_variant: "string",
send_while_password_protected: "string",
alert_on_publish: "string"
}.to_json
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body){
"job_id": "job_a1b2c3",
"status_url": "/api/v2/external/jobs/job_a1b2c3"
}{
"errors": [
"Invalid API key"
],
"code": "auth_invalid",
"details": [
{
"code": "auth_invalid",
"message": "Invalid API key",
"path": null,
"value": null,
"expected": null
}
]
}{
"errors": [
"A request with this Idempotency-Key is still running"
],
"code": "idempotency_key_in_progress",
"details": [
{
"code": "idempotency_key_in_progress",
"message": "A request with this Idempotency-Key is still running",
"path": null,
"value": null,
"expected": null
}
]
}{
"errors": [
"name is required"
],
"code": "validation_failed",
"details": [
{
"code": "validation_failed",
"message": "name is required",
"path": null,
"value": null,
"expected": null
}
]
}{
"errors": [
"Rate limit exceeded"
],
"code": "rate_limited",
"details": [
{
"code": "rate_limited",
"message": "Rate limit exceeded",
"path": null,
"value": null,
"expected": null
}
]
}