跳到主要內容

發布與專案

本節詳細介紹了可用於管理 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 — 租戶的範圍。

範例

Create Project

javascript
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 — 新建立的專案物件。

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。

範例

Update Project

javascript
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 — 已更新的專案物件。

deleteProject

永久刪除一個專案。此操作無法復原。

參數

  • input RequestProjectInput (required) — 一個包含專案識別碼的物件。
    • did string (required) — 擁有該專案的 Blocklet 的 DID。
    • projectId string (required) — 要刪除的專案的 ID。

範例

Delete Project

javascript
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 — 表示操作的結果。

發布管理

這些突變用於為您的專案建立和管理發布。

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 的陣列。

範例

Create Release

javascript
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 — 新建立的發布物件。

deleteRelease

從專案中永久刪除一個發布。

參數

  • input RequestReleaseInput (required) — 一個包含發布識別碼的物件。
    • did string (required) — 擁有該專案的 Blocklet 的 DID。
    • projectId string (required) — 包含該發布的專案的 ID。
    • releaseId string (required) — 要刪除的發布的 ID。

範例

Delete Release

javascript
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 — 表示操作的結果。

資源管理

此突變用於管理與專案發布相關的資源。

updateSelectedResources

更新專案中某個元件特定發布所選的資源列表。

參數

  • input RequestUpdateSelectedResourcesInput (required) — 一個包含資源選擇詳細資訊的物件。
    • did string (required) — 擁有該專案的 Blocklet 的 DID。
    • projectId string (required) — 專案的 ID。
    • releaseId string (required) — 發布的 ID。
    • componentDid string (required) — 正在更新其資源的元件的 DID。
    • resources string[] (required) — 一個要選擇的資源識別碼陣列。

範例

Update Selected Resources

javascript
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 — 表示操作的結果。

商店與端點連接

這些突變管理您的專案與各種發布目的地(如 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。

範例

Connect to Store

javascript
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。

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。

範例

Publish to Store

javascript
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。

disconnectFromStore

將專案與 Blocklet 商店斷開連接,移除關聯。

參數

  • input RequestDisconnectFromStoreInput (required) — 一個包含從商店斷開連接詳細資訊的物件。
    • did string (required) — 擁有該專案的 Blocklet 的 DID。
    • storeId string (required) — 要斷開連接的商店的 ID。
    • projectId string (required) — 要斷開連接的專案的 ID。
    • storeScope string — 商店連接的範圍。

範例

Disconnect from Store

javascript
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 — 表示操作的結果。

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')。

範例

Connect to AIGNE

javascript
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。

disconnectToAigne

將一個 Blocklet 與 AIGNE 服務斷開連接。

參數

  • input RequestDisconnectToAigneInput (required) — 一個包含從 AIGNE 斷開連接詳細資訊的物件。
    • did string (required) — 要斷開連接的 Blocklet 的 DID。
    • url string (required) — 要斷開連接的 AIGNE 服務的 URL。
    • key string (required) — 用於連接的 API 金鑰。

範例

Disconnect from AIGNE

javascript
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 — 表示操作的結果。

verifyAigneConnection

驗證 Blocklet 與 AIGNE 服務的連接。

參數

  • input RequestVerifyAigneConnectionInput (required) — 一個包含 Blocklet DID 的物件。
    • did string (required) — 要驗證其 AIGNE 連接的 Blocklet 的 DID。

範例

Verify AIGNE Connection

javascript
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 — 表示操作的結果。

connectToEndpoint

在專案和一個通用發布端點之間建立連接。

參數

  • input RequestConnectToEndpointInput (required) — 連接到端點的詳細資訊。
    • did string (required) — 擁有該專案的 Blocklet 的 DID。
    • endpointId string (required) — 要連接的端點的 ID。
    • projectId string (required) — 專案的 ID。

範例

Connect to Endpoint

javascript
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。

publishToEndpoint

將專案的特定發布發布到已連接的端點。

參數

  • input RequestPublishToEndpointInput (required) — 發布到端點的詳細資訊。
    • did string (required) — 擁有該專案的 Blocklet 的 DID。
    • endpointId string (required) — 目標端點的 ID。
    • projectId string (required) — 正在發布的專案的 ID。
    • releaseId string (required) — 要發布的版本的 ID。

範例

Publish to Endpoint

javascript
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。

disconnectFromEndpoint

將專案與發布端點斷開連接。

參數

  • input RequestDisconnectFromEndpointInput (required) — 從端點斷開連接的詳細資訊。
    • did string (required) — 擁有該專案的 Blocklet 的 DID。
    • endpointId string (required) — 要斷開連接的端點的 ID。
    • projectId string (required) — 專案的 ID。

範例

Disconnect from Endpoint

javascript
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 — 表示操作的結果。

addUploadEndpoint

為團隊新增一個上傳端點。

參數

  • input RequestAddUploadEndpointInput (required) — 新上傳端點的詳細資訊。
    • teamDid string (required) — 團隊的 DID。
    • url string (required) — 上傳端點的 URL。
    • scope string — 端點的範圍。

範例

Add Upload Endpoint

javascript
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 — 表示操作的結果。

deleteUploadEndpoint

刪除一個現有的上傳端點。

參數

  • input RequestDeleteUploadEndpointInput (required) — 刪除上傳端點的詳細資訊。
    • teamDid string (required) — 團隊的 DID。
    • did string (required) — 要刪除的上傳端點的 DID。
    • scope string — 端點的範圍。
    • projectId string — 關聯專案的 ID。

範例

Delete Upload Endpoint

javascript
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 — 表示操作的結果。

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。

範例

Connect by Studio

javascript
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。