Topolo Docs Topolo Platform
Open workspace

Create documentation space

Create a tenant-isolated documentation space.

Outcome

Create a tenant-isolated documentation space.

These examples were captured from the local Worker. Deployment, publication and retrieval are verified separately for each environment; local examples do not establish external provider delivery.

Before you start

  • Inspect the credential identity with topolo whoami and the exact action with topolo actions get before preparing input.

  • Discover an accessible Docs workspace with topolo resources topolo-docs and topolo workspaces list topolo-docs. Pass workspace resource type and identifier separately from action input.

  • The published required permission is docs:write; the active credential and resource binding must authorize the call.

  • Validate and plan the exact request. Execute only after the intended effect has been authorized; --confirm is the transport guard, not a grant of permission.

Discover the target


topolo actions get app_topolo_docs.spaces.create --detail --json
topolo resources topolo-docs --json
topolo workspaces list topolo-docs --json

Input fields

FieldRequiredMeaning
titleNoHuman-readable title. Native creation uses an Untitled space, Untitled document or Untitled section title when omitted. Updates preserve an omitted title; document versions snapshot their title.
slugNoURL or navigation slug. Creation normalizes the supplied value or derives it from title and resolves collisions. Updates preserve it when omitted; changing a public space or document slug changes its address.
descriptionNoShort description of the documentation space, stored up to 2,000 characters.
visibilityNoSpace access class. Creation defaults to private; only public exposes published documents anonymously. Making a space private withdraws anonymous lookup.
defaultLocaleNoDefault reader locale metadata for the space; creation defaults to en. It does not translate existing documents or change their published version.
brandNoJSON configuration stored with the space. Supply the complete configuration object when replacing it; the API does not merge individual keys.

Interpret the response

space.id is the newly allocated documentation space identifier. Preserve its slug and visibility. A space identifier is not the Auth workspace resource identifier.

Worked examples

The following inputs and responses were captured from the local Docs worker fixture. Auth and Nexus dependencies are simulated. Identifiers, URLs and timestamps are illustrative fixture values. Discover your own identifiers and choose an appropriate test resource; copying a fixture identifier does not make it valid in your environment. For workspace-bound calls, set DOCS_WORKSPACE_ID to the identifier returned by resource discovery. Run validation and planning first; the final call requires the intended effect to be authorized.

Minimal example

Save the input as payload.json:


{
  "title": "minimal integration reference",
  "slug": "reference-minimal",
  "visibility": "private"
}

CLI:


topolo actions validate app_topolo_docs.spaces.create --data @payload.json --json
topolo actions plan app_topolo_docs.spaces.create --resource-type workspace --resource-id "$DOCS_WORKSPACE_ID" --data @payload.json --json
topolo actions call app_topolo_docs.spaces.create --resource-type workspace --resource-id "$DOCS_WORKSPACE_ID" --data @payload.json --confirm --json

MCP tool and arguments:


{
  "tool": "topolo_call_action",
  "arguments": {
    "actionId": "app_topolo_docs.spaces.create",
    "input": {
      "title": "minimal integration reference",
      "slug": "reference-minimal",
      "visibility": "private"
    },
    "resourceType": "workspace",
    "resourceId": "<identifier returned by resource discovery>",
    "confirm": true
  }
}

Captured local response · HTTP 201:


{
  "space": {
    "id": "docspace_a09c96df-e507-4751-89c8-e6a99e496d0d",
    "organizationId": "org_fixture",
    "workspaceId": "ws_fixture",
    "slug": "reference-minimal",
    "title": "minimal integration reference",
    "description": "",
    "visibility": "private",
    "defaultLocale": "en",
    "brand": {},
    "status": "active",
    "createdByUserId": "usr_fixture",
    "createdAt": "2026-10-03T08:07:30.244Z",
    "updatedAt": "2026-10-03T08:07:30.244Z"
  }
}

space.id is the newly allocated documentation space identifier. Preserve its slug and visibility. A space identifier is not the Auth workspace resource identifier.

Workflow example

Save the input as payload.json:


{
  "title": "workflow integration reference",
  "slug": "reference-workflow",
  "visibility": "private"
}

CLI:


topolo actions validate app_topolo_docs.spaces.create --data @payload.json --json
topolo actions plan app_topolo_docs.spaces.create --resource-type workspace --resource-id "$DOCS_WORKSPACE_ID" --data @payload.json --json
topolo actions call app_topolo_docs.spaces.create --resource-type workspace --resource-id "$DOCS_WORKSPACE_ID" --data @payload.json --confirm --json

MCP tool and arguments:


{
  "tool": "topolo_call_action",
  "arguments": {
    "actionId": "app_topolo_docs.spaces.create",
    "input": {
      "title": "workflow integration reference",
      "slug": "reference-workflow",
      "visibility": "private"
    },
    "resourceType": "workspace",
    "resourceId": "<identifier returned by resource discovery>",
    "confirm": true
  }
}

Captured local response · HTTP 201:


{
  "space": {
    "id": "docspace_a0013653-dabf-4831-8c11-6405b39664ca",
    "organizationId": "org_fixture",
    "workspaceId": "ws_fixture",
    "slug": "reference-workflow",
    "title": "workflow integration reference",
    "description": "",
    "visibility": "private",
    "defaultLocale": "en",
    "brand": {},
    "status": "active",
    "createdByUserId": "usr_fixture",
    "createdAt": "2026-10-03T08:07:33.740Z",
    "updatedAt": "2026-10-03T08:07:33.740Z"
  }
}

space.id is the newly allocated documentation space identifier. Preserve its slug and visibility. A space identifier is not the Auth workspace resource identifier.

Verify the result

  • Read $.space.id and confirm the visibility is what you intended before adding content.

  • Call spaces.list and confirm the slug appears exactly once.

Errors and recovery

  • HTTP 403 · organization_required: The token carries no organization scope. Re-authenticate against the organization that owns the Docs workspace and retry.

  • HTTP 400 · workspace_required: No Docs workspace resolved for the caller. Call workspace.get to see which workspace is bound, then retry in that context.

  • HTTP 403 · permission_denied: The credential needs docs:write on the selected Docs workspace.

  • HTTP 400 · invalid_json_object: The body was missing, malformed, or carried a key the action does not accept. Send a JSON object matching inputSchema exactly — these routes reject unknown keys.

Archive a space created in error. Archiving is the only removal Docs offers and it also removes the space from public lookup.

Evidence boundary

These examples establish local handler behavior and schema validity. They do not establish runtime permission parity, a deployed development/staging result or production completion. Preserve the actual request identifier and perform the verification reads after an authorized live call.