--- tags: api/syscall references: - plug-api/syscalls/index.ts - client/plugos/syscalls/index.ts - client/data/object_index.ts --- The `index` API provides functions for interacting with SilverBullet's [[Object Index]], including query collections used by [[Space Lua/Integrated Query]], schema introspection, ad-hoc Markdown indexing, and direct object-index operations. The main query API is `index.objects`; the other collection functions are mostly convenient filters over the same index. ## index.aggregates `index.aggregates()` Returns stored aggregate records as a query collection. ## index.aspiringPages `index.aspiringPages()` Returns linked but not yet created pages as a query collection. ## index.comments `index.comments()` Returns all indexed inline comment objects as a query collection. Equivalent to index.tag "comment". ## index.contentPages `index.contentPages(tagName?)` Returns non-meta pages, optionally filtered by an additional tag, as a query collection. ## index.defineTag `index.defineTag(tagDefinition)` Defines or updates a tag and its Lua metatable. ## index.deleteObject `index.deleteObject(page, tag, ref)` Deletes an indexed object identified by page, tag, and reference. ## index.describeSchema `index.describeSchema()` Returns raw JSON Schemas for every configured tag that declares one. ## index.documents `index.documents()` Returns all indexed documents as a query collection. ## index.ensureFullIndex `index.ensureFullIndex()` Ensures the complete object index is available and current. ## index.extractFrontmatter `index.extractFrontmatter(text, options?)` Extracts and optionally transforms frontmatter and top-level tags in Markdown text. **Parameters:** - `text` (`string`) — Markdown text to inspect. - `options?` (`table`) — Optional frontmatter and tag removal settings. **Returns:** - `table` — Parsed frontmatter and the optionally transformed text. ## index.getObjectByRef `index.getObjectByRef(page, tag, ref)` Returns an indexed object identified by page, tag, and reference. ## index.headers `index.headers(tagName?)` Returns all headers, optionally filtered by an additional tag, as a query collection. ## index.indexObjects `index.indexObjects(page, objects)` Indexes a collection of objects for a page. ## index.items `index.items(tagName?)` Returns all list items, optionally filtered by an additional tag, as a query collection. ## index.links `index.links()` Returns all indexed links as a query collection. ## index.markdown `index.markdown(text, pageMeta?)` Indexes Markdown text in memory and returns the objects extracted from it. **Parameters:** - `text` (`string`) — Markdown text to index. - `pageMeta?` (`table`) — Optional page metadata used during indexing. **Returns:** - `table` — Objects extracted from the Markdown text. ## index.metaPages `index.metaPages()` Returns all meta pages as a query collection. ## index.objects `index.objects(tagName)` Returns objects carrying a tag as a query collection. ## index.pages `index.pages(tagName?)` Returns all pages, optionally filtered by an additional tag, as a query collection. ## index.paragraphs `index.paragraphs(tagName?)` Returns indexed paragraphs, optionally filtered by an additional tag, as a query collection. ## index.patchFrontmatter `index.patchFrontmatter(text, patch)` Applies a table of updates to the frontmatter in Markdown text. **Parameters:** - `text` (`string`) — Markdown text to update. - `patch` (`table`) — Frontmatter keys and values to merge. **Returns:** - `string` — Markdown text with updated frontmatter. ## index.previewProcessedObjects `index.previewProcessedObjects(page, objects)` Runs the indexing pipeline without writing and returns processed tag/object pairs. ## index.queryLuaObjects `index.queryLuaObjects(tag, query, scopedVariables?)` Executes a structured Lua collection query against indexed objects. ## index.reindexSpace `index.reindexSpace()` Rebuilds the object index for the entire space. ## index.relations `index.relations()` Returns all indexed relations as a query collection. ## index.resolveAnchor `index.resolveAnchor(name, page?)` Resolves a named anchor to its host page, tag, and source range. **Parameters:** - `name` (`string`) — Anchor name without the leading dollar sign. - `page?` (`string`) — Optional page to restrict the lookup to. **Returns:** - `table` — Resolution result including success or missing/duplicate reason. ## index.subPages `index.subPages(pageName)` Returns pages nested below a page name as a query collection. ## index.tables `index.tables(tagName?)` Returns indexed table rows, optionally filtered by an additional tag, as a query collection. ## index.tag `index.tag(tagName)` Returns objects carrying a tag as a query collection. ## index.tagSchema `index.tagSchema(tagName)` Returns the raw JSON Schema for a tag, or nil when none is declared. ## index.tags `index.tags()` Returns all indexed tag objects as a query collection. ## index.tasks `index.tasks(tagName?)` Returns all tasks, optionally filtered by an additional tag, as a query collection. ## index.validateObjects `index.validateObjects(page, objects)` Validates objects for a page and returns the first validation error, if any. ## Integrated Query examples Query one page: ${query[[from index.pages() limit 1]]} Query three sub-pages below the API page: API/asset API/clientStore API/codeWidget Render three incomplete tasks: * [ ] [[Outline Stress Test@1458]] A task as ordered's child * [ ] [[Outline Stress Test@1559]] Task inside ordered child and now what will happen when this starts to wrap. Oh it looks nice! * [ ] [[Attribute@1612]] Task with an attribute, I’m so cool Ad-hoc index a Markdown fragment and select its list items: ${query[[ from index.markdown("* Item 1\n* [ ] Task 1") where _.tag == "item" ]]} `index.extractFrontmatter` can inspect and optionally transform frontmatter and top-level tags. For example, this returns the frontmatter of the current page: ${(index.extractFrontmatter(editor.getText())).frontmatter}