Appearance
Extension SDK API reference
HostApi
ts
const hostApi = createHostConnection()getElements
ts
getElements({
select?: ElementSelect,
where?: ElementFilter
}): Promise<QueryPick<ElementData, ElementSelect>[]>Filter by ElementFilter and select the returned properties with ElementSelect which defaults to DefaultSelect`
Return type matches ElementSelect
getElementById
ts
getElementById({
id: string,
select?: ElementSelect
}): Promise<QueryPick<ElementData, ElementSelect>>Return type matches ElementSelect
getSpaces
ts
getSpaces({
select?: SpaceSelect,
where?: SpaceFilter
}): Promise<QueryPick<SpaceData, SpaceSelect>[]>Filter by SpaceFilter and select the returned properties with SpaceSelect which defaults to DefaultSelect
Return type matches SpaceSelect
getSpaceById
ts
getSpaceById({
id: string,
select?: SpaceSelect
}): Promise<QueryPick<SpaceData, SpaceSelect>>Return type matches SpaceSelect
getLayout
ts
getLayout({
select?: BaseSelect
}): Promise<QueryPick<BaseData, BaseSelect>>Return type matches BaseSelect
Types
DefaultSelect
ts
type DefaultSelect = { id: true; type: true }BaseSelect
ts
interface BaseSelect {
id?: boolean
type?: boolean
name?: boolean
customId?: boolean
customAttributes?: boolean | Record<string, boolean>
dimensions?:
| boolean
| {
width?: boolean
length?: boolean
height?: boolean
}
labelPoint?: boolean
contour?: boolean
boundingBox?: boolean
boundingBoxContour?: boolean
}SpaceSelect
ts
export interface SpaceSelect extends BaseSelect {
category?: boolean
subCategory?: boolean
isExternal?: boolean
area?: boolean
seatCapacity?: boolean
elements?: ElementQuery
}ElementSelect
ts
export interface ElementSelect extends BaseSelect {
product?: ProductSelect | boolean
isExternal?: boolean
transform?: boolean
localTransform?: boolean
localBoundingBox?: boolean
}BaseFilter
ts
interface BaseFilter {
id?: StringComparator
type?: StringComparator
name?: StringComparator
customId?: StringComparator
customAttributes?: Record<
string,
StringComparator | NumberComparator | BooleanComparator | NullComparator
>
dimensions?: {
width?: NumberComparator
length?: NumberComparator
height?: NumberComparator
}
}ElementFilter
Type
ts
export interface ElementFilter extends BaseFilter {
/** for assets inherited from product */
category?: StringComparator
/** for assets inherited from product */
subCategory?: StringComparator
/** find elements at specific location */
at?: Vector2
/** find elements within rectangle */
within?: { min: Vector2; max: Vector2 }
isExternal?: BooleanComparator
product?: ProductFilter
}Example
Using StringComparator
ts
{
where: {
subCategory: 'workstation'
}
}Using NullComparator
ts
// return all entities that have a value set for the custom attribute 'employee-id'
{
where: { customAttributes: { 'employee-id': { null: false }} }
}SpaceFilter
Type
ts
export interface SpaceFilter extends BaseFilter {
category?: StringComparator
subCategory?: StringComparator
seatCapacity?: NumberComparator
/** find spaces at specific location */
at?: Vector2
/** find spaces within rectangle */
within?: { min: Vector2; max: Vector2 }
isExternal?: BooleanComparator
area?: NumberComparator
}Example
Using NumberComparator
ts
{
where: { area: { gte: 50 }, seatCapacity: { gte: 12 } }
}Using BooleanComparator
ts
{
where: {
isExternal: true
}
}SpaceQuery
ts
export type SpaceQuery = {
select?: SpaceSelect
where?: SpaceFilter
}StringComparator
ts
export type StringComparator =
| string
| { eq: string }
| { neq: string }
| { in: string[] }
| { nin: string[] }
/** case-insensitive partial match */
| { contains: string }NumberComparator
ts
export type NumberComparator =
| number
| { eq: number }
| { neq: number }
| { in: number[] }
| { nin: number[] }
| { gt: number }
| { gte: number }
| { lt: number }
| { lte: number }BooleanComparator
ts
export type BooleanComparator = boolean | { eq: boolean } | { neq: boolean }NullComparator
Can be used to return entities depending on whether the field has a value or not
ts
export type NullComparator = { null: boolean }
