Kumospace Stock Furniture API
The Stock Furniture API from Kumospace — 2 operation(s) for stock furniture.
The Stock Furniture API from Kumospace — 2 operation(s) for stock furniture.
openapi: 3.0.0
info:
title: '@kumo/api Account Stock Furniture API'
contact: {}
servers:
- url: /
tags:
- name: Stock Furniture
paths:
/v1/stockFurniture:
get:
operationId: GetStockFurniture
responses:
'200':
description: A paginated list of stock furniture.
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedResponse_ApiStockFurniture_'
description: 'Get a paginated list of stock furniture. (i.e., well-known furniture
assets that can be placed in a room).
Subsequent pages can be requested with the "next" parameter, which is
returned in the response metadata object if another page exists.'
summary: Get stock furniture.
tags:
- Stock Furniture
security: []
parameters:
- description: If specified, only returns furniture of this type.
in: query
name: category
required: false
schema:
$ref: '#/components/schemas/FurnitureCategory'
- description: Whether to include draft furniture in the results. Defaults to false.
in: query
name: includeDraft
required: false
schema:
default: false
type: boolean
- description: If specified, only returns stock furniture created after this timestamp.
in: query
name: newerThan
required: false
schema:
format: double
type: number
- description: 'An opaque cursor used to request the next page of results.
It is provided in the previous response from the api.'
in: query
name: next
required: false
schema:
type: string
- description: 'The maximum number of results to return. max: 200'
in: query
name: limit
required: false
schema:
default: 30
format: int32
type: integer
maximum: 200
minimum: 1
post:
operationId: CreateStockFurniture
responses:
'201':
description: Created
description: 'Creates a new piece of stock furniture. Can only be called by kumospace
admins.'
summary: Create stock furniture.
tags:
- Stock Furniture
security:
- firebase: []
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateStockFurnitureRequest'
/v1/stockFurnitureVariantGroups:
get:
operationId: GetStockFurnitureVariantGroups
responses:
'200':
description: A paginated list of furniture variations.
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedResponse_ApiStockFurnitureVariantGroups_'
description: 'Get a paginated list of furniture variations. (i.e., grouped well-known
furniture assets that can be placed in a room).
Subsequent pages can be requested with the "next" parameter, which is
returned in the response metadata object if another page exists.'
summary: Get furniture variations.
tags:
- Stock Furniture
security: []
parameters:
- description: If specified, only returns furniture variations of this type.
in: query
name: category
required: false
schema:
$ref: '#/components/schemas/FurnitureCategory'
- description: Whether to include draft furniture variations in the results. Defaults to false.
in: query
name: includeDraft
required: false
schema:
default: false
type: boolean
- description: If specified, only returns stock furniture variations created after this timestamp.
in: query
name: newerThan
required: false
schema:
format: double
type: number
- description: 'An opaque cursor used to request the next page of results.
It is provided in the previous response from the api.'
in: query
name: next
required: false
schema:
type: string
- description: 'The maximum number of results to return. max: 200'
in: query
name: limit
required: false
schema:
default: 30
format: int32
type: integer
maximum: 200
minimum: 1
components:
schemas:
FurnitureBehaviorType.youtube:
enum:
- youtube
type: string
FurnitureBehaviorType.jumpScare:
enum:
- jumpScare
type: string
FurnitureBehaviorType.link:
enum:
- link
type: string
DrinkType:
enum:
- boba
- beer
- champagne
- coffee
- cola
- cookieMitten
- cookieStar
- cookieTree
- cupcakeBlue
- cupcakeGreen
- cupcakePink
- cupcakeRed
- donutBlue
- donutChocolate
- donutGlazed
- donutStrawberry
- juice
- margarita
- redWine
- water
- whiskey
- hawaiianPizza
- plainPizza
- pepperoniPizza
- supremePizza
- veggiePizza
type: string
FurnitureSoundEffectAction:
type: string
enum:
- playSound
- showConfetti
- none
VariantType.generic:
enum:
- generic
type: string
PaginatedResponse_ApiStockFurnitureVariantGroups_:
description: A page of items. Useful for breaking up a large dataset into smaller chunks.
properties:
items:
items:
$ref: '#/components/schemas/ApiStockFurnitureVariantGroups'
type: array
description: The page of items.
metadata:
properties:
count:
type: number
format: double
description: The number of items sent.
next:
type: string
description: 'A pagination cursor. If specified, there is another page of results that
can be requested by appending this value as a query parameter called
"next".'
required:
- count
type: object
description: 'Metadata about the page of items. Contains a pagination cursor called
"next" if there is another page of items.'
required:
- items
- metadata
type: object
additionalProperties: false
FurnitureBehaviorType.instrument:
enum:
- instrument
type: string
FurnitureCategory:
description: The main categories for grouping furniture.
enum:
- seating
- tables
- decor
- plants
- ground
- rugs
- activities
- seasonal
- custom
type: string
FurnitureBehaviorType.staticMusic:
enum:
- staticMusic
type: string
FurnitureBehaviorType.crossword:
enum:
- crossword
type: string
FurnitureBehaviorType.drink:
enum:
- drink
type: string
FurnitureBehaviorType.pictureFrame:
enum:
- pictureFrame
type: string
ApiBehavior:
anyOf:
- properties:
type:
$ref: '#/components/schemas/FurnitureBehaviorType.none'
required:
- type
type: object
- properties:
data:
properties:
allowedDrinks:
items:
$ref: '#/components/schemas/DrinkType'
type: array
required:
- allowedDrinks
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.drink'
required:
- data
- type
type: object
- properties:
data:
properties:
lockAspectRatio:
type: boolean
deprecated: true
openInNewTab:
type: boolean
href:
type: string
height:
type: number
format: double
width:
type: number
format: double
imageUrl:
type: string
required:
- openInNewTab
- height
- width
- imageUrl
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.customImage'
required:
- data
- type
type: object
- properties:
data:
properties:
top:
type: number
format: double
left:
type: number
format: double
height:
type: number
format: double
width:
type: number
format: double
text:
type: string
required:
- top
- left
- height
- width
- text
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.customText'
required:
- data
- type
type: object
- properties:
data:
properties:
audioRange:
anyOf:
- $ref: '#/components/schemas/Range.nearby'
- $ref: '#/components/schemas/Range.room'
autoplay:
type: boolean
loop:
type: boolean
left:
type: number
format: double
top:
type: number
format: double
height:
type: number
format: double
width:
type: number
format: double
playlistId:
type: string
videoId:
type: string
url:
type: string
required:
- audioRange
- autoplay
- loop
- left
- top
- height
- width
- url
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.youtube'
required:
- data
- type
type: object
- properties:
data:
properties:
spaceNames:
items:
type: string
type: array
required:
- spaceNames
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.elevator'
required:
- data
- type
type: object
- properties:
data:
properties:
embedUrl:
type: string
previewUrl:
type: string
whiteboardUrl:
type: string
deprecated: true
required:
- embedUrl
- previewUrl
- whiteboardUrl
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.whiteboard'
required:
- data
- type
type: object
- properties:
data:
properties:
top:
type: number
format: double
left:
type: number
format: double
width:
type: number
format: double
height:
type: number
format: double
url:
type: string
required:
- top
- left
- width
- height
- url
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.spotify'
required:
- data
- type
type: object
- properties:
data:
properties:
genre:
$ref: '#/components/schemas/StaticMusicGenre'
audioRange:
anyOf:
- $ref: '#/components/schemas/Range.nearby'
- $ref: '#/components/schemas/Range.room'
randomizeStart:
type: boolean
url:
type: string
nullable: true
required:
- audioRange
- randomizeStart
- url
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.staticMusic'
required:
- data
- type
type: object
- properties:
data:
properties:
audioRange:
anyOf:
- $ref: '#/components/schemas/Range.nearby'
- $ref: '#/components/schemas/Range.room'
action:
$ref: '#/components/schemas/FurnitureSoundEffectAction'
url:
type: string
required:
- audioRange
- url
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.soundEffect'
required:
- data
- type
type: object
- properties:
data:
properties:
url:
type: string
required:
- url
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.horsepaste'
required:
- data
- type
type: object
- properties:
type:
$ref: '#/components/schemas/FurnitureBehaviorType.chess'
required:
- type
type: object
- properties:
data:
properties:
width:
type: number
format: double
height:
type: number
format: double
left:
type: number
format: double
top:
type: number
format: double
text:
type: string
openInNewTab:
type: boolean
linkType:
$ref: '#/components/schemas/LinkType'
url:
type: string
required:
- openInNewTab
- linkType
- url
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.link'
required:
- data
- type
type: object
- properties:
data:
properties:
width:
type: number
format: double
height:
type: number
format: double
alt:
type: string
imageUrl:
type: string
webPUrl:
type: string
required:
- width
- height
- alt
- imageUrl
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.gif'
required:
- data
- type
type: object
- properties:
data:
allOf:
- properties:
chimeOnEnd:
type: boolean
isOverlay:
type: boolean
isSynced:
type: boolean
initialTime:
type: number
format: double
textSize:
type: number
format: double
left:
type: number
format: double
top:
type: number
format: double
required:
- chimeOnEnd
- isSynced
- initialTime
- textSize
- left
- top
type: object
- properties:
timeRemaining:
type: number
format: double
required:
- timeRemaining
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.timer'
required:
- data
- type
type: object
- properties:
type:
$ref: '#/components/schemas/FurnitureBehaviorType.jstris'
required:
- type
type: object
- properties:
data:
properties:
audioRange:
anyOf:
- $ref: '#/components/schemas/Range.nearby'
- $ref: '#/components/schemas/Range.room'
autoplay:
type: boolean
top:
type: number
format: double
left:
type: number
format: double
width:
type: number
format: double
height:
type: number
format: double
url:
type: string
required:
- audioRange
- autoplay
- top
- left
- width
- height
- url
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.soundCloud'
required:
- data
- type
type: object
- properties:
data:
properties:
width:
type: number
format: double
height:
type: number
format: double
left:
type: number
format: double
top:
type: number
format: double
url:
type: string
text:
type: string
required:
- width
- height
- left
- top
- url
- text
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.jumpScare'
required:
- data
- type
type: object
- properties:
data:
properties:
instrumentType:
$ref: '#/components/schemas/InstrumentType'
required:
- instrumentType
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.instrument'
required:
- data
- type
type: object
- properties:
type:
$ref: '#/components/schemas/FurnitureBehaviorType.broadcast'
required:
- type
type: object
- properties:
data:
allOf:
- properties:
text:
type: string
magnification:
$ref: '#/components/schemas/Dimensions'
required:
- text
- magnification
type: object
- $ref: '#/components/schemas/Dimensions'
type:
$ref: '#/components/schemas/FurnitureBehaviorType.stickyNote'
required:
- data
- type
type: object
- properties:
data:
anyOf:
- $ref: '#/components/schemas/Record_string.never_'
- properties:
gameId:
type: string
puzzle:
$ref: '#/components/schemas/CrosswordPuzzle'
required:
- gameId
- puzzle
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.crossword'
required:
- data
- type
type: object
- properties:
data:
anyOf:
- $ref: '#/components/schemas/Record_string.never_'
- properties:
tutorial:
type: string
required:
- tutorial
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.kiosk'
required:
- data
- type
type: object
- properties:
data:
properties:
openInNewTab:
type: boolean
href:
type: string
left:
type: number
format: double
top:
type: number
format: double
imageUrl:
type: string
required:
- openInNewTab
- left
- top
- imageUrl
type: object
type:
$ref: '#/components/schemas/FurnitureBehaviorType.pictureFrame'
required:
- data
- type
type: object
description: Behavior types, as returned by the api.
ApiStockFurniture:
properties:
variantGroupId:
type: string
description: If the stock furniture is part of a variant group.
releasedAt:
type: number
format: double
description: When the furniture was released, in unix seconds.
isDraft:
type: boolean
description: Whether this furniture is in draft (i.e., not viewable in the room builder).
behavior:
$ref: '#/components/schemas/ApiBehavior'
description: The default behavior for this stock furniture.
allowedBehaviors:
items:
$ref: '#/components/schemas/FurnitureBehaviorType'
type: array
description: 'Behavior that the furniture is allowed to have. Will always include at
least the default behavior.'
thumbnailUrl:
type: string
description: A url with a 120x120 thumbnail of this furniture in the 0° orientation.
imageUrls:
properties:
'0':
$ref: '#/components/schemas/RotatedFurniture'
'90':
$ref: '#/components/schemas/RotatedFurniture'
'180':
$ref: '#/components/schemas/RotatedFurniture'
'270':
$ref: '#/components/schemas/RotatedFurniture'
required:
- '0'
type: object
description: 'Full size images of the stock furniture. The key is the degrees of
clockwise rotation from the default (0°). If a furniture only has one
image at 0°, it cannot not be rotated.'
imageUrl:
type: string
description: A url with the full-size image of this furniture in the 0° orientation.
imgHeight:
type: number
format: double
description: 'The actual height of the furniture image, in pixels. This can be different
from the clickable height to allow for shadows.'
imgWidth:
type: number
format: double
description: 'The actual width of the furniture image, in pixels. This can be different
from the clickable width to allow for shadows.'
height:
type: number
format: double
description: The clickable height of the furniture in pixels, centered in the image.
width:
type: number
format: double
description: The clickable width of the furniture in pixels, centered in the image.
tags:
items:
type: string
type: array
description: Tags used for grouping / filtering this furniture.
elevation:
type: number
format: double
description: 'The elevation (z-index) of this furniture. Higher elevation is drawn on
top of lower elevation.'
category:
$ref: '#/components/schemas/FurnitureCategory'
description: The main category used to group this furniture.
description:
type: string
description: The description of this furniture.
title:
type: string
description: A short title.
id:
type: string
description: A unique id for this stock furniture.
required:
- isDraft
- behavior
- allowedBehaviors
- thumbnailUrl
- imageUrls
- imageUrl
- imgHeight
- imgWidth
- height
- width
- tags
- elevation
- category
- description
- title
- id
type: object
description: Stock furniture that can be placed in a room.
PaginatedResponse_ApiStockFurniture_:
description: A page of items. Useful for breaking up a large dataset into smaller chunks.
properties:
items:
items:
$ref: '#/components/schemas/ApiStockFurniture'
type: array
description: The page of items.
metadata:
properties:
count:
type: number
format: double
description: The number of items sent.
next:
type: string
description: 'A pagination cursor. If specified, there is another page of results that
can be requested by appending this value as a query parameter called
"next".'
required:
- count
type: object
description: 'Metadata about the page of items. Contains a pagination cursor called
"next" if there is another page of items.'
required:
- items
- metadata
type: object
additionalProperties: false
InstrumentType:
type: string
enum:
- banjo
nullable: false
FurnitureBehaviorType.soundEffect:
enum:
- soundEffect
type: string
Range.nearby:
enum:
- nearby
type: string
FurnitureBehaviorType:
enum:
- none
- drink
- customImage
- customText
- youtube
- elevator
- whiteboard
- spotify
- staticMusic
- horsepaste
- chess
- link
- giphy
- soundEffect
- timer
- jstris
- soundcloud
- jumpScare
- instrument
- broadcast
- stickyNote
- crossword
- kiosk
- pictureFrame
type: string
DbStockFurnitureVariantGroups:
allOf:
- properties:
isDeleted:
type: boolean
isDraft:
type: boolean
category:
$ref: '#/components/schemas/FurnitureCategory'
required:
- isDraft
- category
type: object
- anyOf:
- properties:
variants:
items:
$ref: '#/components/schemas/ColorVariantType'
type: array
type:
$ref: '#/components/schemas/VariantType.color'
required:
- variants
- type
type: object
- properties:
variants:
items:
$ref: '#/components/schemas/GenericVariantType'
type: array
type:
$ref: '#/components/schemas/VariantType.generic'
required:
- variants
- type
type: object
Range.room:
enum:
- room
type: string
ApiCreateStockFurnitureRequest:
properties:
isDraft:
type: boolean
description: 'Whether this furniture is in draft (i.e., not viewable in the room builder).
Defaults to false.'
behavior:
$ref: '#/components/schemas/ApiBehavior'
description: The behavior for this piece of furniture.
allowedBehaviors:
items:
$ref: '#/components/schemas/FurnitureBehaviorType'
type: array
description: 'Behavior that the furniture is allowed to have. Must always include at
least the default behavior.'
thumbnailUrl:
type: string
description: 'A url containing a 120x120 thumbnail of the furniture in the 0°
orientation.'
pattern: ^https://
imageUrls:
properties:
'0':
$ref: '#/components/schemas/RotatedFurniture'
'90':
$ref: '#/components/schemas/RotatedFurniture'
'180':
$ref: '#/components/schemas/RotatedFurniture'
'270':
$ref: '#/components/schemas/RotatedFurniture'
required:
- '0'
type: object
description: 'Full size images of the stock furniture. The key is the degrees of
clockwise rotation from the default (0°). If a furniture only has one
image at 0°, it cannot not be rotated.'
tags:
items:
type: string
type: array
description: Tags used for grouping / filtering this furniture.
elevation:
type: number
format: double
description: 'The elevation (z-index) of this furniture. Higher elevation is drawn on
top of lower elevation. If unspecified, uses 5 for non-rugs and 0 for
rugs.'
minimum: 0
maximum: 10
category:
$ref: '#/components/schemas/FurnitureCategory'
description: The main category used to group this furniture.
description:
type: string
description: The description of the stock furniture.
minLength: 1
title:
type: string
description: A short title.
minLength: 1
required:
- behavior
- allowedBehaviors
- thumbnailUrl
- imageUrls
- tags
- category
- description
- title
type: object
description: A request to add a new piece of stock furniture to the furniture gallery.
FurnitureBehaviorType.customText:
enum:
- customText
type: string
StaticMusicGenre:
enum:
- dance
- piano
- stereo
type: string
FurnitureBehaviorType.stickyNote:
enum:
- stickyNote
type: string
FurnitureBehaviorType.chess:
enum:
- chess
type: string
FurnitureBehaviorType.gif:
enum:
- giphy
type: string
FurnitureBehaviorType.whiteboard:
enum:
- whiteboard
type: string
ColorVariantType:
properties:
colors:
items:
type: string
type: array
description: The name of the space containing the room to duplicate.
minLength: 1
maxLength: 2
name:
type: string
stockFurnitureId:
type: string
required:
- colors
- name
- stockFurnitureId
type: object
ApiStockFurnitureVariantGroups:
allOf:
- $ref: '#/components/schemas/DbStockFurnitureVariantGroups'
- properties:
title:
type: string
description: Pulled from first variant
releasedAt:
type: number
format: double
description: Pulled from the most recent furniture variation
id:
type: string
required:
- title
- id
type: object
FurnitureBehaviorType.spotify:
enum:
- spotify
type: string
Dimensions:
properties:
width:
type: number
format: double
verticalShift:
type: number
format: double
horizontalShift:
type: number
format: double
height:
type: number
format: double
required:
- width
- height
type: object
FurnitureBehaviorType.none:
enum:
- none
type: string
FurnitureBehaviorType.horsepaste:
enum:
- horsepaste
type: string
FurnitureBehaviorType.jstris:
enum:
- jstris
type: string
FurnitureBehaviorType.elevator:
enum:
- elevator
# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kumospace/refs/heads/main/openapi/kumospace-stock-furniture-api-openapi.yml