Publishing & Projects
This section details the mutations available for managing the entire lifecycle of your blocklet projects, from creation and release management to connecting with blocklet stores and publishing your work. These mutations enable programmatic control over how your projects are developed, versioned, and distributed.
For fetching project-related data, please see the Publishing & Projects Queries documentation.
Project Management#
These mutations handle the creation, modification, and deletion of your development projects.
createProject#
Creates a new project for a specified blocklet component, setting it up for future releases and publishing.
Parameters
Example
Create Project
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { project } = await client.mutation.createProject({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
type: 'resource',
blockletDid: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
blockletTitle: 'My New Blocklet Project',
componentDid: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
},
});
console.log('Project created:', project.id);
} catch (error) {
console.error('Error creating project:', error);
}Response
updateProject#
Updates the details of an existing project, such as its title, description, or introduction.
Parameters
Example
Update Project
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { project } = await client.mutation.updateProject({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
projectId: 'project_12345',
blockletTitle: 'My Updated Blocklet Project',
blockletDescription: 'An updated description for my project.',
},
});
console.log('Project updated:', project.id);
} catch (error) {
console.error('Error updating project:', error);
}Response
deleteProject#
Permanently deletes a project. This action cannot be undone.
Parameters
Example
Delete Project
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.mutation.deleteProject({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
projectId: 'project_12345',
},
});
console.log('Project deleted successfully.');
} catch (error) {
console.error('Error deleting project:', error);
}Response
Release Management#
These mutations are used to create and manage releases for your projects.
createRelease#
Creates a new release for a project, capturing a specific version of the blocklet with associated metadata.
Parameters
Example
Create Release
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { release } = await client.mutation.createRelease({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
projectId: 'project_12345',
blockletDid: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
blockletVersion: '1.0.0',
note: 'Initial release with core features.',
},
});
console.log('Release created:', release.id);
} catch (error) {
console.error('Error creating release:', error);
}Response
deleteRelease#
Permanently deletes a release from a project.
Parameters
Example
Delete Release
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.mutation.deleteRelease({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
projectId: 'project_12345',
releaseId: 'release_67890',
},
});
console.log('Release deleted successfully.');
} catch (error) {
console.error('Error deleting release:', error);
}Response
Resource Management#
This mutation is used for managing resources associated with a project release.
updateSelectedResources#
Updates the list of resources selected for a specific release of a component within a project.
Parameters
Example
Update Selected Resources
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.mutation.updateSelectedResources({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
projectId: 'project_12345',
releaseId: 'release_67890',
componentDid: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
resources: ['resource_a', 'resource_b'],
},
});
console.log('Selected resources updated.');
} catch (error) {
console.error('Error updating resources:', error);
}Response
Store & Endpoint Connectivity#
These mutations manage the connection between your projects and various publishing destinations like Blocklet Stores and endpoints.
connectToStore#
Initiates a connection between a project and a Blocklet Store, returning a URL for completing the authorization process.
Parameters
Example
Connect to Store
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { url } = await client.mutation.connectToStore({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
projectId: 'project_12345',
storeId: 'store_abc',
storeUrl: 'https://store.example.com',
storeName: 'Example Store',
},
});
console.log('Connect to store URL:', url);
} catch (error) {
console.error('Error connecting to store:', error);
}Response
publishToStore#
Publishes a specific release of a project to a connected Blocklet Store.
Parameters
Example
Publish to Store
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { url } = await client.mutation.publishToStore({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
projectId: 'project_12345',
releaseId: 'release_67890',
storeId: 'store_abc',
type: 'resource',
},
});
console.log('Publish to store URL:', url);
} catch (error) {
console.error('Error publishing to store:', error);
}Response
disconnectFromStore#
Disconnects a project from a Blocklet Store, removing the association.
Parameters
Example
Disconnect from Store
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.mutation.disconnectFromStore({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
projectId: 'project_12345',
storeId: 'store_abc',
},
});
console.log('Successfully disconnected from the store.');
} catch (error) {
console.error('Error disconnecting from store:', error);
}Response
connectToAigne#
Connects a blocklet to an AIGNE service, which provides AI capabilities.
Parameters
Example
Connect to AIGNE
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { url } = await client.mutation.connectToAigne({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
baseUrl: 'https://aigne.example.com',
provider: 'openai',
model: 'gpt-4-turbo',
},
});
console.log('Connect to AIGNE URL:', url);
} catch (error) {
console.error('Error connecting to AIGNE:', error);
}Response
disconnectToAigne#
Disconnects a blocklet from an AIGNE service.
Parameters
Example
Disconnect from AIGNE
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.mutation.disconnectToAigne({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
url: 'https://aigne.example.com',
key: 'your-api-key',
},
});
console.log('Successfully disconnected from AIGNE.');
} catch (error) {
console.error('Error disconnecting from AIGNE:', error);
}Response
verifyAigneConnection#
Verifies the connection to an AIGNE service for a blocklet.
Parameters
Example
Verify AIGNE Connection
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.mutation.verifyAigneConnection({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
},
});
console.log('AIGNE connection verified successfully.');
} catch (error) {
console.error('Error verifying AIGNE connection:', error);
}Response
connectToEndpoint#
Establishes a connection between a project and a generic publishing endpoint.
Parameters
Example
Connect to Endpoint
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { url } = await client.mutation.connectToEndpoint({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
endpointId: 'endpoint_xyz',
projectId: 'project_12345',
},
});
console.log('Connect to endpoint URL:', url);
} catch (error) {
console.error('Error connecting to endpoint:', error);
}Response
publishToEndpoint#
Publishes a specific release of a project to a connected endpoint.
Parameters
Example
Publish to Endpoint
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { url } = await client.mutation.publishToEndpoint({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
endpointId: 'endpoint_xyz',
projectId: 'project_12345',
releaseId: 'release_67890',
},
});
console.log('Publish to endpoint URL:', url);
} catch (error) {
console.error('Error publishing to endpoint:', error);
}Response
disconnectFromEndpoint#
Disconnects a project from a publishing endpoint.
Parameters
Example
Disconnect from Endpoint
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.mutation.disconnectFromEndpoint({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
endpointId: 'endpoint_xyz',
projectId: 'project_12345',
},
});
console.log('Successfully disconnected from the endpoint.');
} catch (error) {
console.error('Error disconnecting from endpoint:', error);
}Response
addUploadEndpoint#
Adds a new upload endpoint for a team.
Parameters
Example
Add Upload Endpoint
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.mutation.addUploadEndpoint({
input: {
teamDid: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
url: 'https://uploads.example.com',
scope: 'images',
},
});
console.log('Upload endpoint added successfully.');
} catch (error) {
console.error('Error adding upload endpoint:', error);
}Response
deleteUploadEndpoint#
Deletes an existing upload endpoint.
Parameters
Example
Delete Upload Endpoint
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.mutation.deleteUploadEndpoint({
input: {
teamDid: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
did: 'endpoint_did_123',
},
});
console.log('Upload endpoint deleted successfully.');
} catch (error) {
console.error('Error deleting upload endpoint:', error);
}Response
connectByStudio#
Establishes a connection with a Blocklet Store via Blocklet Studio.
Parameters
Example
Connect by Studio
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
const { url } = await client.mutation.connectByStudio({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
storeId: 'store_abc',
storeUrl: 'https://studio.blocklet.dev',
storeName: 'Blocklet Studio',
blockletTitle: 'My Awesome Blocklet',
type: 'publish',
},
});
console.log('Connect by Studio URL:', url);
} catch (error) {
console.error('Error connecting by Studio:', error);
}Response