feat(modules): public module discovery endpoint GET /api/modules #97

Closed
opened 2026-02-14 19:46:06 +00:00 by forbes · 0 comments
Owner

Ref: docs/MODULES.md §6, §11 step 4

Implement GET /api/modules — public, no authentication required.

Clients (web UI, silo-mod, silo-calc) call this pre-login to discover:

  • Which modules are enabled
  • Auth provider availability (OIDC issuer URL, LDAP, local)
  • Create integration config (URI scheme)
  • Server version, read-only mode

Response structure:

{
  "modules": {
    "core": { "enabled": true, "required": true, "name": "Core PDM", "version": "0.2" },
    "auth": { "enabled": true, "required": false, "name": "Authentication",
               "config": { "local_enabled": true, "oidc_enabled": true, "oidc_issuer_url": "..." } },
    ...
  },
  "server": { "version": "0.2", "read_only": false }
}

The config sub-object exposes only public, non-secret metadata. Never includes passwords, tokens, or secret keys.

Depends on #96.

**Ref:** docs/MODULES.md §6, §11 step 4 Implement `GET /api/modules` — public, no authentication required. Clients (web UI, silo-mod, silo-calc) call this pre-login to discover: - Which modules are enabled - Auth provider availability (OIDC issuer URL, LDAP, local) - Create integration config (URI scheme) - Server version, read-only mode **Response structure:** ```json { "modules": { "core": { "enabled": true, "required": true, "name": "Core PDM", "version": "0.2" }, "auth": { "enabled": true, "required": false, "name": "Authentication", "config": { "local_enabled": true, "oidc_enabled": true, "oidc_issuer_url": "..." } }, ... }, "server": { "version": "0.2", "read_only": false } } ``` The `config` sub-object exposes only public, non-secret metadata. Never includes passwords, tokens, or secret keys. Depends on #96.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/silo#97