Account model
The account model defines the three building blocks you work with: a source organization, tenant organizations, and mirrors.- Source organization: your administrators author the original dashboards and domains here.
- Tenant organization: you create one private organization per customer tenant and add only that tenant’s users.
- Mirror: a read-only, live facade of a source dashboard or domain. WisdomAI does not copy the source content.
Required access
Each action in this guide requires specific access, as the table shows:
Send requests to
https://{ACCOUNT}.wisdom.ai/graphql with an authenticated administrator credential.
Replace
{ACCOUNT}.wisdom.ai with the base URL of your WisdomAI tenant, the same domain you use to log in. Both wisdom.ai and askwisdom.ai are valid depending on your deployment.Create the tenant organization
UsecreateWorkspace(input). The required input fields are name and a unique uri. Set visibility to PRIVATE.
TENANT_WORKSPACE_ID.
Create users in the tenant organization
UsecreateUsers(input). The input fields are:
emails: the users to create or add.workspaceID:TENANT_WORKSPACE_ID.roleAssignments: a role ID andscopes: ["TENANT_WORKSPACE_ID"].sendWelcomeEmail: whether newly added users receive an invitation.
roles(workspaceID: TENANT_WORKSPACE_ID) to find the available role IDs.
createUsers fields, see createUsers. For role IDs, see RBAC for Embedded Users.
Migrate existing organization users
Users are account-level identities. Do not recreate or delete them.- Call
createUserswith the existing email, the targetworkspaceID, and a tenant-scoped role. SetsendWelcomeEmailtofalse. - Mirror the required content and validate the user’s tenant access.
- Remove each old central-organization role with
unassignRole(input).
Mirror a dashboard or domain
Mirroring takes two calls, one to find the tenant organizations you can mirror into, and one to create the mirror.Find eligible targets
UsepublishableWorkspaces(sourceObjectId, limit, offset). The required parameter is the source dashboard or domain ID. Confirm that TENANT_WORKSPACE_ID is in the results.
Create the mirror
UsepublishObjectToWorkspaces(input). The input fields are:
sourceObjectId: the source dashboard or domain ID.targetWorkspaceIds: one or more tenant organization IDs.
id is the mirror ID. Tenant-facing APIs and role assignments must use this ID, not the source object ID.
Choose who can access the mirror
After you create a mirror, decide whether only administrators or all tenant users can access it.- Admins only: make no extra API call. Organization administrators inherit access.
- All tenant users: call
assignRole(input)for principal*, scoped to the mirror ID.
MIRROR_READ_ROLE_ID:
To verify mirrors, use
objectPublications(sourceObjectId, targetWorkspaceId, objectType, limit, offset). Use STORY for dashboards and DOMAIN for domains as the objectType.
Revoke a mirror
UserevokeObjectPublication(publicationId). The required parameter is the mirror ID.
Revocation removes the target mirror and its mirror-scoped role assignments. It does not change the source object.
Checklist
Use this checklist to confirm your tenant setup is complete.- You created one private organization per tenant.
- Tenant users have roles only in their tenant organization.
- Default-organization self-provisioning does not re-add tenant users.
- Source administrators use source object IDs.
- Tenant users use mirror IDs.
- You assigned all-user access to
*on the mirror ID. - Mirrored dashboards and domains are readable but not editable.
Related articles
Object mirroring
Learn how mirrors, organizations, and data access fit together.
Set up object mirroring
Complete the same setup in the WisdomAI interface.
createUsers
Provision users with role assignments.