Topolo Docs Topolo Platform
Open workspace

Admin Apps List

Reads application surfaces from Auth’s global service registry, not One’s local application table or the caller’s entitlement catalog.

Outcome

Reads application surfaces from Auth’s global service registry, not One’s local application table or the caller’s entitlement catalog.

Before you start

  • Verify the intended environment, authenticated identity and explicitly authorized ownership context.
  • Discover the published apps:read permission and any required resource grant.

Discover the target

topolo whoami --json
topolo actions get app_topolo_one.admin.apps.list --detail --json

Request

GET /api/admin/apps

Inspect and test this action.

Input fields

Use an empty input object. Credential and resource context are separate.

Inspect nested fields.

Interpret the response

Inspect apps, total and application ids. Compare launcher entitlements separately with apps.list; local apps.create does not add entries to this registry.

Inspect the declared output schema and captured variants.

Worked examples

Actual exported One Worker with local Miniflare D1/KV. Authentication, application discovery, checkout, billing and remote widget providers are controlled synthetic responses; outbound access is sealed. No live provider outcome is established.

Save the reviewed input below as payload.json; substitute discovered identifiers and bind credential/resource context separately. CLI:

topolo actions validate app_topolo_one.admin.apps.list --data @payload.json --json
topolo actions plan app_topolo_one.admin.apps.list --data @payload.json --json
topolo actions call app_topolo_one.admin.apps.list --data @payload.json --detail --json

MCP planning and execution use the same reviewed input:

{
  "tool": "topolo_prepare_action",
  "arguments": {
    "actionId": "app_topolo_one.admin.apps.list",
    "input": {}
  }
}
{
  "tool": "topolo_read_action",
  "arguments": {
    "actionId": "app_topolo_one.admin.apps.list",
    "input": {},
    "detail": true
  }
}

Successful response · HTTP 200

Input · payload.json:

{}

Captured response:

{
  "apps": [
    {
      "id": "fixture_auth_app",
      "name": "Fixture registered app",
      "description": "",
      "icon": "📱",
      "category": "application",
      "developer": "topolo",
      "version": "1.0.0",
      "base_url": "https://registered.test",
      "launch_url_template": "https://registered.test",
      "status": "active",
      "is_system_app": false,
      "required_permissions": [],
      "optional_permissions": [],
      "created_at": null,
      "updated_at": null
    }
  ],
  "total": 1
}

Inspect apps, total and application ids. Compare launcher entitlements separately with apps.list; local apps.create does not add entries to this registry.

Refused request · HTTP 401 · auth_error

Input · payload.json:

{}

Captured response:

{
  "error": "Token validation failed"
}

Authenticate using the required credential type for this action; service-only actions require the registered Auth service identity.

Verify the result

  • Inspect apps, total and application ids. Compare launcher entitlements separately with apps.list; local apps.create does not add entries to this registry.

Errors and recovery

  • auth_error (HTTP 401): Authenticate using the required credential type for this action; service-only actions require the registered Auth service identity.

These are observed local refusals; inspect the raw error body because one SDK code can represent several handler messages. Preserve the request id when available.

Recovery boundary

If registry metadata is wrong, use the owning application’s canonical registration workflow.

Evidence

Actual exported One Worker with local Miniflare D1/KV. Authentication, application discovery, checkout, billing and remote widget providers are controlled synthetic responses; outbound access is sealed. No live provider outcome is established.