Skip to content
On this page

Module Hub API ​

The Module Hub is the operational surface for installing, auditing, and updating modules in Pubflow Platform.

Use it when you need to know what is installed, what changed, and whether a module is ready to run safely.

How to read this page ​

Each route is described as a plain operation so the admin workflow is easier to follow.

What it does ​

  • Discovers module manifests
  • Runs dry-run plans before execution
  • Installs or updates module components in order
  • Tracks registry state and audit events
  • Detects drift and checksum changes
  • Uses a runtime lock to avoid collisions

Route map ​

MethodPathPurpose
GET/api/v1/modules/install/statusCheck whether the hub tables exist
POST/api/v1/modules/install/dry-runSimulate hub installation
POST/api/v1/modules/install/runInstall the hub tables
GET/api/v1/modules/install/Discover available modules
GET/api/v1/modules/install/:module_id/statusInspect module health and drift
GET/api/v1/modules/install/:module_id/registryRead the registry for one module
POST/api/v1/modules/install/:module_id/dry-runPlan a module install
POST/api/v1/modules/install/:module_id/runExecute a module install
POST/api/v1/modules/install/:module_id/update/dry-runPlan targeted updates
POST/api/v1/modules/install/:module_id/updateRun targeted updates

Route details ​

Hub status and install ​

GET /api/v1/modules/install/status ​

Check whether the hub tracking tables exist.

Auth: admin/superadmin.

POST /api/v1/modules/install/dry-run ​

Simulate creating the hub tables.

Auth: admin/superadmin.

POST /api/v1/modules/install/run ​

Create the hub tables.

Auth: admin/superadmin.

Discovery ​

GET /api/v1/modules/install/ ​

Discover available modules by manifest.

Auth: admin/superadmin.

Module inspection ​

GET /api/v1/modules/install/:module_id/status ​

Inspect installation state, drift, and component health.

Auth: admin/superadmin.

GET /api/v1/modules/install/:module_id/registry ​

Read the registry and audit trail for one module.

Auth: admin/superadmin.

Module execution ​

POST /api/v1/modules/install/:module_id/dry-run ​

Plan a module install before touching the database.

Auth: admin/superadmin.

POST /api/v1/modules/install/:module_id/run ​

Execute the module install.

Auth: admin/superadmin.

Module updates ​

POST /api/v1/modules/install/:module_id/update/dry-run ​

Plan targeted updates for drifted or outdated components.

Auth: admin/superadmin.

POST /api/v1/modules/install/:module_id/update ​

Run targeted updates.

Auth: admin/superadmin.

How to use it ​

  1. Check hub status first.
  2. Run a dry-run to see what will happen.
  3. Review the plan and component order.
  4. Execute the install or update only when the plan looks safe.
  5. Inspect the registry and events after the run.

Example: check hub status ​

http
GET /api/v1/modules/install/status

Example response:

json
{
  "success": true,
  "data": {
    "installed": true,
    "tables": ["module_hub_registry", "module_hub_events"]
  }
}

Example: dry-run a module install ​

http
POST /api/v1/modules/install/blog/dry-run
Content-Type: application/json

{
  "target": "all",
  "runtime_scope": "flowless-core",
  "verify_checksum": true
}

What you should expect:

  • a component-by-component execution plan
  • the ordered dependency chain
  • whether each item is install, upgrade, repair, drift, or skip

Example response:

json
{
  "success": true,
  "data": {
    "module_id": "blog",
    "runtime_scope": "flowless-core",
    "plan": [
      { "component": "core", "action": "install" },
      { "component": "ext-comments", "action": "install" }
    ]
  }
}

Example: run a module install ​

http
POST /api/v1/modules/install/blog/run
Content-Type: application/json

{
  "target": "selected",
  "components": ["ext-comments", "ext-stats"],
  "runtime_scope": "flowless-core",
  "skip_existing": true,
  "verify_checksum": true
}

Useful notes:

  • target: "core" installs the base module only.
  • target: "selected" installs specific components and resolves dependencies.
  • target: "all" installs the full module surface.

Example: inspect module status ​

http
GET /api/v1/modules/install/blog/status

Example response:

json
{
  "success": true,
  "data": {
    "module_id": "blog",
    "status": "installed",
    "drifted": false,
    "components": []
  }
}

What to watch for ​

  • Do not run overlapping installs for the same runtime_scope:module_id.
  • Use dry-runs before updates.
  • Prefer targeted updates when only one component family changed.
  • Review the registry after every install or repair.

Next ​