Skip to content

Commit f6b9985

Browse files
author
Faxbot Agent
committed
docs(plugins): add single traits-first dynamic code block (jsonc) showing full manifest with inline comments
1 parent 9afd58d commit f6b9985

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

docs/plugins/manifest-http.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,77 @@ Faxbot supports a lightweight outbound provider type defined by a JSON manifest.
4747
: - `send_fax`: `{ method, url, headers, body: { kind: json|form|multipart|none, template }, path_params: [], response: { job_id, status, error?, status_map? } }`
4848
- `get_status` (optional): `{ ... }`
4949

50+
### Full example (traits‑first)
51+
52+
```jsonc
53+
{
54+
// id: Provider ID (e.g., "acmefax")
55+
"id": "ringcentral",
56+
57+
// name: Display name
58+
"name": "RingCentral Fax API",
59+
60+
// auth: how requests are authenticated
61+
// scheme: none | basic | bearer | api_key_header | api_key_query | ...
62+
"auth": { "scheme": "bearer" },
63+
64+
// traits: runtime needs/behavior; overrides defaults in config/provider_traits.json
65+
// kind: "cloud" | "self_hosted"
66+
// requires_ghostscript, requires_tiff, supports_inbound, needs_storage (true|false)
67+
// inbound_verification: "hmac" | "none" | "internal_secret"
68+
// outbound_status_only: true|false
69+
"traits": {
70+
"kind": "cloud",
71+
"requires_ghostscript": true,
72+
"requires_tiff": false,
73+
"supports_inbound": false,
74+
"inbound_verification": "none",
75+
"needs_storage": false,
76+
"outbound_status_only": false
77+
},
78+
79+
// allowed_domains: explicit host allowlist to reduce SSRF risk
80+
"allowed_domains": ["platform.ringcentral.com"],
81+
82+
// timeout_ms: request timeout in milliseconds
83+
"timeout_ms": 15000,
84+
85+
// actions: outbound capabilities.
86+
// send_fax: method/url/headers and body; response maps provider fields
87+
// get_status: optional lookup for a given fax/job id
88+
"actions": {
89+
"send_fax": {
90+
"method": "POST",
91+
"url": "https://platform.ringcentral.com/restapi/v1.0/account/~/extension/~/fax",
92+
"headers": {},
93+
"body": {
94+
// kind: json | form | multipart | none
95+
"kind": "multipart",
96+
// template variables available: {{to}}, {{from}}, {{file}}, {{file_url}}, {{settings}}, {{creds}}
97+
"template": "request={\\"to\\":[{\\"phoneNumber\\":\\"{{to}}\\"}]}&attachment={{file}}"
98+
},
99+
"path_params": [],
100+
"response": {
101+
// job id path in provider response
102+
"job_id": "id",
103+
// optional status mapping
104+
"status": "messageStatus",
105+
"status_map": { "Queued": "queued", "Processing": "in_progress", "Sent": "SUCCESS", "Error": "FAILED" },
106+
// optional error field
107+
"error": "error"
108+
}
109+
},
110+
"get_status": {
111+
"method": "GET",
112+
"url": "https://platform.ringcentral.com/restapi/v1.0/account/~/message-store/{{fax_id}}",
113+
"headers": {},
114+
"body": { "kind": "none", "template": "" },
115+
"response": { "status": "messageStatus" }
116+
}
117+
}
118+
}
119+
```
120+
50121
---
51122

52123
## Templates

0 commit comments

Comments
 (0)