One product, whole
const url = 'https://api.blupinta.app/v1/catalog/products/example/example';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.blupinta.app/v1/catalog/products/example/example \ --header 'Authorization: Bearer <token>'A product of the catalog as a home holds it among its products: its options, sizes as expressions of them, geometry, clearances, what a house entity may drive in it, its thumbnails.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters”The first part of the product’s id (ikea)
The second part of the product’s id (kallax)
Responses
Section titled “ Responses ”One product, whole
A product of the catalog whole: its options, sizes, geometry, as a home holds it among its products
object
Namespace/name, stable forever (“ikea/kallax”, “jal/handmade-drawers”)
Bumped on any change that can move or reshape an item
App content, shared by every user: in each of the app’s languages (furnishing.md F5)
object
App content, shared by every user: in each of the app’s languages (furnishing.md F5)
object
A path in the shared taxonomy: “storage/shelving”, “lighting/pendant”, “decor/wall-art”
object
Each with numbers the expressions read as <option>.<name> (KALLAX’s size.cols)
object
App content, shared by every user: in each of the app’s languages (furnishing.md F5)
object
object
A rule between options (furnishing.md §3, a modular system): a value is offered only while every condition holds (BESTÅ’s 180 frame only in white)
Shows (or allows) an option only when another holds one of some values
object
App content, shared by every user: in each of the app’s languages (furnishing.md F5)
object
Shows (or allows) an option only when another holds one of some values
object
object
The library’s materials it is sold in
The materials sold only with some other values, by material
object
A rule between options (furnishing.md §3, a modular system): a value is offered only while every condition holds (BESTÅ’s 180 frame only in white)
Shows (or allows) an option only when another holds one of some values
object
App content, shared by every user: in each of the app’s languages (furnishing.md F5)
object
Shows (or allows) an option only when another holds one of some values
object
object
App content, shared by every user: in each of the app’s languages (furnishing.md F5)
object
Shows (or allows) an option only when another holds one of some values
object
object
App content, shared by every user: in each of the app’s languages (furnishing.md F5)
object
Shows (or allows) an option only when another holds one of some values
object
object
Width over height of the picture’s place
A picture cut across panels (a multi-panel canvas), with the gap between them, m
App content, shared by every user: in each of the app’s languages (furnishing.md F5)
object
Shows (or allows) an option only when another holds one of some values
object
object
How many slots, as an expression of the other options (KALLAX’s cells)
object
App content, shared by every user: in each of the app’s languages (furnishing.md F5)
object
A rule between options (furnishing.md §3, a modular system): a value is offered only while every condition holds (BESTÅ’s 180 frame only in white)
Shows (or allows) an option only when another holds one of some values
object
App content, shared by every user: in each of the app’s languages (furnishing.md F5)
object
Shows (or allows) an option only when another holds one of some values
object
object
App content, shared by every user: in each of the app’s languages (furnishing.md F5)
object
Shows (or allows) an option only when another holds one of some values
object
Option combinations the maker sells under its own article number (a slots option’s as its slots’ choices)
object
object
object
object
object
A model and the options that choose it; one without when is the fallback. A maker’s component carries its article, and how many parts one article gives (STUBBARP’s legs come two to a pack)
object
Option values that must all hold: a choice’s or a material’s id, a number, yes or no; in a part made per slot, null for its slot left empty
object
A model of the catalog: its bytes’ sha256, and the file it is published from (pnpm catalog:assets)
object
A model of the catalog: its bytes’ sha256, and the file it is published from (pnpm catalog:assets)
object
object
object
Three expressions of the options, m: x, y, z or w, h, d
Where the part’s box starts: its left, bottom, back corner, from the product’s origin (floor, middle, back)
How many, an expression; 0 leaves it out (an option switching a part off)
One copy per slot of this slots option (count of them in each, then): in the part’s when and its models’, the option names this slot’s own value; index names the slot’s position
In a part made per slot with a count, the name each copy’s number within its slot goes by
The part is made only while these values hold
object
The name each copy’s number (0, 1, …) goes by in the part’s expressions
What the part is (“drawer 1”), for clearances and, later, animation
object
A model and the options that choose it; one without when is the fallback. A maker’s component carries its article, and how many parts one article gives (STUBBARP’s legs come two to a pack)
object
Option values that must all hold: a choice’s or a material’s id, a number, yes or no; in a part made per slot, null for its slot left empty
object
A model of the catalog: its bytes’ sha256, and the file it is published from (pnpm catalog:assets)
object
A model of the catalog: its bytes’ sha256, and the file it is published from (pnpm catalog:assets)
object
Where the part’s box starts: its left, bottom, back corner, from the product’s origin (floor, middle, back)
How many, an expression; 0 leaves it out (an option switching a part off)
One copy per slot of this slots option (count of them in each, then): in the part’s when and its models’, the option names this slot’s own value; index names the slot’s position
In a part made per slot with a count, the name each copy’s number within its slot goes by
The part is made only while these values hold
object
The name each copy’s number (0, 1, …) goes by in the part’s expressions
What the part is (“drawer 1”), for clearances and, later, animation
Width (x), height (y), depth (z) as expressions of the options, m
object
The space it needs in use, beside its sides (furnishing.md §8): drawers pulled out, a door’s swing, a chair
object
What a clearance is kept free for, named in the editor’s warnings
The side it opens out of, as the product faces: across its whole width on the front or back, its depth on a side
How far out, m, as an expression of the options
Where the measure comes from: the product sheet, a measurement, a usual allowance
What in it a house entity can drive
object
object
The product sheet or the measurement it comes from
object
Example
{ "mount": "floor", "options": [ { "kind": "choice" } ], "geometry": { "kind": "builtin" }, "clearances": [ { "use": "drawers", "side": "front" } ], "bindings": [ { "kind": "light" } ], "links": [ { "kind": "product" } ]}Headers
Section titled “Headers”The requests the caller may make in the window: an app counts per connection, every token together
The requests left in the window
Seconds until the window starts again
unauthenticated: No valid access token for this API
The body of a refusal
object
What /v1 answers when it refuses
The server’s id for a server_error, to quote when asking for help
What is wrong, for invalid_input, conflict, invalid_home, blocking_problems
Example
{ "error": "unauthenticated"}Headers
Section titled “Headers”The requests the caller may make in the window: an app counts per connection, every token together
The requests left in the window
Seconds until the window starts again
forbidden: The token lacks the scope this operation needs
The body of a refusal
object
What /v1 answers when it refuses
The server’s id for a server_error, to quote when asking for help
What is wrong, for invalid_input, conflict, invalid_home, blocking_problems
Example
{ "error": "unauthenticated"}Headers
Section titled “Headers”The requests the caller may make in the window: an app counts per connection, every token together
The requests left in the window
Seconds until the window starts again
not_found: Nothing there, or nothing this token may read
The body of a refusal
object
What /v1 answers when it refuses
The server’s id for a server_error, to quote when asking for help
What is wrong, for invalid_input, conflict, invalid_home, blocking_problems
Example
{ "error": "unauthenticated"}Headers
Section titled “Headers”The requests the caller may make in the window: an app counts per connection, every token together
The requests left in the window
Seconds until the window starts again
rate_limited: Too many requests: wait as long as Retry-After says
The body of a refusal
object
What /v1 answers when it refuses
The server’s id for a server_error, to quote when asking for help
What is wrong, for invalid_input, conflict, invalid_home, blocking_problems
Example
{ "error": "unauthenticated"}Headers
Section titled “Headers”The requests the caller may make in the window: an app counts per connection, every token together
The requests left in the window
Seconds until the window starts again
Seconds to wait before asking again
server_error: Something failed on Blupinta’s side: quote errorId when asking for help
The body of a refusal
object
What /v1 answers when it refuses
The server’s id for a server_error, to quote when asking for help
What is wrong, for invalid_input, conflict, invalid_home, blocking_problems
Example
{ "error": "unauthenticated"}Headers
Section titled “Headers”The requests the caller may make in the window: an app counts per connection, every token together
The requests left in the window
Seconds until the window starts again