本節詳細介紹了可用於管理 Blocklet 專案整個生命週期的突變,從建立和發布管理到與 Blocklet 商店連接以及發布您的工作。這些突變可以對您的專案如何開發、版本控制和分發進行程式化控制。
若要擷取專案相關資料,請參閱 發布與專案查詢 文件。
專案管理
這些突變處理您的開發專案的建立、修改和刪除。
createProject
為指定的 Blocklet 元件建立一個新專案,為未來的發布和發行做準備。
參數
- input
RequestCreateProjectInput(required) — 一個包含專案詳細資訊的物件。- did
string(required) — 擁有該專案的 Blocklet 的 DID。 - type
PublishType(required) — 專案類型,可以是 'resource' 或 'pack'。 - blockletDid
string(required) — 正在發布的 Blocklet 的 DID。 - blockletTitle
string(required) — Blocklet 的標題。 - componentDid
string— 與專案關聯的元件的 DID。 - tenantScope
string— 租戶的範圍。
- did
範例
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.id);
} catch (error) {
console.error('建立專案時發生錯誤:', error);
}回應
- ResponseProject
object- code
StatusCode— 表示操作的結果。 - project
Project— 新建立的專案物件。
- code
updateProject
更新現有專案的詳細資訊,例如其標題、描述或介紹。
參數
- input
RequestUpdateProjectInput(required) — 一個包含要更新的專案詳細資訊的物件。- did
string(required) — 擁有該專案的 Blocklet 的 DID。 - projectId
string(required) — 要更新的專案的 ID。 - blockletTitle
string— Blocklet 的新標題。 - blockletDescription
string— Blocklet 的新描述。 - blockletIntroduction
string— Blocklet 的新介紹。 - autoUpload
boolean— 是否自動上傳資源。 - possibleSameStore
boolean— 是否可以發布到同一個商店。 - blockletSupport
string— Blocklet 支援的 URL。 - blockletCommunity
string— Blocklet 社群的 URL。 - blockletHomepage
string— Blocklet 首頁的 URL。
- did
範例
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.id);
} catch (error) {
console.error('更新專案時發生錯誤:', error);
}回應
- ResponseProject
object- code
StatusCode— 表示操作的結果。 - project
Project— 已更新的專案物件。
- code
deleteProject
永久刪除一個專案。此操作無法復原。
參數
- input
RequestProjectInput(required) — 一個包含專案識別碼的物件。- did
string(required) — 擁有該專案的 Blocklet 的 DID。 - projectId
string(required) — 要刪除的專案的 ID。
- did
範例
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('專案刪除成功。');
} catch (error) {
console.error('刪除專案時發生錯誤:', error);
}回應
- GeneralResponse
object- code
StatusCode— 表示操作的結果。
- code
發布管理
這些突變用於為您的專案建立和管理發布。
createRelease
為專案建立一個新發布,擷取具有相關元資料的特定版本的 Blocklet。
參數
- input
RequestCreateReleaseInput(required) — 一個包含發布詳細資訊的物件。- did
string(required) — 擁有該專案的 Blocklet 的 DID。 - projectId
string(required) — 此發布所屬專案的 ID。 - blockletDid
string(required) — 此發布的 Blocklet 版本的 DID。 - blockletVersion
string(required) — Blocklet 的版本號。 - note
string— 發布說明或變更摘要。 - blockletTitle
string— 此發布的標題。 - blockletDescription
string— 此發布的描述。 - blockletScreenshots
string[]— 一個包含螢幕截圖 URL 的陣列。
- did
範例
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.id);
} catch (error) {
console.error('建立發布時發生錯誤:', error);
}回應
- ResponseRelease
object- code
StatusCode— 表示操作的結果。 - release
Release— 新建立的發布物件。
- code
deleteRelease
從專案中永久刪除一個發布。
參數
- input
RequestReleaseInput(required) — 一個包含發布識別碼的物件。- did
string(required) — 擁有該專案的 Blocklet 的 DID。 - projectId
string(required) — 包含該發布的專案的 ID。 - releaseId
string(required) — 要刪除的發布的 ID。
- did
範例
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('發布刪除成功。');
} catch (error) {
console.error('刪除發布時發生錯誤:', error);
}回應
- GeneralResponse
object- code
StatusCode— 表示操作的結果。
- code
資源管理
此突變用於管理與專案發布相關的資源。
updateSelectedResources
更新專案中某個元件特定發布所選的資源列表。
參數
- input
RequestUpdateSelectedResourcesInput(required) — 一個包含資源選擇詳細資訊的物件。- did
string(required) — 擁有該專案的 Blocklet 的 DID。 - projectId
string(required) — 專案的 ID。 - releaseId
string(required) — 發布的 ID。 - componentDid
string(required) — 正在更新其資源的元件的 DID。 - resources
string[](required) — 一個要選擇的資源識別碼陣列。
- did
範例
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('已選資源已更新。');
} catch (error) {
console.error('更新資源時發生錯誤:', error);
}回應
- GeneralResponse
object- code
StatusCode— 表示操作的結果。
- code
商店與端點連接
這些突變管理您的專案與各種發布目的地(如 Blocklet 商店和端點)之間的連接。
connectToStore
啟動專案與 Blocklet 商店之間的連接,並返回一個用於完成授權過程的 URL。
參數
- input
RequestConnectToStoreInput(required) — 一個包含商店連接詳細資訊的物件。- did
string(required) — 擁有該專案的 Blocklet 的 DID。 - storeId
string(required) — Blocklet 商店的唯一識別碼。 - storeUrl
string(required) — Blocklet 商店的 URL。 - storeName
string(required) — Blocklet 商店的名稱。 - projectId
string(required) — 要連接的專案的 ID。
- did
範例
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('連接到商店的 URL:', url);
} catch (error) {
console.error('連接到商店時發生錯誤:', error);
}回應
- ResponseConnectToStore
object- code
StatusCode— 表示操作的結果。 - url
string— 用於完成連接的授權 URL。
- code
publishToStore
將專案的特定發布發布到已連接的 Blocklet 商店。
參數
- input
RequestPublishToStoreInput(required) — 一個包含發布詳細資訊的物件。- did
string(required) — 擁有該專案的 Blocklet 的 DID。 - projectId
string(required) — 正在發布的專案的 ID。 - releaseId
string(required) — 要發布的版本的 ID。 - type
string(required) — 正在發布的內容類型(例如 'resource')。 - storeId
string(required) — 目標 Blocklet 商店的 ID。
- did
範例
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('發布到商店的 URL:', url);
} catch (error) {
console.error('發布到商店時發生錯誤:', error);
}回應
- ResponsePublishToStore
object- code
StatusCode— 表示操作的結果。 - url
string— 一個用於追蹤發布過程狀態的 URL。
- code
disconnectFromStore
將專案與 Blocklet 商店斷開連接,移除關聯。
參數
- input
RequestDisconnectFromStoreInput(required) — 一個包含從商店斷開連接詳細資訊的物件。- did
string(required) — 擁有該專案的 Blocklet 的 DID。 - storeId
string(required) — 要斷開連接的商店的 ID。 - projectId
string(required) — 要斷開連接的專案的 ID。 - storeScope
string— 商店連接的範圍。
- did
範例
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('成功從商店斷開連接。');
} catch (error) {
console.error('從商店斷開連接時發生錯誤:', error);
}回應
- ResponseDisconnectFromStore
object- code
StatusCode— 表示操作的結果。
- code
connectToAigne
將一個 Blocklet 連接到提供 AI 功能的 AIGNE 服務。
參數
- input
RequestConnectToAigneInput(required) — 一個包含 AIGNE 連接詳細資訊的物件。- did
string(required) — 要連接的 Blocklet 的 DID。 - baseUrl
string(required) — AIGNE 服務的基礎 URL。 - provider
string(required) — AI 提供商(例如 'openai')。 - model
string(required) — 要使用的特定模型(例如 'gpt-4')。
- did
範例
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('連接到 AIGNE 的 URL:', url);
} catch (error) {
console.error('連接到 AIGNE 時發生錯誤:', error);
}回應
- ResponseConnectToEndpoint
object- code
StatusCode— 表示操作的結果。 - url
string— 用於完成連接的授權 URL。
- code
disconnectToAigne
將一個 Blocklet 與 AIGNE 服務斷開連接。
參數
- input
RequestDisconnectToAigneInput(required) — 一個包含從 AIGNE 斷開連接詳細資訊的物件。- did
string(required) — 要斷開連接的 Blocklet 的 DID。 - url
string(required) — 要斷開連接的 AIGNE 服務的 URL。 - key
string(required) — 用於連接的 API 金鑰。
- did
範例
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('成功從 AIGNE 斷開連接。');
} catch (error) {
console.error('從 AIGNE 斷開連接時發生錯誤:', error);
}回應
- GeneralResponse
object- code
StatusCode— 表示操作的結果。
- code
verifyAigneConnection
驗證 Blocklet 與 AIGNE 服務的連接。
參數
- input
RequestVerifyAigneConnectionInput(required) — 一個包含 Blocklet DID 的物件。- did
string(required) — 要驗證其 AIGNE 連接的 Blocklet 的 DID。
- did
範例
Verify AIGNE Connection
import BlockletServerClient from '@blocklet/server-js';
const client = new BlockletServerClient();
try {
await client.mutation.verifyAigneConnection({
input: {
did: 'z8iZpA522J9Q2i8mY8J2mY6J2mY8J2mY6J2',
},
});
console.log('AIGNE 連接驗證成功。');
} catch (error) {
console.error('驗證 AIGNE 連接時發生錯誤:', error);
}回應
- GeneralResponse
object- code
StatusCode— 表示操作的結果。
- code
connectToEndpoint
在專案和一個通用發布端點之間建立連接。
參數
- input
RequestConnectToEndpointInput(required) — 連接到端點的詳細資訊。- did
string(required) — 擁有該專案的 Blocklet 的 DID。 - endpointId
string(required) — 要連接的端點的 ID。 - projectId
string(required) — 專案的 ID。
- did
範例
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('連接到端點的 URL:', url);
} catch (error) {
console.error('連接到端點時發生錯誤:', error);
}回應
- ResponseConnectToEndpoint
object- code
StatusCode— 表示操作的結果。 - url
string— 用於完成連接的授權 URL。
- code
publishToEndpoint
將專案的特定發布發布到已連接的端點。
參數
- input
RequestPublishToEndpointInput(required) — 發布到端點的詳細資訊。- did
string(required) — 擁有該專案的 Blocklet 的 DID。 - endpointId
string(required) — 目標端點的 ID。 - projectId
string(required) — 正在發布的專案的 ID。 - releaseId
string(required) — 要發布的版本的 ID。
- did
範例
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('發布到端點的 URL:', url);
} catch (error) {
console.error('發布到端點時發生錯誤:', error);
}回應
- ResponsePublishToEndpoint
object- code
StatusCode— 表示操作的結果。 - url
string— 一個用於追蹤發布狀態的 URL。
- code
disconnectFromEndpoint
將專案與發布端點斷開連接。
參數
- input
RequestDisconnectFromEndpointInput(required) — 從端點斷開連接的詳細資訊。- did
string(required) — 擁有該專案的 Blocklet 的 DID。 - endpointId
string(required) — 要斷開連接的端點的 ID。 - projectId
string(required) — 專案的 ID。
- did
範例
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('成功從端點斷開連接。');
} catch (error) {
console.error('從端點斷開連接時發生錯誤:', error);
}回應
- GeneralResponse
object- code
StatusCode— 表示操作的結果。
- code
addUploadEndpoint
為團隊新增一個上傳端點。
參數
- input
RequestAddUploadEndpointInput(required) — 新上傳端點的詳細資訊。- teamDid
string(required) — 團隊的 DID。 - url
string(required) — 上傳端點的 URL。 - scope
string— 端點的範圍。
- teamDid
範例
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('上傳端點新增成功。');
} catch (error) {
console.error('新增上傳端點時發生錯誤:', error);
}回應
- GeneralResponse
object- code
StatusCode— 表示操作的結果。
- code
deleteUploadEndpoint
刪除一個現有的上傳端點。
參數
- input
RequestDeleteUploadEndpointInput(required) — 刪除上傳端點的詳細資訊。- teamDid
string(required) — 團隊的 DID。 - did
string(required) — 要刪除的上傳端點的 DID。 - scope
string— 端點的範圍。 - projectId
string— 關聯專案的 ID。
- teamDid
範例
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('上傳端點刪除成功。');
} catch (error) {
console.error('刪除上傳端點時發生錯誤:', error);
}回應
- GeneralResponse
object- code
StatusCode— 表示操作的結果。
- code
connectByStudio
透過 Blocklet Studio 與 Blocklet 商店建立連接。
參數
- input
RequestConnectByStudioInput(required) — 透過 Blocklet Studio 連接的詳細資訊。- did
string(required) — Blocklet 的 DID。 - storeId
string(required) — 商店的 ID。 - storeUrl
string(required) — 商店的 URL。 - storeName
string(required) — 商店的名稱。 - blockletTitle
string(required) — Blocklet 的標題。 - type
string(required) — 連接類型。 - tenantScope
string— 租戶的範圍。 - componentDid
string— 元件的 DID。 - messageId
string— 用於追蹤的訊息 ID。
- did
範例
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('透過 Studio 連接的 URL:', url);
} catch (error) {
console.error('透過 Studio 連接時發生錯誤:', error);
}回應
- ResponseConnectByStudio
object- code
StatusCode— 表示操作的結果。 - url
string— 完成連接過程的 URL。
- code