# Reference

> The normative surface — manifest schema, bridge namespace, package format, CLI, error codes and the compatibility baseline.

Source: https://miniapp.sollar.com/reference/

---

Everything in this section is **normative**. If the documentation and the validator disagree, the
validator is right and this page is a bug — report it.

| Page | What it fixes |
|---|---|
| [Manifest](/reference/manifest/) | Every field of `manifest.json`, and what the validator rejects |
| [Bridge API](/reference/bridge-api/) | The complete `sollar.*` namespace |
| [Package format](/reference/package-format/) | `.sapp` layout, signing, updates |
| [CLI](/reference/cli/) | `sollar` commands and flags |
| [Errors](/reference/errors/) | Every error code the bridge can throw |
| [Compatibility baseline](/reference/baseline/) | The JavaScript and CSS floor you can rely on |
| [Mini app ↔ superapp API](/reference/api/) | The contract between your code and Sollar |

## Two things that are true everywhere

**The client is not an authority.** Anything `sollar.*` hands your JavaScript — an identity, a room,
a permission state — is a hint for drawing UI. Authorisation happens on your server, against a token,
every time. This is the single most common way platforms in this category get breached, and it is
the reason the warning is repeated on nearly every page here rather than stated once.

**The signed manifest is the contract.** Permissions, network destinations and agent actions are
declared in a file inside a signed package. Nothing your server sends at runtime can widen them.
A compromised backend cannot grant itself a permission, reach a new host, or invent an agent tool.

## Versioning

The bridge is versioned independently of the Sollar client. `sollar.version` returns the bridge
version at runtime; `sollar.supports('<method>')` answers whether a method exists before you call it.

```js
if (sollar.supports('actions.elicit')) {
  // use it
}
```

Feature detection over version comparison. Version numbers tell you what shipped; `supports()` tells
you what this device actually has, which is the question you are really asking.

## Stability

| Marker | Meaning |
|---|---|
| *(unmarked)* | Stable. Breaking changes require a major bridge version and a deprecation window. |
| `Preview` | Shipping, shape may still change. Safe to try, not safe to depend on. |
| `Planned` | Specified here, not implemented. Calling it throws `ERR_NOT_IMPLEMENTED`. |

This documentation set is itself pre-release: the platform described here is specified but not yet
built. Treat every page as a design contract, not as an account of running software.
