Skip to navigation

Change the restaurant's settings

Partner key + restaurant key. Changes the fields you send; a field you leave out stays as it is. Same rules as the restaurant dashboard. With expectedVersion, nothing is written if the settings changed since you read them (409 CHANGED); an order does not count as a change.

The legal fields (orgNumber, legalName, addressLine1, postalCode, city) can be changed until the owner has signed the customer agreement; after that a new value gives 409 LEGAL_LOCKED (the stored value is accepted). The logo and cover image must be uploaded to LettBestilt. Remove version, updatedAt and legal before you send a GET response back. Slug, email, the ordering page, the font, invoicing, agreements, payment and printers cannot be changed here. Not allowed for an archived restaurant. Every change is logged with the field names, never the values.

Authentication

AuthorizationBearer

The partner key (lbp_test_… or lbp_live_…), sent as Authorization: Bearer lbp_… and created in LettBestilt Partner under Partner key. It belongs to the whole partner, not to a restaurant, and only works against /api/v1/partner. Server to server only: a request with an Origin header is rejected with 403 FORBIDDEN, and the key must never be in a browser. A TEST key sees and creates only sandboxes; LIVE keys work once LettBestilt Partner is open. A suspended or archived partner, a revoked key and a restaurant key (lbs_…) here give 401 UNAUTHORIZED; an expired key gives 401 KEY_EXPIRED.

X-LettBestilt-Restaurant-Keystring

The restaurant’s own key (lbs_test_… or lbs_live_…) for calls about one restaurant in the partner API, sent together with the partner key. The key must have full access (scope *, otherwise 403 INSUFFICIENT_SCOPE), belong to a restaurant the partner owns and be in the same environment as the partner key. A restaurant that does not exist, belongs to another partner or does not match the key always gives the same 404 RESTAURANT_NOT_FOUND. Older keys without an environment in the prefix (lbs_<random>) are not accepted here; rotate them in LettBestilt Partner.

Path parameters

slugstringRequired

The restaurant’s slug. It must match the restaurant key in X-LettBestilt-Restaurant-Key.

Request

This endpoint expects an object.
namestringOptional1-120 characters
The restaurant's name as guests see it.
descriptionstring or nullOptional<=1000 characters
cuisineTypestring or nullOptional<=120 characters
Cuisine, e.g. "Pizza".
phonestring or nullOptional<=50 characters
websitestring or nullOptional<=320 characters

The restaurant’s website (http/https).

publicAddressLine1string or nullOptional<=200 characters

The visiting address. Empty = use the legal address (all or nothing).

publicPostalCodestring or nullOptionalformat: "^(\d{4})?$"
4 digits. An empty string or null clears it.
publicCitystring or nullOptional<=120 characters
latitudedouble or nullOptional-90-90

Sent together with longitude: both or neither.

longitudedouble or nullOptional-180-180

Sent together with latitude: both or neither.

primaryColorstringOptionalformat: "^#[0-9a-fA-F]{6}$"
secondaryColorstringOptionalformat: "^#[0-9a-fA-F]{6}$"
logoUrlstring or nullOptionalformat: "uri"

Logo. Only a file uploaded to LettBestilt’s own UploadThing app (https://<appId>.ufs.sh/f/… or https://utfs.io/a/&lt;appId&gt;/…); other addresses give 422. The stored value is accepted (including older links). An empty string or null removes the image.

coverImageUrlstring or nullOptionalformat: "uri"

Cover image. Only a file uploaded to LettBestilt’s own UploadThing app (https://<appId>.ufs.sh/f/… or https://utfs.io/a/&lt;appId&gt;/…); other addresses give 422. The stored value is accepted (including older links). An empty string or null removes the image.

pickupEnabledbooleanOptional

At least one of pickupEnabled and deliveryEnabled must be true.

deliveryEnabledbooleanOptional

At least one of pickupEnabled and deliveryEnabled must be true. Delivery zones are set separately.

defaultPrepMinutesintegerOptional1-240

Base preparation time for pickup, in minutes (without rush).

defaultDeliveryMinutesintegerOptional1-240

Base delivery time, in minutes (without rush).

trackingHeaderTextstring or nullOptional<=500 characters
Heading on the tracking page.
trackingPickupInstructionsstring or nullOptional<=500 characters
trackingDeliveryInstructionsstring or nullOptional<=500 characters
trackingShowEtabooleanOptional
trackingShowMapbooleanOptional
receiptHeaderTextstring or nullOptional<=500 characters
receiptFooterTextstring or nullOptional<=500 characters
googleReviewUrlstring or nullOptionalformat: "uri"
Link to Google reviews on the receipt, https only. An empty string or null clears it.
orgNumberstring or nullOptional<=32 characters

Legal. 9 digits with a valid check digit (mod11); spaces are tolerated and removed. Locked when the owner has signed the customer agreement.

legalNamestring or nullOptional<=500 characters
Legal. Locked when the owner has signed the customer agreement.
addressLine1string or nullOptional<=200 characters

Legal address (used for the customer agreement and the payment provider). Locked when the owner has signed the customer agreement.

postalCodestring or nullOptionalformat: "^(\d{4})?$"
Legal. 4 digits. Locked when the owner has signed the customer agreement.
citystring or nullOptional<=120 characters
Legal. Locked when the owner has signed the customer agreement.
expectedVersionstringOptionalformat: "^[0-9a-f]{16}$"

version from GET. If the settings have changed since, 409 CHANGED and nothing is written. An order does not change the version.

Response

The settings after the change.
dataobject

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
409
Conflict Error
422
Unprocessable Entity Error
429
Too Many Requests Error