Plugin API reference
The SDK’s types.d.ts is the full reference, with every signature and comment. This page lists the main objects and methods. The API is still changing during the beta; check the declarations that match your app version.
Plugin classes
AppPlugin for the workspace, CollectionPlugin for one collection, DynCollectionPlugin for a dynamic collection. onLoad() is where you register things; onUnload() is where you clean up. All of them have ui, data, events, ws and window; collection plugins also have collection, properties and views.
Data
| Method | Returns |
|---|---|
this.data.getRecord(guid) |
A record, or null |
this.data.getAllRecords() |
Every record in the workspace |
await this.data.getAllCollections() |
The collections |
this.data.getActiveUsers() |
The workspace’s users |
await this.data.searchByQuery(query, max) |
Matching records and lines |
this.data.getPluginByGuid(guid) |
A plugin or collection object |
const results = await this.data.searchByQuery("@task @overdue", 50);
for (const record of results.records) console.log(record.getName());
In a collection plugin, await this.collection.getAllRecords() loads its records and this.collection.createRecord(title) makes a new one, returning its guid.
Records
A record is a page. guid, getName(), getCreatedAt(), getUpdatedAt(), getAsMarkdown(), getSubPageOf() and setSubPageOf(guid), and await record.getLineItems() for its lines.
| Reader | Returns |
|---|---|
record.number(name), record.text(name) |
A number or text, or null |
record.choice(name) |
The choice id, or null |
record.numbers(name), record.texts(name) |
All values of a multi-value property |
record.users(name) |
User objects |
record.linkedRecord(name), record.linkedRecords(name) |
One linked record, or all of them |
Choices have an id and a label: PluginProperty.choiceLabel() gives the label, setChoice() takes the label. Setters are asynchronous and return whether they succeeded.
Lines
A PluginLineItem knows its parent and children, its text segments and its task status. setSegments() replaces the content, setTaskStatus() changes the checkbox. A line’s text is made of segments, including references; replace only the segments you mean to change.
Properties and views
this.properties.formula(name, fn), render(), customSort() and the choice hooks are described in Collection plugins, together with this.views.register(name, fn) and the view hooks onLoad, onRefresh and onDestroy. await this.views.getAllRecordsInView(name) returns a view’s records with its filter and sort applied.
Interface
this.ui.addCommandPaletteCommand(), addStatusBarItem(), addToaster(), addSidebarWidget(), registerCustomPanelType(), plus buttons, icons and tooltips that follow the theme. this.ui.getActivePanel() returns the active panel, or null, and a panel may have no record. Use the text APIs for anything a user typed; only pass HTML you built yourself to the HTML APIs.
Desktop window APIs only exist in the desktop app; check before calling them.