User & Access Management
This section provides a detailed reference for mutations that manage users, roles, permissions, invitations, and access keys within a Blocklet. These operations are essential for controlling access and managing identities in your application.
For fetching user and access control data, please see the User & Access Management Queries documentation.
User Management
Mutations for creating, updating, deleting, and managing user profiles and attributes.
Role & Permission Management
Operations for defining roles and assigning granular permissions to control access to resources.
Invitation Management
Methods for creating and managing user invitations to join a team or transfer ownership.
Access Key Management
Functions for creating, updating, and deleting API access keys for programmatic access.
Tag Management
Mutations for creating, updating, and deleting tags used to organize users.
Passport Management
Operations related to issuing and configuring verifiable credentials (Passports).
User Management#
These mutations allow for comprehensive management of user accounts.
removeUser#
Permanently removes a user from a team.
Parameters
Example
removeUser
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { user } = await client.removeUser({
input: {
teamDid: 'zdfw...',
user: {
did: 'z8...',
},
},
});
console.log('User removed:', user.did);
} catch (error) {
console.error('Error removing user:', error);
}Response
Returns a ResponseUser object containing the details of the removed user.
Response
{
"removeUser": {
"code": "ok",
"user": {
"did": "z8...",
"fullName": "John Doe"
}
}
}updateUserTags#
Updates the tags associated with a specific user.
Parameters
Example
updateUserTags
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { user } = await client.updateUserTags({
input: {
teamDid: 'zdfw...',
did: 'z8...',
tags: [1, 3],
},
});
console.log('User tags updated:', user.tags);
} catch (error) {
console.error('Error updating user tags:', error);
}Response
Returns a ResponseUser object with the user's updated information.
Response
{
"updateUserTags": {
"code": "ok",
"user": {
"did": "z8...",
"tags": [
{ "id": 1, "title": "Developer" },
{ "id": 3, "title": "Early Adopter" }
]
}
}
}updateUserExtra#
Updates the remark and extra (a JSON string) fields for a user.
Parameters
Example
updateUserExtra
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { user } = await client.updateUserExtra({
input: {
teamDid: 'zdfw...',
did: 'z8...',
remark: 'Internal user account',
extra: JSON.stringify({ department: 'Engineering' }),
},
});
console.log('User extra data updated:', user.extra);
} catch (error) {
console.error('Error updating user extra data:', error);
}Response
Returns a ResponseUser object with the updated user details.
Response
{
"updateUserExtra": {
"code": "ok",
"user": {
"did": "z8...",
"remark": "Internal user account",
"extra": {
"department": "Engineering"
}
}
}
}updateUserApproval#
Sets the approval status of a user.
Parameters
Example
updateUserApproval
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { user } = await client.updateUserApproval({
input: {
teamDid: 'zdfw...',
user: {
did: 'z8...',
approved: true,
},
},
});
console.log('User approval status:', user.approved);
} catch (error) {
console.error('Error updating user approval:', error);
}Response
Returns a ResponseUser object with the updated approval status.
Response
{
"updateUserApproval": {
"code": "ok",
"user": {
"did": "z8...",
"approved": true
}
}
}issuePassportToUser#
Issues a new passport (verifiable credential) to a user, typically assigning them a role.
Parameters
Example
issuePassportToUser
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { user } = await client.issuePassportToUser({
input: {
teamDid: 'zdfw...',
userDid: 'z8...',
role: 'guest',
display: {
type: 'text',
content: 'Guest Access Pass',
},
notify: true,
},
});
console.log('Passport issued to user:', user.did);
} catch (error) {
console.error('Error issuing passport:', error);
}Response
Returns a ResponseUser object, which may include the newly issued passport in the user's passports array.
Response
{
"issuePassportToUser": {
"code": "ok",
"user": {
"did": "z8...",
"passports": [
{
"id": "...",
"role": "guest"
}
]
}
}
}revokeUserPassport#
Revokes a previously issued passport from a user.
Parameters
Example
revokeUserPassport
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { user } = await client.revokeUserPassport({
input: {
teamDid: 'zdfw...',
userDid: 'z8...',
passportId: 'z...',
},
});
console.log('User passport revoked.');
} catch (error) {
console.error('Error revoking passport:', error);
}Response
Returns a ResponseUser object reflecting the change in the user's passports.
Response
{
"revokeUserPassport": {
"code": "ok",
"user": {
"did": "z8..."
}
}
}enableUserPassport#
Re-enables a passport that was previously revoked.
Parameters
Example
enableUserPassport
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { user } = await client.enableUserPassport({
input: {
teamDid: 'zdfw...',
userDid: 'z8...',
passportId: 'z...',
},
});
console.log('User passport re-enabled.');
} catch (error) {
console.error('Error enabling passport:', error);
}Response
Returns a ResponseUser object with the user's updated passport status.
Response
{
"enableUserPassport": {
"code": "ok",
"user": {
"did": "z8..."
}
}
}removeUserPassport#
Permanently removes a passport from a user's record.
Parameters
Example
removeUserPassport
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.removeUserPassport({
input: {
teamDid: 'zdfw...',
userDid: 'z8...',
passportId: 'z...',
},
});
console.log('User passport permanently removed.');
} catch (error) {
console.error('Error removing passport:', error);
}Response
Returns a GeneralResponse object indicating success or failure.
Response
{
"removeUserPassport": {
"code": "ok"
}
}updateUserInfo#
Updates a user's general information, such as fullName, email, and avatar.
Parameters
Example
updateUserInfo
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { user } = await client.updateUserInfo({
input: {
teamDid: 'zdfw...',
user: {
did: 'z8...',
fullName: 'Johnathan Doe',
email: 'john.doe.new@example.com',
},
},
});
console.log('User info updated:', user.fullName);
} catch (error) {
console.error('Error updating user info:', error);
}Response
Returns a ResponseUser object with the updated user information.
Response
{
"updateUserInfo": {
"code": "ok",
"user": {
"did": "z8...",
"fullName": "Johnathan Doe",
"email": "john.doe.new@example.com"
}
}
}Role & Permission Management#
These mutations are used to define roles and manage the permissions associated with them.
createRole#
Creates a new role within a team.
Parameters
Example
createRole
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { role } = await client.createRole({
input: {
teamDid: 'zdfw...',
name: 'editor',
title: 'Editor',
description: 'Can create and edit content',
permissions: ['content:create', 'content:edit'],
},
});
console.log('Role created:', role.name);
} catch (error) {
console.error('Error creating role:', error);
}Response
Returns a ResponseRole object containing the details of the newly created role.
Response
{
"createRole": {
"code": "ok",
"role": {
"name": "editor",
"title": "Editor",
"grants": ["content:create", "content:edit"]
}
}
}updateRole#
Updates the details of an existing role.
Parameters
Example
updateRole
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { role } = await client.updateRole({
input: {
teamDid: 'zdfw...',
role: {
name: 'editor',
title: 'Content Editor',
},
},
});
console.log('Role updated:', role.title);
} catch (error) {
console.error('Error updating role:', error);
}Response
Returns a ResponseRole object with the updated role information.
Response
{
"updateRole": {
"code": "ok",
"role": {
"name": "editor",
"title": "Content Editor"
}
}
}deleteRole#
Permanently deletes a role.
Parameters
Example
deleteRole
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.deleteRole({
input: {
teamDid: 'zdfw...',
name: 'editor',
},
});
console.log('Role "editor" deleted.');
} catch (error) {
console.error('Error deleting role:', error);
}Response
Returns a GeneralResponse object indicating success or failure.
Response
{
"deleteRole": {
"code": "ok"
}
}createPermission#
Creates a new permission that can be granted to roles.
Parameters
Example
createPermission
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { permission } = await client.createPermission({
input: {
teamDid: 'zdfw...',
name: 'content:publish',
description: 'Allows publishing content',
},
});
console.log('Permission created:', permission.name);
} catch (error) {
console.error('Error creating permission:', error);
}Response
Returns a ResponsePermission object with the details of the new permission.
Response
{
"createPermission": {
"code": "ok",
"permission": {
"name": "content:publish",
"description": "Allows publishing content"
}
}
}updatePermission#
Updates the description of an existing permission.
Parameters
Example
updatePermission
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { permission } = await client.updatePermission({
input: {
teamDid: 'zdfw...',
permission: {
name: 'content:publish',
description: 'Allows publishing content to the live site.',
},
},
});
console.log('Permission updated:', permission.description);
} catch (error) {
console.error('Error updating permission:', error);
}Response
Returns a ResponsePermission object with the updated permission details.
Response
{
"updatePermission": {
"code": "ok",
"permission": {
"name": "content:publish",
"description": "Allows publishing content to the live site."
}
}
}deletePermission#
Permanently deletes a permission. This will also revoke it from any roles that have it.
Parameters
Example
deletePermission
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.deletePermission({
input: {
teamDid: 'zdfw...',
name: 'content:publish',
},
});
console.log('Permission deleted.');
} catch (error) {
console.error('Error deleting permission:', error);
}Response
Returns a GeneralResponse object indicating success or failure.
Response
{
"deletePermission": {
"code": "ok"
}
}grantPermissionForRole#
Grants a specific permission to a role.
Parameters
Example
grantPermissionForRole
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.grantPermissionForRole({
input: {
teamDid: 'zdfw...',
roleName: 'editor',
grantName: 'content:publish',
},
});
console.log('Permission granted.');
} catch (error) {
console.error('Error granting permission:', error);
}Response
Returns a GeneralResponse object indicating success or failure.
Response
{
"grantPermissionForRole": {
"code": "ok"
}
}revokePermissionFromRole#
Revokes a specific permission from a role.
Parameters
Example
revokePermissionFromRole
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.revokePermissionFromRole({
input: {
teamDid: 'zdfw...',
roleName: 'editor',
grantName: 'content:publish',
},
});
console.log('Permission revoked.');
} catch (error) {
console.error('Error revoking permission:', error);
}Response
Returns a GeneralResponse object indicating success or failure.
Response
{
"revokePermissionFromRole": {
"code": "ok"
}
}updatePermissionsForRole#
Sets the complete list of permissions for a role, replacing any existing permissions.
Parameters
Example
updatePermissionsForRole
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { role } = await client.updatePermissionsForRole({
input: {
teamDid: 'zdfw...',
roleName: 'editor',
grantNames: ['content:create', 'content:edit', 'content:delete'],
},
});
console.log('Role permissions updated:', role.grants);
} catch (error) {
console.error('Error updating role permissions:', error);
}Response
Returns a ResponseRole object with the updated list of permissions.
Response
{
"updatePermissionsForRole": {
"code": "ok",
"role": {
"name": "editor",
"grants": ["content:create", "content:edit", "content:delete"]
}
}
}Invitation Management#
These mutations are used to manage user invitations.
createMemberInvitation#
Creates an invitation for a new member to join a team with a specific role.
Parameters
Example
createMemberInvitation
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { inviteInfo } = await client.createMemberInvitation({
input: {
teamDid: 'zdfw...',
role: 'guest',
remark: 'Invitation for new team member',
},
});
console.log('Invitation created:', inviteInfo.inviteId);
} catch (error) {
console.error('Error creating invitation:', error);
}Response
Returns a ResponseCreateInvitation object containing details about the created invitation.
Response
{
"createMemberInvitation": {
"code": "ok",
"inviteInfo": {
"inviteId": "...",
"role": "guest"
}
}
}createTransferInvitation#
Creates an invitation to transfer ownership of the node.
Parameters
Example
createTransferInvitation
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { inviteInfo } = await client.createTransferInvitation({
input: {
teamDid: 'zdfw...',
remark: 'Transferring node ownership',
},
});
console.log('Transfer invitation created:', inviteInfo.inviteId);
} catch (error) {
console.error('Error creating transfer invitation:', error);
}Response
Returns a ResponseCreateTransferNodeInvitation object with details of the invitation.
Response
{
"createTransferInvitation": {
"code": "ok",
"inviteInfo": {
"inviteId": "...",
"role": "owner"
}
}
}deleteInvitation#
Permanently deletes an invitation.
Parameters
Example
deleteInvitation
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.deleteInvitation({
input: {
teamDid: 'zdfw...',
inviteId: '...',
},
});
console.log('Invitation deleted.');
} catch (error) {
console.error('Error deleting invitation:', error);
}Response
Returns a GeneralResponse object indicating success or failure.
Response
{
"deleteInvitation": {
"code": "ok"
}
}Access Key Management#
These mutations are used to manage API access keys for programmatic access.
createAccessKey#
Creates a new access key.
Parameters
Example
createAccessKey
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { data } = await client.createAccessKey({
input: {
teamDid: 'zdfw...',
remark: 'Key for CI/CD pipeline',
authType: 'role',
},
});
console.log('Access Key created:', data.accessKeyId);
console.log('Secret:', data.accessKeySecret); // Save this secret securely
} catch (error) {
console.error('Error creating access key:', error);
}Response
Returns a ResponseCreateAccessKey object containing the new key's ID and secret. The secret is only returned on creation.
Response
{
"createAccessKey": {
"code": "ok",
"data": {
"accessKeyId": "...",
"accessKeySecret": "...",
"remark": "Key for CI/CD pipeline"
}
}
}updateAccessKey#
Updates the details of an existing access key, such as its remark or expiration.
Parameters
Example
updateAccessKey
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { data } = await client.updateAccessKey({
input: {
teamDid: 'zdfw...',
accessKeyId: '...',
remark: 'Updated remark for CI/CD pipeline',
},
});
console.log('Access Key updated:', data.remark);
} catch (error) {
console.error('Error updating access key:', error);
}Response
Returns a ResponseUpdateAccessKey object with the updated key details.
Response
{
"updateAccessKey": {
"code": "ok",
"data": {
"accessKeyId": "...",
"remark": "Updated remark for CI/CD pipeline"
}
}
}deleteAccessKey#
Permanently deletes an access key.
Parameters
Example
deleteAccessKey
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.deleteAccessKey({
input: {
teamDid: 'zdfw...',
accessKeyId: '...',
},
});
console.log('Access Key deleted.');
} catch (error) {
console.error('Error deleting access key:', error);
}Response
Returns a ResponseDeleteAccessKey object indicating success or failure.
Response
{
"deleteAccessKey": {
"code": "ok"
}
}verifyAccessKey#
Verifies if an access key is valid and has access to a specific resource.
Parameters
Example
verifyAccessKey
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { data } = await client.verifyAccessKey({
input: {
teamDid: 'zdfw...',
accessKeyId: '...',
},
});
console.log('Access key is valid:', data);
} catch (error) {
console.error('Access key verification failed:', error);
}Response
Returns a ResponseAccessKey object with the key's details if verification is successful.
Response
{
"verifyAccessKey": {
"code": "ok",
"data": {
"accessKeyId": "...",
"remark": "Key for CI/CD pipeline"
}
}
}Tag Management#
These mutations are used to manage user tags.
createTag#
Creates a new tag.
Parameters
Example
createTag
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { tag } = await client.createTag({
input: {
teamDid: 'zdfw...',
tag: {
title: 'VIP',
description: 'Very Important Person',
color: '#FFD700',
},
},
});
console.log('Tag created:', tag.title);
} catch (error) {
console.error('Error creating tag:', error);
}Response
Returns a ResponseTag object with the details of the newly created tag.
Response
{
"createTag": {
"code": "ok",
"tag": {
"id": 4,
"title": "VIP",
"color": "#FFD700"
}
}
}updateTag#
Updates an existing tag.
Parameters
Example
updateTag
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { tag } = await client.updateTag({
input: {
teamDid: 'zdfw...',
tag: {
id: 4,
color: '#E5C100',
},
},
});
console.log('Tag updated:', tag.color);
} catch (error) {
console.error('Error updating tag:', error);
}Response
Returns a ResponseTag object with the updated tag information.
Response
{
"updateTag": {
"code": "ok",
"tag": {
"id": 4,
"title": "VIP",
"color": "#E5C100"
}
}
}deleteTag#
Permanently deletes a tag.
Parameters
Example
deleteTag
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.deleteTag({
input: {
teamDid: 'zdfw...',
tag: {
id: 4,
},
},
});
console.log('Tag deleted.');
} catch (error) {
console.error('Error deleting tag:', error);
}Response
Returns a ResponseTag object of the deleted tag.
Response
{
"deleteTag": {
"code": "ok",
"tag": {
"id": 4
}
}
}Passport Management#
These mutations are used to manage passport issuance and trust configurations.
createPassportIssuance#
Creates a new passport issuance configuration for a team.
Parameters
Example
createPassportIssuance
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { info } = await client.createPassportIssuance({
input: {
teamDid: 'zdfw...',
ownerDid: 'z8...',
name: 'Community Contributor',
display: {
type: 'text',
content: 'Community Contributor Badge',
},
},
});
console.log('Passport issuance created:', info.id);
} catch (error) {
console.error('Error creating passport issuance:', error);
}Response
Returns a ResponseCreatePassportIssuance object with details of the new issuance configuration.
Response
{
"createPassportIssuance": {
"code": "ok",
"info": {
"id": "...",
"name": "Community Contributor"
}
}
}deletePassportIssuance#
Deletes a passport issuance configuration.
Parameters
Example
deletePassportIssuance
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.deletePassportIssuance({
input: {
teamDid: 'zdfw...',
sessionId: '...',
},
});
console.log('Passport issuance deleted.');
} catch (error) {
console.error('Error deleting passport issuance:', error);
}Response
Returns a GeneralResponse object indicating success or failure.
Response
{
"deletePassportIssuance": {
"code": "ok"
}
}configPassportIssuance#
Enables or disables passport issuance for a team.
Parameters
Example
configPassportIssuance
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.configPassportIssuance({
input: {
teamDid: 'zdfw...',
enable: true,
},
});
console.log('Passport issuance enabled.');
} catch (error) {
console.error('Error configuring passport issuance:', error);
}Response
Returns a GeneralResponse object indicating success or failure.
Response
{
"configPassportIssuance": {
"code": "ok"
}
}configTrustedPassports#
Configures a list of trusted passport issuers and their role mappings.
Parameters
Example
configTrustedPassports
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.configTrustedPassports({
input: {
teamDid: 'zdfw...',
trustedPassports: [
{
issuerDid: 'z...', // DID of another trusted blocklet
mappings: [
{
from: { passport: 'developer_badge' },
to: { role: 'developer' },
},
],
},
],
},
});
console.log('Trusted passports configured.');
} catch (error) {
console.error('Error configuring trusted passports:', error);
}Response
Returns a GeneralResponse object indicating success or failure.
Response
{
"configTrustedPassports": {
"code": "ok"
}
}configTrustedFactories#
Configures a list of trusted NFT factories.
Parameters
Example
configTrustedFactories
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.configTrustedFactories({
input: {
teamDid: 'zdfw...',
trustedFactories: [
{
factoryAddress: '0x...',
remark: 'Official Community NFT Factory',
},
],
},
});
console.log('Trusted factories configured.');
} catch (error) {
console.error('Error configuring trusted factories:', error);
}Response
Returns a GeneralResponse object indicating success or failure.
Response
{
"configTrustedFactories": {
"code": "ok"
}
}