Topolo Docs Topolo Platform
Open workspace

Get Home signed context

Read the authenticated user and personal or organization context, selected household and household memberships. This action neither creates nor returns a workspace identity.

Outcome

Read the authenticated user and personal or organization context, selected household and household memberships. This action neither creates nor returns a workspace identity.

Before you start

  • Verify the authenticated identity, environment and pinned personal or organization context before preparing an action.
  • The published application permission is workspace:read. Home registration supports personal household context. This response provides navigation or signed identity, not populated domain data or a workspace grant.

Discover the target

topolo whoami --json
topolo actions get app_topolo_home.workspace.bootstrap --detail --json

Request

GET /api/bootstrap

Save action input as payload.json. Inspect the plan for the exact path, query and body.

Inspect and test this action in the signed action console, then perform the verification below.

Input fields

Supply an empty input object; credential and resource context are separate.

Exact input schema:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Effects

  • Returns private signed user and household context supplied by Auth.
  • Creates no Home database, workspace mirror, household or domain content.
  • Absent selected household fields return null and memberships default to an empty array.

Interpret the response

Use response path $.user.id for home_user. An empty list does not discover a target.

Compare user.id and the active context with the intended authenticated principal. Inspect selectedHouseholdId and householdMemberships; discover workspace grants separately through the platform.

The success schema below was checked against captured handler responses. Signed identity and household metadata can vary. Error examples retain their actual refusal shapes.

Success schema:

{
  "type": "object",
  "required": [
    "user",
    "activeContextType",
    "activeContextId",
    "activeContext",
    "selectedHouseholdId",
    "selectedHousehold",
    "household",
    "householdMemberships"
  ],
  "properties": {
    "user": {
      "type": "object",
      "required": [
        "id",
        "email"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "email": {
          "type": "string"
        }
      }
    },
    "activeContextType": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "personal",
        "organization",
        null
      ]
    },
    "activeContextId": {
      "type": [
        "string",
        "null"
      ]
    },
    "activeContext": {
      "type": [
        "object",
        "null"
      ]
    },
    "selectedHouseholdId": {
      "type": [
        "string",
        "null"
      ]
    },
    "selectedHousehold": {
      "type": [
        "object",
        "null"
      ]
    },
    "household": {
      "type": [
        "object",
        "null"
      ]
    },
    "householdMemberships": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "additionalProperties": false
}

Worked examples

Actual Home Worker response with synthetic identity and identifiers. Auth grants, platform archival and Nexus usage transport are simulated; Home has no local database. This does not prove live platform archival or Nexus delivery. No request credentials are captured. Captured requests use synthetic principals and identifiers. Registration supports the personal household context; organization privacy and archival require an actual authorized organization context and cannot be inferred from personal access. Refused examples demonstrate boundaries and must not be executed as successful workflows.

Refused request · HTTP 401

Actual Home Worker response with synthetic identity and identifiers. Auth grants, platform archival and Nexus usage transport are simulated; Home has no local database. This does not prove live platform archival or Nexus delivery. No request credentials are captured. Captured scenario: widget and signed bootstrap refuse unauthenticated requests.

Input · payload.json:

{}

CLI:

topolo actions validate app_topolo_home.workspace.bootstrap --data @payload.json --json
topolo actions plan app_topolo_home.workspace.bootstrap --data @payload.json --json

Captured local response · HTTP 401:

{
  "error": "Authentication token required"
}

HTTP 401. The handler refused this request. Resolve its exact cause before retrying; input validation can reject an invalid fixture before it reaches the handler.

Successful request

Actual Home Worker response with synthetic identity and identifiers. Auth grants, platform archival and Nexus usage transport are simulated; Home has no local database. This does not prove live platform archival or Nexus delivery. No request credentials are captured. Captured scenario: bootstrap returns signed personal household context without inventing a workspace.

Input · payload.json:

{}

CLI:

topolo actions validate app_topolo_home.workspace.bootstrap --data @payload.json --json
topolo actions plan app_topolo_home.workspace.bootstrap --data @payload.json --json
topolo actions call app_topolo_home.workspace.bootstrap --data @payload.json --json

