Skip to content

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 }