Add a store location
package main
import ( "fmt" "strings" "net/http" "io")
func main() {
url := "https://driver-staging-api.delivr.no/v1/merchant/locations"
payload := strings.NewReader("{ \"externalStoreId\": \"example\", \"name\": \"example\", \"street\": \"example\", \"postalCode\": \"0667\", \"city\": \"example\", \"latitude\": 1, \"longitude\": 1, \"contactName\": \"example\", \"contactPhone\": \"example\", \"prepMinutes\": 1, \"readyDeadlineMinutes\": 1, \"defaultParcel\": { \"lengthCm\": 1, \"widthCm\": 1, \"heightCm\": 1 }, \"readySignal\": \"assumed\", \"pickupInstructions\": \"example\" }")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0") req.Header.Add("Authorization", "Bearer <token>") req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(res) fmt.Println(string(body))
}const url = 'https://driver-staging-api.delivr.no/v1/merchant/locations';const options = { method: 'POST', headers: { 'Idempotency-Key': '2489E9AD-2EE2-8E00-8EC9-32D5F69181C0', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"externalStoreId":"example","name":"example","street":"example","postalCode":"0667","city":"example","latitude":1,"longitude":1,"contactName":"example","contactPhone":"example","prepMinutes":1,"readyDeadlineMinutes":1,"defaultParcel":{"lengthCm":1,"widthCm":1,"heightCm":1},"readySignal":"assumed","pickupInstructions":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://driver-staging-api.delivr.no/v1/merchant/locations \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: 2489E9AD-2EE2-8E00-8EC9-32D5F69181C0' \ --data '{ "externalStoreId": "example", "name": "example", "street": "example", "postalCode": "0667", "city": "example", "latitude": 1, "longitude": 1, "contactName": "example", "contactPhone": "example", "prepMinutes": 1, "readyDeadlineMinutes": 1, "defaultParcel": { "lengthCm": 1, "widthCm": 1, "heightCm": 1 }, "readySignal": "assumed", "pickupInstructions": "example" }'Adds a store your goods are picked up at (scope orders). Without
latitude and longitude the store is placed from street,
postalCode and city in the address register (422 invalid_address when it is not found; markets without a register
need the coordinates). Omitted fields take their defaults.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”A UUID, one header. A retry of the same request (method, path,
canonical JSON body) within 24 h gets the first successful reply
again (Idempotent-Replayed: true). Another request under the key
is 422 idempotency_key_reused; a retry while the first runs is
409 idempotency_key_in_flight. Refused or failed requests free
the key.
Request Bodyrequired
Section titled “Request Bodyrequired”A new store (name, street, postalCode, city, contactName
and contactPhone required) or a change to one (any subset).
latitude and longitude go together. null or an omitted field
keeps the value on a change (defaultParcel: null drops it).
object
Your id of the store, unique among your stores.
A phone number of the market (stored as E.164).
Packing time used when readySignal is assumed. Default 0.
At least prepMinutes. Default 60.
Size given to parcels declared by weight alone (1–1000 cm per side).
object
Shown to the driver at pickup, never to the recipient.
Responses
Section titled “Responses”The store location.
object
Your id of the store.
Who the driver asks for at the store.
E.164, e.g. +4722880100.
Packing time used when readySignal is assumed.
Goods due this long after the order when no readyBy is sent.
Size given to parcels declared by weight alone.
object
assumed (default): goods taken as ready at readyBy, else after
prepMinutes; the search is planned at placement. processing
and ready still refine it. required: on-demand orders wait for
processing or ready.
Standing instructions shown to the driver at pickup (entrance, counter); visible to you, never to the recipient. “” for none.
Example
{ "readySignal": "assumed"}Headers
Section titled “Headers”The request’s id (yours if you sent a valid one, up to 64 of A-Za-z0-9._-). Quote it to support.
true when the reply is a replay under the Idempotency-Key.
malformed_json, idempotency_key_required.
object
object
Status per code: 400 malformed_json, idempotency_key_required; 401 unauthenticated; 403 merchant_suspended, insufficient_scope; 404 not_found, quote_not_found; 405 method_not_allowed; 409 conflict, cancellation_not_allowed, idempotency_key_in_flight, price_changed, option_unavailable, fee_changed, quote_already_used, external_ref_taken, window_full, order_ended; 422 invalid_request, idempotency_key_reused, no_delivery_options, manual_quote_required, invalid_address; 429 rate_limited; 500 internal; 503 unavailable.
Human-readable; may change. Branch on code.
The request field at fault, e.g. delivery.address (an unknown field: its name).
object
object
Stable key to book (on_demand or window:<start>/<end> in the market’s zone). The same delivery quoted again lists the same keys.
On demand. Arrival band.
object
Window option.
object
Window option. Book and cancel free before it.
object
VAT included.
On demand only. HINT for the seller, never a promise: drivers near the store when quoted and when the first-ranked could reach it. Do not show a driver count to shoppers.
object
object
object
Options offered instead (may be empty). Book one by key.
object
Stable key to book (on_demand or window:<start>/<end> in the market’s zone). The same delivery quoted again lists the same keys.
On demand. Arrival band.
object
Window option.
object
Window option. Book and cancel free before it.
object
VAT included.
On demand only. HINT for the seller, never a promise: drivers near the store when quoted and when the first-ranked could reach it. Do not show a driver count to shoppers.
object
object
object
object
VAT split only when charged.
object
VAT included.
Example
{ "error": { "code": "invalid_request", "details": { "option": { "type": "on_demand", "key": "on_demand", "price": { "currency": "NOK" } } } }}unauthenticated: missing, unknown or revoked key.
object
object
Status per code: 400 malformed_json, idempotency_key_required; 401 unauthenticated; 403 merchant_suspended, insufficient_scope; 404 not_found, quote_not_found; 405 method_not_allowed; 409 conflict, cancellation_not_allowed, idempotency_key_in_flight, price_changed, option_unavailable, fee_changed, quote_already_used, external_ref_taken, window_full, order_ended; 422 invalid_request, idempotency_key_reused, no_delivery_options, manual_quote_required, invalid_address; 429 rate_limited; 500 internal; 503 unavailable.
Human-readable; may change. Branch on code.
The request field at fault, e.g. delivery.address (an unknown field: its name).
object
object
Stable key to book (on_demand or window:<start>/<end> in the market’s zone). The same delivery quoted again lists the same keys.
On demand. Arrival band.
object
Window option.
object
Window option. Book and cancel free before it.
object
VAT included.
On demand only. HINT for the seller, never a promise: drivers near the store when quoted and when the first-ranked could reach it. Do not show a driver count to shoppers.
object
object
object
Options offered instead (may be empty). Book one by key.
object
Stable key to book (on_demand or window:<start>/<end> in the market’s zone). The same delivery quoted again lists the same keys.
On demand. Arrival band.
object
Window option.
object
Window option. Book and cancel free before it.
object
VAT included.
On demand only. HINT for the seller, never a promise: drivers near the store when quoted and when the first-ranked could reach it. Do not show a driver count to shoppers.
object
object
object
object
VAT split only when charged.
object
VAT included.
Example
{ "error": { "code": "invalid_request", "details": { "option": { "type": "on_demand", "key": "on_demand", "price": { "currency": "NOK" } } } }}merchant_suspended, insufficient_scope.
object
object
Status per code: 400 malformed_json, idempotency_key_required; 401 unauthenticated; 403 merchant_suspended, insufficient_scope; 404 not_found, quote_not_found; 405 method_not_allowed; 409 conflict, cancellation_not_allowed, idempotency_key_in_flight, price_changed, option_unavailable, fee_changed, quote_already_used, external_ref_taken, window_full, order_ended; 422 invalid_request, idempotency_key_reused, no_delivery_options, manual_quote_required, invalid_address; 429 rate_limited; 500 internal; 503 unavailable.
Human-readable; may change. Branch on code.
The request field at fault, e.g. delivery.address (an unknown field: its name).
object
object
Stable key to book (on_demand or window:<start>/<end> in the market’s zone). The same delivery quoted again lists the same keys.
On demand. Arrival band.
object
Window option.
object
Window option. Book and cancel free before it.
object
VAT included.
On demand only. HINT for the seller, never a promise: drivers near the store when quoted and when the first-ranked could reach it. Do not show a driver count to shoppers.
object
object
object
Options offered instead (may be empty). Book one by key.
object
Stable key to book (on_demand or window:<start>/<end> in the market’s zone). The same delivery quoted again lists the same keys.
On demand. Arrival band.
object
Window option.
object
Window option. Book and cancel free before it.
object
VAT included.
On demand only. HINT for the seller, never a promise: drivers near the store when quoted and when the first-ranked could reach it. Do not show a driver count to shoppers.
object
object
object
object
VAT split only when charged.
object
VAT included.
Example
{ "error": { "code": "invalid_request", "details": { "option": { "type": "on_demand", "key": "on_demand", "price": { "currency": "NOK" } } } }}conflict, cancellation_not_allowed, idempotency_key_in_flight,
price_changed, option_unavailable, window_full, fee_changed,
quote_already_used, external_ref_taken, order_ended. See
details for what to do.
object
object
Status per code: 400 malformed_json, idempotency_key_required; 401 unauthenticated; 403 merchant_suspended, insufficient_scope; 404 not_found, quote_not_found; 405 method_not_allowed; 409 conflict, cancellation_not_allowed, idempotency_key_in_flight, price_changed, option_unavailable, fee_changed, quote_already_used, external_ref_taken, window_full, order_ended; 422 invalid_request, idempotency_key_reused, no_delivery_options, manual_quote_required, invalid_address; 429 rate_limited; 500 internal; 503 unavailable.
Human-readable; may change. Branch on code.
The request field at fault, e.g. delivery.address (an unknown field: its name).
object
object
Stable key to book (on_demand or window:<start>/<end> in the market’s zone). The same delivery quoted again lists the same keys.
On demand. Arrival band.
object
Window option.
object
Window option. Book and cancel free before it.
object
VAT included.
On demand only. HINT for the seller, never a promise: drivers near the store when quoted and when the first-ranked could reach it. Do not show a driver count to shoppers.
object
object
object
Options offered instead (may be empty). Book one by key.
object
Stable key to book (on_demand or window:<start>/<end> in the market’s zone). The same delivery quoted again lists the same keys.
On demand. Arrival band.
object
Window option.
object
Window option. Book and cancel free before it.
object
VAT included.
On demand only. HINT for the seller, never a promise: drivers near the store when quoted and when the first-ranked could reach it. Do not show a driver count to shoppers.
object
object
object
object
VAT split only when charged.
object
VAT included.
Example
{ "error": { "code": "invalid_request", "details": { "option": { "type": "on_demand", "key": "on_demand", "price": { "currency": "NOK" } } } }}invalid_request (with param), idempotency_key_reused,
no_delivery_options, manual_quote_required, invalid_address.
object
object
Status per code: 400 malformed_json, idempotency_key_required; 401 unauthenticated; 403 merchant_suspended, insufficient_scope; 404 not_found, quote_not_found; 405 method_not_allowed; 409 conflict, cancellation_not_allowed, idempotency_key_in_flight, price_changed, option_unavailable, fee_changed, quote_already_used, external_ref_taken, window_full, order_ended; 422 invalid_request, idempotency_key_reused, no_delivery_options, manual_quote_required, invalid_address; 429 rate_limited; 500 internal; 503 unavailable.
Human-readable; may change. Branch on code.
The request field at fault, e.g. delivery.address (an unknown field: its name).
object
object
Stable key to book (on_demand or window:<start>/<end> in the market’s zone). The same delivery quoted again lists the same keys.
On demand. Arrival band.
object
Window option.
object
Window option. Book and cancel free before it.
object
VAT included.
On demand only. HINT for the seller, never a promise: drivers near the store when quoted and when the first-ranked could reach it. Do not show a driver count to shoppers.
object
object
object
Options offered instead (may be empty). Book one by key.
object
Stable key to book (on_demand or window:<start>/<end> in the market’s zone). The same delivery quoted again lists the same keys.
On demand. Arrival band.
object
Window option.
object
Window option. Book and cancel free before it.
object
VAT included.
On demand only. HINT for the seller, never a promise: drivers near the store when quoted and when the first-ranked could reach it. Do not show a driver count to shoppers.
object
object
object
object
VAT split only when charged.
object
VAT included.
Example
{ "error": { "code": "invalid_request", "details": { "option": { "type": "on_demand", "key": "on_demand", "price": { "currency": "NOK" } } } }}rate_limited. Also after repeated failed sign-ins from one address.
object
object
Status per code: 400 malformed_json, idempotency_key_required; 401 unauthenticated; 403 merchant_suspended, insufficient_scope; 404 not_found, quote_not_found; 405 method_not_allowed; 409 conflict, cancellation_not_allowed, idempotency_key_in_flight, price_changed, option_unavailable, fee_changed, quote_already_used, external_ref_taken, window_full, order_ended; 422 invalid_request, idempotency_key_reused, no_delivery_options, manual_quote_required, invalid_address; 429 rate_limited; 500 internal; 503 unavailable.
Human-readable; may change. Branch on code.
The request field at fault, e.g. delivery.address (an unknown field: its name).
object
object
Stable key to book (on_demand or window:<start>/<end> in the market’s zone). The same delivery quoted again lists the same keys.
On demand. Arrival band.
object
Window option.
object
Window option. Book and cancel free before it.
object
VAT included.
On demand only. HINT for the seller, never a promise: drivers near the store when quoted and when the first-ranked could reach it. Do not show a driver count to shoppers.
object
object
object
Options offered instead (may be empty). Book one by key.
object
Stable key to book (on_demand or window:<start>/<end> in the market’s zone). The same delivery quoted again lists the same keys.
On demand. Arrival band.
object
Window option.
object
Window option. Book and cancel free before it.
object
VAT included.
On demand only. HINT for the seller, never a promise: drivers near the store when quoted and when the first-ranked could reach it. Do not show a driver count to shoppers.
object
object
object
object
VAT split only when charged.
object
VAT included.
Example
{ "error": { "code": "invalid_request", "details": { "option": { "type": "on_demand", "key": "on_demand", "price": { "currency": "NOK" } } } }}Headers
Section titled “Headers”Seconds to wait.
Requests per minute for your merchant (600).
Seconds until the window resets.
unavailable: retry later (same Idempotency-Key).
object
object
Status per code: 400 malformed_json, idempotency_key_required; 401 unauthenticated; 403 merchant_suspended, insufficient_scope; 404 not_found, quote_not_found; 405 method_not_allowed; 409 conflict, cancellation_not_allowed, idempotency_key_in_flight, price_changed, option_unavailable, fee_changed, quote_already_used, external_ref_taken, window_full, order_ended; 422 invalid_request, idempotency_key_reused, no_delivery_options, manual_quote_required, invalid_address; 429 rate_limited; 500 internal; 503 unavailable.
Human-readable; may change. Branch on code.
The request field at fault, e.g. delivery.address (an unknown field: its name).
object
object
Stable key to book (on_demand or window:<start>/<end> in the market’s zone). The same delivery quoted again lists the same keys.
On demand. Arrival band.
object
Window option.
object
Window option. Book and cancel free before it.
object
VAT included.
On demand only. HINT for the seller, never a promise: drivers near the store when quoted and when the first-ranked could reach it. Do not show a driver count to shoppers.
object
object
object
Options offered instead (may be empty). Book one by key.
object
Stable key to book (on_demand or window:<start>/<end> in the market’s zone). The same delivery quoted again lists the same keys.
On demand. Arrival band.
object
Window option.
object
Window option. Book and cancel free before it.
object
VAT included.
On demand only. HINT for the seller, never a promise: drivers near the store when quoted and when the first-ranked could reach it. Do not show a driver count to shoppers.
object
object
object
object
VAT split only when charged.
object
VAT included.
Example
{ "error": { "code": "invalid_request", "details": { "option": { "type": "on_demand", "key": "on_demand", "price": { "currency": "NOK" } } } }}