Profiles
The Profiles operations of the Hub REST API (6 operations).
bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
userId*stringworkspaceId*stringdetail?"full"Pass detail=full to receive the complete profile row including renderer/hint columns. Omit for the lightweight digest (default).
"full"Array of profiles. Default: lightweight digest (id, slug, displayName, entityScope, scope, description, icon, profileKind, applicableKinds). scope = visibility (who can use the type); entityScope = placement (where its entities live). Pass ?detail=full for the complete row.
application/json- response
[index: integer]?curl -X GET 'https://pod.example.com/api/hub/profiles?userId=string&workspaceId=string'[ { "id": "string", "slug": "string", "displayName": "string", "entityScope": "pod", "scope": "system", "description": "string", "icon": "string", "profileKind": "kind", "applicableKinds": [ "string" ] }]bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
application/json- body
userId*stringworkspaceId*stringslug*stringStable lower-kebab profile identifier.
displayName*stringdescription?stringdefaultValues?parentProfileId?stringParent profile to inherit properties from.
uiHints?reasoning?stringagentUserId?stringsourceMessageId?stringprofileKind?string'kind' (default) = a primary entity type; 'role' = an attachable facet type (client, sponsor…).
"kind""role"applicableKinds?array<string>For a role: base-kind slugs it attaches to. Omitted → company, person.
roleCategory?stringFor a role: category key clustering related roles.
entityScope?stringWhere entities of this type live. Omit to let the pod decide (kind → pod, role → workspace).
"pod""workspace"icon?stringfields?array<>Field definitions ({ slug, valueType, displayName?, required?, defaultValue?, constraints?, uiHints?, displayOrder?, overlay? }). Added once the profile exists; deferred while it is proposed. Each field reports its own result.
Created profile
application/json- response
id*stringslug*stringdisplayName*stringdescription?string|nullparentProfileId?string|nullentityScope?string"pod""workspace"scope?|Visibility — who can use this profile type. Distinct from entityScope (placement).
"system""shared""workspace""user"nullworkspaceId?string|nulldefaultValues?uiHints?icon?string|nullcolor?string|nullprofileKind?stringkind = primary entity type; role = attachable facet on an existing entity.
"kind""role"applicableKinds?array<string>|For role profiles, the primary-kind slugs this facet may attach to.
createdAt?string|updatedAt?string|curl -X POST 'https://pod.example.com/api/hub/profiles' \ -H 'Content-Type: application/json' \ -d '{ "userId": "string", "workspaceId": "string", "slug": "string", "displayName": "string"}'{ "id": "string", "slug": "string", "displayName": "string", "description": "string", "parentProfileId": "string", "entityScope": "pod", "scope": "system", "workspaceId": "string", "defaultValues": { "property1": null, "property2": null }, "uiHints": { "property1": null, "property2": null }, "icon": "string", "color": "string", "profileKind": "kind", "applicableKinds": [ "string" ], "createdAt": "string", "updatedAt": "string"}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
userId*stringworkspaceId*stringprofileId?stringFilter to defs attached to a specific profile.
Array of property definitions
application/json- response
[index: integer]?curl -X GET 'https://pod.example.com/api/hub/property-defs?userId=string&workspaceId=string'[ { "id": "string", "profileId": "string", "workspaceId": "string", "slug": "string", "valueType": "string", "constraints": { "property1": null, "property2": null }, "uiHints": { "property1": null, "property2": null }, "createdAt": "string" }]bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
application/json- body
userId*stringworkspaceId*stringprofileId?stringslug*stringvalueType*stringLogical type — e.g. text, number, date, boolean, select, multi_select, relation.
constraints?uiHints?agentUserId?stringsourceMessageId?stringoverlay?booleanWhen true, create a workspace-scoped overlay def invisible to other workspaces using the same profile. Defaults to false (base def).
Created property def
application/json- response
id*stringprofileId?string|nullworkspaceId?string|nullslug*stringvalueType*stringconstraints?uiHints?createdAt?string|curl -X POST 'https://pod.example.com/api/hub/property-defs' \ -H 'Content-Type: application/json' \ -d '{ "userId": "string", "workspaceId": "string", "slug": "string", "valueType": "string"}'{ "id": "string", "profileId": "string", "workspaceId": "string", "slug": "string", "valueType": "string", "constraints": { "property1": null, "property2": null }, "uiHints": { "property1": null, "property2": null }, "createdAt": "string"}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
application/json- body
userId*stringworkspaceId*stringslug?stringRename. Normalised to kebab-case by the one slugifier.
valueType?stringconstraints?uiHints?agentUserId?stringsourceMessageId?stringreasoning?stringUpdated property def
application/json- response
id*stringprofileId?string|nullworkspaceId?string|nullslug*stringvalueType*stringconstraints?uiHints?createdAt?string|curl -X PATCH 'https://pod.example.com/api/hub/property-defs/{id}' \ -H 'Content-Type: application/json' \ -d '{ "userId": "string", "workspaceId": "string"}'{ "id": "string", "profileId": "string", "workspaceId": "string", "slug": "string", "valueType": "string", "constraints": { "property1": null, "property2": null }, "uiHints": { "property1": null, "property2": null }, "createdAt": "string"}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
userId*stringworkspaceId*stringuuidcontentKind?string"entity-detail""entity-card""entity-profile""collection"slot?stringDeprecated alias: list → entity-profile, detail → entity-detail, dashboard → collection.
"list""detail""dashboard"ContentKind-keyed renderer map. Unrequested kinds are null when contentKind is supplied.
application/json- response
entity-detail*|nullentity-profile*|nullcollection*|nulluserChoice*|The caller's explicit choice for entity-detail: 'source' (open in the source app), 'synap' (render in Synap, including after unbinding), null (never chose).
"source""synap"nullcurl -X GET 'https://pod.example.com/api/hub/profiles/{slug}/renderers?userId=string&workspaceId=497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "entity-detail": { "property1": null, "property2": null }, "entity-profile": { "property1": null, "property2": null }, "collection": { "property1": null, "property2": null }, "userChoice": "source"}