Skip to content
On this page

Description

A description is an object that "describes" what your collection is and how it should be represented on the UI. It is a JSON Schema subset with some additions.

ts
export type Description<TDescription extends Description=any> = {
  $id: CollectionId
  title?: string

  // unused
  categories?: Array<string>

  system?: boolean
  inline?: boolean

  preferred?: Record<string, Partial<TDescription | Description>>

  alias?: string
  icon?: string
  options?: CollectionOptions<TDescription>

  indexes?: ReadonlyArray<string>
  defaults?: Record<string, any>

  // modifiers
  owned?: boolean
  immutable?: boolean|ReadonlyArray<string>
  alwaysOwned?: boolean

  // takes an array of something
  route?: ReadonlyArray<string>
  presets?: ReadonlyArray<CollectionPresets>
  required?: ReadonlyArray<keyof TDescription['properties']>
  table?: ReadonlyArray<keyof TDescription['properties']>
  tableMeta?: ReadonlyArray<keyof TDescription['properties']>

  filtersPresets?: Record<string, FiltersPreset<TDescription>>
  freshItem?: Partial<Record<keyof TDescription['properties'], any>>

  form?: ReadonlyArray<keyof TDescription['properties']>|Record<keyof TDescription['properties'], Array<string>>
  writable?: ReadonlyArray<keyof TDescription['properties']>
  filters?: ReadonlyArray<keyof TDescription['properties']|{
    property: keyof TDescription['properties']
    default: string
  }>

  layout?: Layout
  formLayout?: Partial<FormLayout<TDescription>>
  tableLayout?: Partial<TableLayout<TDescription>>

  // actions
  actions?: CollectionActions<TDescription>
  individualActions?: CollectionActions<TDescription>

  search?: {
    active: boolean
    placeholder?: string
  }

  properties: Record<Lowercase<string>, CollectionProperty>
}

Defining a description

You can use defineDescription to define a description with strong typing.

Last updated: