Extensions
What extensions are
Extensions add optional features on top of the specification. Each one solves a problem that some companies and personal agents have and others don't, so it stays out of the core protocol that everyone implements.
Supporting an extension is always optional. A personal agent or company that doesn't support one ignores it, and the two sides still work together under the specification alone.
How they work
The rules are in the specification's Extensions section. In short:
- A company lists the extensions it supports in
extensionsin itspoppy.json, with each extension's settings, such as an endpoint. - A personal agent lists the extensions it supports in
extensionsin its client metadata document, so the company knows what it can use. - Each entry has a
version, the extension's major version. It changes only when an update would break existing implementations. - Extensions defined on this site have plain names, such as
operations. Anyone can define their own, named with a domain they control, such asexample.com/gift-wrap. - A company that won't do something without an extension refuses that request with
extension_required.
Extensions
| Extension | Version | What it adds |
|---|---|---|
1 | The personal agent confirms an action before the company performs it. Approval covers the exact terms, the action has one record across channels, and a retry never performs it twice. |