Skip to content

Commit 36b5490

Browse files
author
Faxbot Agent
committed
docs(plugins): document traits in manifest schema; update RingCentral example to traits-first; add TODO to convert all examples
1 parent 9eda9a2 commit 36b5490

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

TODO.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,12 @@ Purpose: While auditing AGENTS.md against the codebase and syncing the Admin Con
7676
- Show Tools → Plugins only when `FEATURE_V3_PLUGINS=true`; ensure no Plugin Builder routes or mentions remain in UI.
7777
- Validate curated registry parity with server `/plugin-registry`; ensure demo mocks mirror current curated entries.
7878
- Security passes: manifests respect allowed domains, timeouts, HTTPS in HIPAA; redact secrets in UI.
79-
- Add redaction policy in manifest runtime to scrub sensitive fields from any UI‑surfaced debug output.
79+
- Add redaction policy in manifest runtime to scrub sensitive fields from any UI‑surfaced debug output.
80+
81+
- Update example manifests to traits‑first
82+
- Goal: all example manifests (faxplus, ringcentral, interfax, sfax, pamfax, dropbox_fax) include a top‑level `traits` block that aligns with `config/provider_traits.json` (kind, requires_ghostscript, requires_tiff, supports_inbound, inbound_verification, needs_storage, outbound_status_only).
83+
- Done: RingCentral example in docs uses traits‑first.
84+
- TODO: update remaining examples and add validation in dev‑kit to warn when `traits` is missing.
8085

8186
- API Admin Actions & Terminal tests
8287
- Add tests for `GET /admin/actions` and `POST /admin/actions/run` (gating via `ENABLE_ADMIN_EXEC`, allowlist, backend gating, timeout). New file: `api/tests/test_admin_actions.py`.

docs/plugins/index.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,22 @@ These example manifests live in the repo and can be used as starting points.
6161
- id `pamfax` — PamFax
6262
- id `dropbox_fax` — Dropbox Fax
6363

64-
=== "RingCentral example"
64+
=== "RingCentral example (traits-first)"
6565

6666
```json
6767
{
6868
"id": "ringcentral",
6969
"name": "RingCentral Fax API",
7070
"auth": { "scheme": "bearer" },
71+
"traits": {
72+
"kind": "cloud",
73+
"requires_ghostscript": true,
74+
"requires_tiff": false,
75+
"supports_inbound": false,
76+
"inbound_verification": "none",
77+
"needs_storage": false,
78+
"outbound_status_only": false
79+
},
7180
"actions": {
7281
"send_fax": {
7382
"method": "POST",

docs/plugins/manifest-http.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ Faxbot supports a lightweight outbound provider type defined by a JSON manifest.
3333
:material-key: `auth`
3434
: `{ scheme: none|basic|bearer|api_key_header|api_key_query, ... }`
3535

36+
:material-shield-check: `traits`
37+
: Optional traits that describe runtime needs and behavior. Traits override defaults in `config/provider_traits.json`.
38+
Example keys: `kind` (`cloud`|`self_hosted`), `requires_ghostscript`, `requires_tiff`, `supports_inbound`, `inbound_verification` (`hmac`|`none`|`internal_secret`), `needs_storage`, `outbound_status_only`.
39+
3640
:material-domain: `allowed_domains`
3741
: Array of hostnames
3842

0 commit comments

Comments
 (0)