MCP tool and arguments:

{
  "tool": "topolo_read_action",
  "arguments": {
    "actionId": "app_topolo_home.workspace.bootstrap",
    "input": {}
  }
}

Captured local response · HTTP 200:

{
  "user": {
    "id": "usr_home_fixture",
    "email": "home@example.com",
    "permissions": [
      "*"
    ],
    "activeContextType": "personal",
    "activeContextId": null,
    "activeContext": {
      "type": "personal"
    },
    "selectedHouseholdId": "hh_fixture",
    "selectedHousehold": {
      "id": "hh_fixture",
      "name": "Fixture household"
    },
    "householdMemberships": [
      {
        "householdId": "hh_fixture",
        "role": "owner"
      }
    ],
    "organization": null,
    "orgId": null,
    "orgSlug": null
  },
  "activeContextType": "personal",
  "activeContextId": null,
  "activeContext": {
    "type": "personal"
  },
  "selectedHouseholdId": "hh_fixture",
  "selectedHousehold": {
    "id": "hh_fixture",
    "name": "Fixture household"
  },
  "household": {
    "id": "hh_fixture",
    "name": "Fixture household"
  },
  "householdMemberships": [
    {
      "householdId": "hh_fixture",
      "role": "owner"
    }
  ]
}

HTTP 200. Compare user.id and the active context with the intended authenticated principal. Inspect selectedHouseholdId and householdMemberships; discover workspace grants separately through the platform.

Another supported request

Actual Home Worker response with synthetic identity and identifiers. Auth grants, platform archival and Nexus usage transport are simulated; Home has no local database. This does not prove live platform archival or Nexus delivery. No request credentials are captured. Captured scenario: bootstrap permits absent household fields and uses the canonical organization context.

Input · payload.json:

{}

CLI:

topolo actions validate app_topolo_home.workspace.bootstrap --data @payload.json --json
topolo actions plan app_topolo_home.workspace.bootstrap --data @payload.json --json
topolo actions call app_topolo_home.workspace.bootstrap --data @payload.json --json

MCP tool and arguments:

{
  "tool": "topolo_read_action",
  "arguments": {
    "actionId": "app_topolo_home.workspace.bootstrap",
    "input": {}
  }
}

Captured local response · HTTP 200:

{
  "user": {
    "id": "usr_home_fixture",
    "email": "home@example.com",
    "orgId": "org_home_fixture",
    "orgSlug": "home-fixture",
    "permissions": [
      "*"
    ],
    "organization": {
      "id": "org_home_fixture",
      "slug": "home-fixture",
      "name": "Fixture"
    },
    "activeContextType": "organization",
    "activeContextId": "org_home_fixture"
  },
  "activeContextType": "organization",
  "activeContextId": "org_home_fixture",
  "activeContext": null,
  "selectedHouseholdId": null,
  "selectedHousehold": null,
  "household": null,
  "householdMemberships": []
}

HTTP 200. Compare user.id and the active context with the intended authenticated principal. Inspect selectedHouseholdId and householdMemberships; discover workspace grants separately through the platform.

Verify the result

  • Compare user.id and the active context with the intended authenticated principal.
  • Inspect selectedHouseholdId and householdMemberships; discover workspace grants separately through the platform.

Errors and recovery

  • Authentication token required (HTTP 401): Authenticate through the published login flow, verify the identity and repeat discovery before preparing this action.

Auth, action-input validation and platform resource resolution can refuse a request before its handler. Retain the exact error, request id and context; requesting another context is not a legitimate way to bypass a refusal.

Recovery boundary

No state is changed; no rollback is needed.

Evidence

Actual Home Worker response with synthetic identity and identifiers. Auth grants, platform archival and Nexus usage transport are simulated; Home has no local database. This does not prove live platform archival or Nexus delivery. No request credentials are captured. Captured requests use synthetic principals and identifiers. Registration supports the personal household context; organization privacy and archival require an actual authorized organization context and cannot be inferred from personal access. Capture digests and test scenarios are retained in the source fixture records.