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

input
RequestCreateProjectInput
required
An object containing the project details.
6 subfields

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

ResponseProject
object
2 subfields

updateProject#

Updates the details of an existing project, such as its title, description, or introduction.

Parameters

input
RequestUpdateProjectInput
required
An object containing the project details to update.
10 subfields

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

ResponseProject
object
2 subfields

deleteProject#

Permanently deletes a project. This action cannot be undone.

Parameters

input
RequestProjectInput
required
An object containing the project identifier.
2 subfields

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

GeneralResponse
object
1 subfields


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

input
RequestCreateReleaseInput
required
An object containing the release details.
8 subfields

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

ResponseRelease
object
2 subfields

deleteRelease#

Permanently deletes a release from a project.

Parameters

input
RequestReleaseInput
required
An object containing the release identifier.
3 subfields

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

GeneralResponse
object
1 subfields


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

input
RequestUpdateSelectedResourcesInput
required
An object containing the resource selection details.
5 subfields

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

GeneralResponse
object
1 subfields


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

input
RequestConnectToStoreInput
required
An object containing the store connection details.
5 subfields

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

ResponseConnectToStore
object
2 subfields

publishToStore#

Publishes a specific release of a project to a connected Blocklet Store.

Parameters

input
RequestPublishToStoreInput
required
An object containing the publishing details.
5 subfields

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

ResponsePublishToStore
object
2 subfields

disconnectFromStore#

Disconnects a project from a Blocklet Store, removing the association.

Parameters

input
RequestDisconnectFromStoreInput
required
An object containing the details for disconnecting from the store.
4 subfields

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

ResponseDisconnectFromStore
object
1 subfields

connectToAigne#

Connects a blocklet to an AIGNE service, which provides AI capabilities.

Parameters

input
RequestConnectToAigneInput
required
An object containing AIGNE connection details.
4 subfields

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

ResponseConnectToEndpoint
object
2 subfields

disconnectToAigne#

Disconnects a blocklet from an AIGNE service.

Parameters

input
RequestDisconnectToAigneInput
required
An object containing details for disconnecting from AIGNE.
3 subfields

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

GeneralResponse
object
1 subfields

verifyAigneConnection#

Verifies the connection to an AIGNE service for a blocklet.

Parameters

input
RequestVerifyAigneConnectionInput
required
An object containing the blocklet DID.
1 subfields

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

GeneralResponse
object
1 subfields

connectToEndpoint#

Establishes a connection between a project and a generic publishing endpoint.

Parameters

input
RequestConnectToEndpointInput
required
Details for connecting to the endpoint.
3 subfields

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

ResponseConnectToEndpoint
object
2 subfields

publishToEndpoint#

Publishes a specific release of a project to a connected endpoint.

Parameters

input
RequestPublishToEndpointInput
required
Details for publishing to the endpoint.
4 subfields

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

ResponsePublishToEndpoint
object
2 subfields

disconnectFromEndpoint#

Disconnects a project from a publishing endpoint.

Parameters

input
RequestDisconnectFromEndpointInput
required
Details for disconnecting from the endpoint.
3 subfields

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

GeneralResponse
object
1 subfields

addUploadEndpoint#

Adds a new upload endpoint for a team.

Parameters

input
RequestAddUploadEndpointInput
required
Details for the new upload endpoint.
3 subfields

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

GeneralResponse
object
1 subfields

deleteUploadEndpoint#

Deletes an existing upload endpoint.

Parameters

input
RequestDeleteUploadEndpointInput
required
Details for deleting the upload endpoint.
4 subfields

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

GeneralResponse
object
1 subfields

connectByStudio#

Establishes a connection with a Blocklet Store via Blocklet Studio.

Parameters

input
RequestConnectByStudioInput
required
Details for connecting via Blocklet Studio.
9 subfields

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

ResponseConnectByStudio
object
2 subfields