Update a product detail
const url = 'https://example.com/product-details/019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f';const options = { method: 'PATCH', headers: { cookie: '__Host-bottle.session_token=<__Host-bottle.session_token>', 'Content-Type': 'application/json' }, body: '{"name":"example","multiple":true,"unit":"example","kinds":["cylinder"],"options":[{"id":"019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f","label":"example","archived":true}],"archived":true}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://example.com/product-details/019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f \ --header 'Content-Type: application/json' \ --cookie __Host-bottle.session_token=<__Host-bottle.session_token> \ --data '{ "name": "example", "multiple": true, "unit": "example", "kinds": [ "cylinder" ], "options": [ { "id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "label": "example", "archived": true } ], "archived": true }'Rename it, change its unit or the kinds of product it is for, rename, reorder, add or archive options, or archive the detail. Its type and key stay as they were. Nothing deletes a value a product has.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”UUID v7
Example
019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8fUUID v7
Request Bodyrequired
Section titled “Request Bodyrequired”object
On a choice. Turning it off is refused while a product has more than one option (error: detail_has_several).
The kinds of product it applies to. Null or left out: every product.
On a choice: the options in their new order. An option with an id is renamed, moved or archived; one without is added. An option left out is kept as it was, after those sent. Options are never deleted, so the products that have one keep it.
object
An existing option. Left out: a new one.
Example
019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8fArchiving takes the detail off the product form and the shop. Values on products are kept and come back with it.
Responses
Section titled “Responses”Updated
object
UUID v7
In the shop’s filter addresses: /products?d-regulator-fitting=clip-on. Made from the name when the detail is created and kept when it is renamed, so shared links keep working. Unique within the business.
Choice: one of a list of options, or several when multiple is true. number: a number, in the fixed unit set on the detail, such as kg. yesno: yes or no. text: a short line of text, shown on the product and not a filter.
On a choice: whether a product can have several options. False otherwise.
On a number: the unit it is in, as shown after it. Null when there is none.
The kinds of product it applies to. Null: every product.
On a choice: its options in order, archived ones included. Empty otherwise.
object
UUID v7
Archived options are kept on the products that have them and are not offered for new ones.
Example
{ "id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "name": "Regulator fitting", "key": "regulator-fitting", "type": "choice", "unit": "kg", "kinds": [ "cylinder" ], "options": [ { "id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "label": "Clip-on" } ]}Not signed in
object
Example
{ "error": "not_found", "message": "Customer not found"}Not a member, or without the permission this needs
object
Example
{ "error": "not_found", "message": "Customer not found"}No such product detail
object
Example
{ "error": "not_found", "message": "Customer not found"}Turning off several options while a product has more than one (error: conflict)
object
Example
{ "error": "not_found", "message": "Customer not found"}Validation failed
object
object
Example
{ "error": "validation", "issues": [ { "path": "email", "message": "Invalid email" } ]}