V8 Central — Product & Technical Spec
  1. Docs
  2. Modules
  3. Blueprints

#Blueprints

In ServerAvatar a blueprint is a saved WordPress setup: plugins, themes, cleanup options, locale, permalinks, debug flags. It's applied to a WordPress site. It is not a server template. V7 only OSS API

#Storage (Central) V7 only

V7 table wordpress_blueprints (added 2026-05): user_id (or hosting_user_id), name, selected_plugins (json), selected_themes (json), custom_theme_plugins (json, uploaded zips), remove_hello_world, remove_sample_page, delete_all_themes, delete_all_plugins, delete_unneeded_core_file, language, timezone, date_format, time_format, se_indexing_disable, organize_upload_folders, permalink_structure, debug_mode, debug_log, debug_error.

V7 endpointPurpose
GET /wordpress-blueprints, GET /organizations/{org}/wordpress-blueprintsList
POST /wordpress-blueprintsCreate
GET/PATCH/DELETE /wordpress-blueprints/{id}Show / update / delete
POST /wordpress-blueprints/custom-theme-plugin/uploadUpload a custom plugin/theme zip (served back through a signed URL)
GET /wordpress-blueprints/themes, /pluginsSearch the public WordPress.org directory

#Deployment (OSS) OSS API

  • POST /central/addons/applications/{application}/wordpress/blueprint → 202 with a run.
  • The body is the whole saved blueprint (Central stores blueprints, as V7 did): selected_plugins / selected_themes ([{slug, name?, activate?}]), custom_theme_plugins ([{label?, link (https), type: custom-plugin|custom-theme, activate?}]), all flags above, and an optional script (≤ 64 KB, run as the site owner, never root, 10-minute limit).
  • Poll GET /central/addons/runs/{run}: queued → running → succeeded|failed.
  • Result: steps: [{step, status: ok|failed, message?}], completed, failed, script exit_code, output (last 64 KB), timed_out. A failed step doesn't stop the run: the run is succeeded with completed: false. The UI must show per-step results, not only the run status.
  • Requirements: the WP Toolkit add-on installed on the server (404 addon_not_installed) and licensed (403 addon_licence_required). WordPress routes on a non-WordPress or not-yet-active site → 404.
  • Errors: 422 addon_command_failed (add-on refused, details under addon), 502 addon_bad_output, 504 addon_timed_out (30 min for queued runs).
  • These routes answer 404 to anyone but Central (even OSS administrators).
Example: a blueprint run (OSS Central-only add-on route)
POST https://api.<panel-host>/api/central/addons/applications/42/wordpress/blueprint
Authorization: Bearer sv_central_…
{"selected_plugins": [{"slug": "wordpress-seo", "activate": true}],
 "selected_themes": [{"slug": "astra", "activate": true}],
 "remove_hello_world": true, "permalink_structure": "/%postname%/",
 "language": "de_DE", "timezone": "Europe/Berlin"}

202 {"data": {"id": 7, "application_id": 42, "addon": "wp-toolkit",
              "status": "queued", …}}

GET https://api.<panel-host>/api/central/addons/runs/7
200 {"data": {"id": 7, "status": "succeeded", "http_status": 200,
              "result": {"completed": false, "failed": 1,
                         "steps": [{"step": "plugins", "status": "ok"},
                                   {"step": "theme", "status": "failed", "message": "…"}]}}}

status: succeeded with completed: false means the run finished but a step failed. Show it as a partial success.

#Screens

ScreenContent
List (/blueprints)Cards/table: name, plugins/themes count, last used, used on N sites Demo UI only (usage stats need Central to record runs Missing)
Create / editName, theme picker + plugin picker (search WordPress.org via the backend), custom uploads, cleanup toggles, locale/timezone/date/time format, permalinks, debug flags, optional script (with a warning)
Deploy dialogServer → WordPress site (from OSS GET /applications, filtered to WordPress) → confirm → progress
Run resultPer-step list ok/failed, script output (collapsible), retry

Also: OSS's create-application flow for WordPress can't take a blueprint directly. Applying a blueprint at site creation means create site → wait active → run blueprint Assumption.

ServerAvatar V8 Central · prepared by central-app-2 (Pair 2 frontend) for Bhavik Jethwa · nothing in this spec is implemented yet · Built 2026-10-03 12:35 UTC