SDK
@wport/sdk
@wport/sdk 是 W101 Talent Search Hub 公開 API 的官方 TypeScript/JavaScript SDK,提供與 @wport/cli 相同的能力,作為型別化函式庫給你自己的程式使用。公開職缺搜尋免憑證;企業招募操作用你的 wpk_live_ API key。
狀態:0.x —— 公開 jobs.* 與企業 jobs.* 線。求職者的 personal.* 線尚未啟用,呼叫會 throw PersonalNotEnabledError。
安裝
bash
npm install @wport/sdkNode ≥ 18.17,隨附 ESM + CJS + 型別宣告。
Quickstart
免憑證:公開職缺搜尋 / 檢視。
ts
import { WportClient } from '@wport/sdk';
// Keyless:公開職缺搜尋 / 檢視
const wport = new WportClient();
const page = await wport.jobs.search({ keyword: 'backend' });
const job = await wport.jobs.view(page.data[0].enc_id);企業:把 API key 傳進建構子(SDK 只認建構子注入)。
ts
import { WportClient } from '@wport/sdk';
// Enterprise:建構子注入 API key(SDK 不自行讀 config / env)
const ent = new WportClient({ apiKey: process.env.WPORT_API_KEY });
const created = await ent.enterprise.jobs.create({ title: '...' });
await ent.enterprise.jobs.update(created.enc_id, { title: '...' }, { ifMatch: '...' });
// batch = { succeeded: [{index, enc_id}], failed: [{index, error_path}] }
// 部分成功會回傳,不會 throw
const batch = await ent.enterprise.jobs.bulkCreate([{ title: 'a' }, { title: 'b' }]);WportClient 選項
ts
new WportClient({
apiKey?: string, // 企業線;純公開用途可省略
apiBase?: string, // 預設 https://api.wport.me
locale?: string, // 預設 zh-TW
timeoutMs?: number, // 預設 30000
});可依賴的行為
- 認證僅由建構子注入。未帶 key → 企業方法在送出任何請求前就 throw AuthRequiredError。
- Idempotency:企業寫入自動帶 Idempotency-Key(後端要求)。
- 型別化錯誤(全部繼承 WportError);SDK 不設 process exit code —— 那是 CLI 的事。
- Batch 走 server 端 batch endpoint(每次 1–10 筆),無法超過 server 上限。
- 每個請求標記 X-Source: typescript_sdk 供稽核。
型別化錯誤
| 類別 | 說明 |
|---|---|
| WportError | 所有 SDK 錯誤的基底類別 |
| WportHttpError | HTTP 非 2xx;帶 status 與 body |
| WportNetworkError | 連線 / 逾時等網路層錯誤 |
| AuthRequiredError | 未帶 key 就呼叫企業方法(送出請求前即 throw) |
| PersonalNotEnabledError | personal.* 尚未啟用時呼叫會 throw |
Exports
WportClient、WportClientOptions、上述錯誤類別,以及結果/查詢型別:
WportClientWportClientOptionsWportErrorWportHttpErrorWportNetworkErrorAuthRequiredErrorPersonalNotEnabledErrorJobSearchItemJobViewSearchQueryPaginatedBodyCreatedJobEnterpriseJobItemEnterpriseJobsListQueryEnterpriseJobUpdateOptionsBatchResult