Management API client SDK (@auth-platform/management-client)#
Node.js 22 以降で Management API を呼び出す型付き Client である。API key をサーバー側に保持し、ブラウザーやモバイルアプリへ含めない。API の認証・Scope・path は Management API を参照する。
インストールと Client の作成#
pnpm add @auth-platform/management-client
import { createManagementClient } from "@auth-platform/management-client";
const apiKey = process.env.AUTH_PLATFORM_API_KEY;
if (apiKey === undefined || apiKey.length === 0) {
throw new Error("AUTH_PLATFORM_API_KEY is required");
}
const client = createManagementClient({
baseUrl: "https://api.zeroword.smartcrab.ai/v1",
apiKey,
});
| Option | 型 | 説明 |
|---|---|---|
baseUrl |
string |
Management API root。/v1 まで含める。末尾の / は正規化される。 |
apiKey |
string |
sk_live_... 形式の Management API key。 |
fetch |
typeof fetch (optional) |
transport に使う fetch implementation。省略時は global fetch。 |
baseUrl は http: / https: のみ受け付ける。不正 URL、その他の protocol、空 key は TypeError となる。全 request で Authorization: Bearer <apiKey> を送り、key を log しない。API key 自体に Workspace context が固定されるため、この client に X-Workspace-Id option はない。Dashboard session cookie 認証には使わない。
Result とレスポンス#
各 method は throw ではなく ResultAsync<T, ManagementClientError> (Promise<Result<T, E>>) を返す。Result は { type: "Success", value } または { type: "Failure", error } の tagged union である。
import { isFailure } from "@auth-platform/management-client";
const result = await client.listClients({ environment_id: "env_…", limit: 10 });
if (isFailure(result)) {
if (result.error.type === "api_error") {
console.error(result.error.status, result.error.code, result.error.requestId);
} else {
console.error(result.error.type);
}
} else {
console.log(result.value.data.items);
console.log("request id:", result.value.requestId);
}
成功時の value は ManagementResponse<T> であり、data、requestId、etag を持つ。Response body は Management contract の schema で検証される。ETag 対応 route は etag を返し、次の write の If-Match に利用できる。
| Error type | 意味 |
|---|---|
api_error |
Server が non-2xx を返した。Problem Details の status, code, title と、response に存在する場合は detail, problemType, requestId を含む。429 と 5xx では retryable: true。 |
network_error |
HTTP response を受信できなかった。retryable: true。 |
invalid_request |
SDK が request body を送信前に schema 検証し、失敗した。 |
invalid_response |
2xx response body が route schema に一致しない。 |
ApiError の requestId は support への問い合わせに使う。認証・Scope・HTTP status の扱いは Problem Details を参照する。
Write options#
各 write method は WriteOptions を受け付ける。
const current = await client.getClient("cli_…");
if (isFailure(current)) throw current.error;
const writeOptions = current.value.etag === undefined
? { idempotencyKey: crypto.randomUUID() }
: { idempotencyKey: crypto.randomUUID(), ifMatch: current.value.etag };
const updated = await client.updateClient(
"cli_…",
{ name: "New client name" },
writeOptions,
);
idempotencyKey を省略すると SDK が write ごとに UUID を生成する。同一 write を再送する場合は、最初の request と同じ idempotencyKey を渡す。ifMatch を指定すると If-Match header に送る。Resource が変わっていた場合、server は 412 precondition_failed を返す。Theme、Environment settings、Impersonation route は SDK に method がなく、Idempotency-Key にも対応しない。
Pagination#
List method は page response (data.items, data.next_cursor) を返す。paginate は cursor をたどり、各 page の Result を AsyncGenerator として返す。Failure は一度 yield して終了する。collectAll は全 page の item を配列に集める。既定で 100 page を上限とし、必要に応じて maxPages を指定する。
import { collectAll, isFailure } from "@auth-platform/management-client";
const projects = await collectAll((cursor) =>
client.listProjects({
workspace_id: "wsp_…",
limit: 50,
...(cursor === null ? {} : { cursor }),
}),
);
if (isFailure(projects)) {
console.error(projects.error);
} else {
console.log(projects.value);
}
ページごとの response metadata が必要な場合は paginate を使う。
import { isFailure, paginate } from "@auth-platform/management-client";
for await (const page of paginate((cursor) =>
client.listProjects({
workspace_id: "wsp_…",
limit: 50,
...(cursor === null ? {} : { cursor }),
}),
)) {
if (isFailure(page)) {
console.error(page.error);
break;
}
for (const project of page.value.data.items) console.log(project.id);
}
Method reference#
| Area | Methods |
|---|---|
| Workspaces / members | listWorkspaces, createWorkspace, getWorkspace, updateWorkspace, listWorkspaceMembers |
| Projects | listProjects, createProject, getProject, updateProject, deleteProject |
| Environments / RP migration | listEnvironments, createEnvironment, getEnvironment, updateEnvironment, deleteEnvironment, getRpMigration, disableLegacyRp |
| Clients | listClients, createClient, getClient, updateClient, deleteClient, rotateClientSecret |
| Connections | listConnections, createConnection, updateConnection, deleteConnection |
| Domains | listDomains, createDomain, getDomain, updateDomain, deleteDomain, retryDomainValidation |
| Users | listUsers, createUser, getUser, updateUser, deleteUser, blockUser, unblockUser |
| User identities / passkeys / sessions | listUserIdentities, deleteUserIdentity, listUserPasskeys, deleteUserPasskey, listUserSessions, revokeUserSession, revokeAllUserSessions |
| User import / export jobs | createUserImportJob, getUserImportJob, createUserExportJob, getUserExportJob |
| Webhooks / deliveries | listWebhooks, createWebhook, updateWebhook, deleteWebhook, listWebhookDeliveries, testWebhook, rotateWebhookSecret |
| Audit / usage / billing | listAuditEvents, getMauUsage, createBillingCheckoutSession, createBillingPortalSession |
create / update / list の入力型と WriteOptions は package root から export される(例: ClientCreateInput、UserListParams、WebhookCreateInput)。
createWorkspace は Dashboard session 専用 route に対応するため、Management API key で呼ぶと認証されない。SDK には API key create/list/revoke、Environment settings/theme、Impersonation、import error report download、export download の method はない。これらの HTTP path と Scope は Management API resource reference を参照する。