Plugin Bootstrap JSON and Canonical Settings¶
FAXBOT_CONFIG_PATH (default config/faxbot.config.json) identifies the legacy plugin JSON bootstrap input. Its version 1 construction format remains accepted when canonical installation state is absent. Conflicting environment/JSON selections are rejected for explicit reconciliation; startup does not silently pick one.
Structure
{
"version": 1,
"providers": {
"outbound": { "plugin": "phaxio", "enabled": true, "settings": {} },
"inbound": { "plugin": null, "enabled": false, "settings": {} },
"auth": { "plugin": null, "enabled": false, "settings": {} },
"storage": { "plugin": "local", "enabled": true, "settings": {} }
}
}
Existing installations¶
Once initialized, canonical desired/active revisions in the database are authoritative. Editing this JSON file or .env and restarting does not import a new runtime selection. Use System → Developer → Provider plugins to edit the desired revision and inspect active/pending status. Pending changes require every API worker to stop and the installation restart successfully.
GET /plugins/{id}/configreturns sanitized desiredenabled,settings,roleand_metaidentity/apply state.PUT /plugins/{id}/configaccepts intendedenabled,settings,roleand the editor's loadedexpected_revision_id. Use a role of outbound, inbound or storage as supported by that provider.- Omit unchanged fields/masked secrets. Enter replacements or explicit clears deliberately; do not write display masks as credentials.
- On 409, retain the draft and explicitly reload/review the desired revision before another write.
- Inspect returned
_meta.apply_stateandpending_fields; a successful write does not necessarily mean all desired fields are active.
The compatibility path returned by a plugin write identifies the configured legacy path; it does not mean that file is the authoritative runtime store. A backup of that JSON alone cannot recover the database, encrypted provider profiles, original installation key or document artifacts.
Installed manifest JSON remains a provider definition. It is captured with accepted work; changing a file does not rewrite an already accepted job's provider frame. See manifest installation and Settings.