Topolo Docs Topolo Platform
Open workspace

Get a Socialize brand profile

Read one authorized workspace’s Socialize profile without mistaking local profile fields for Auth identity.

Outcome

Read one authorized workspace’s Socialize profile without mistaking local profile fields for Auth identity.

Action: app_topolo_socialize.brands.get.

Before you start

  1. Verify production, the original signed-in principal and intended organization. Socialize calls a canonical Auth workspace a brand; do not fabricate a brand id from a name or change the caller.
  2. Use only actual discovered workspace grants and the published action permission. API-key workspace bindings further narrow the grant; organization membership alone is insufficient. Keep resource context separate from action input.
  3. Published permission: app_topolo_socialize.accounts:read. No mutation confirmation is requested by the published read action, but source side effects below remain relevant.

Find the workspace

  • Resolve the actual workspace through supported workspace/resource discovery or data[].id from brands.list. Send that same exact id as action input and bind its workspace context separately.

Request

GET /api/brands/{id}
{
  "id": "ws_socialize_example"
}

Input fields are exactly those in the current published action schema. id is required and must be the discovered workspace id.

For an authorized CLI operation, pin the actual context/environment, discover the workspace, then use the actual values in place of the placeholders below. These commands are illustrative and were not executed against Socialize.

TOPOLO_CONTEXT="org:<verified-org-id>" topolo --env production actions validate app_topolo_socialize.brands.get --data '<reviewed-input-json>' --json
TOPOLO_CONTEXT="org:<verified-org-id>" topolo --env production actions plan app_topolo_socialize.brands.get --resource-type workspace --resource-id '<verified-workspace-id>' --data '<reviewed-input-json>' --json

Interpret the response

  • Returns a bare profile object, not {data:...}. Its id is the canonical workspace id; organizationId is not the brand id.
  • description and logoUrl default to empty strings for null database values. memberCount counts active local memberships. createdAt/updatedAt are local profile timestamps, not a current Auth workspace change receipt.
  • The handler’s app-scoped profile omits workspace name, slug, owner and default flag. Use supported Auth-owned workspace reads for those fields.
  • The path id is checked against the original caller’s accessible workspace grants; a named inaccessible id is denied instead of silently serving the default workspace.

Effects

  • Although the published action is marked readOnly, requireBrandWorkspace/listBrandWorkspaces can insert a local brand mirror or reactivate/synchronize its organization/status. This is not a zero-SQL-write promise.
  • After authorization/mirror synchronization, the route queries the active local profile and its active membership count. It does not edit the description/logo, send invitations or create a campaign.

Worked examples

Every example below is source-derived, synthetic and unrun. Placeholder ids, emails and timestamps confer no real authority. Returned shape illustrates the pinned handler; the published structural schema alone does not guarantee application semantics.

Read one existing profile

Source-derived synthetic and unrun; illustrative workspace/organization identifiers are not live authority.

Request:

{
  "id": "ws_socialize_example"
}

Illustrative successful response:

{
  "id": "ws_socialize_example",
  "description": "Example editorial workspace",
  "logoUrl": "",
  "memberCount": 2,
  "organizationId": "org_example",
  "createdAt": "2026-10-21T00:00:00.000Z",
  "updatedAt": "2026-10-21T00:00:00.000Z"
}

Check the bare profile id and organization; obtain the workspace name from Auth-owned discovery.

Refusals and recovery

StatusSource-specific conditionNext step
400/problems/validation-errorUse the original verified organization and valid resource-binding context. This GET handler does not parse or validate a JSON body; correct the actual context issue rather than inventing a body-validator refusal.
403workspace_forbiddenNamed workspace absent or inaccessible; re-discover the original allowed workspace, without guessed fallback or widened authority.
503workspace_unresolvedAuth could not verify workspace access. Preserve the error and request id; do not interpret it as an empty authorized list.
500failed_to_get_brandPreserve the response and request evidence; verify original context and source-specific dependencies. Earlier mirror/reconciliation effects may remain.
404brand_not_foundAuthorized active local profile was not returned. Reconcile the exact canonical workspace; do not try another unverified identity.

Outer authentication, permission and rate-limit refusals can differ from handler responses. Retain actual codes/request ids and use current discovery; no simulated refusal here is a deployed carrier test.

Verify the result

  • Compare returned id and organizationId with the intended authorized workspace. Do not treat local memberCount as a count of all platform grants.
  • For a404 brand_not_found, reconcile the authoritative workspace and profile state. A503 workspace_unresolved means access verification failed, not an empty profile.

Change log

2026-10-21: Added a source-qualified task guide with paired agent instructions, source-derived examples, workspace boundaries, actual response shape and side-effect/recovery notes. Reviewed source: f8e30bad6947f868302f24e9cb31b6a2bdd1fbf6; current catalog marker: bc22ce7a2ceaa4396388794c4d42895c777bed76. Their deployed serving association has not been established. No action execution, provider effect or test capture is claimed.