SDK

ArchylはNode.jsとPython向けの公式SDKを提供しています。どちらもREST APIの軽量なラッパーで、認証、シリアライズ、エラーハンドリングを代わりに処理します。

インストール

Node.js

npm install @archyl/sdk

Python

pip install archyl-sdk

クイックスタート

Node.js

import { ArchylClient } from "@archyl/sdk";

const client = new ArchylClient({
  apiKey: process.env.ARCHYL_API_KEY,
  organizationId: "your-org-id",
});

// List projects
const projects = await client.projects.list();

// Get C4 model
const model = await client.projects.getC4Model("project-id");

// Compute drift score
const drift = await client.governance.computeDrift("project-id");

// Create an ADR
const adr = await client.docs.createADR("project-id", {
  title: "Use PostgreSQL for persistence",
  status: "accepted",
  context: "We need a relational database for transactional data.",
  decision: "Adopt PostgreSQL 16 as the primary datastore.",
  consequences: "Team must learn PostgreSQL-specific features.",
});

Python

from archyl import ArchylClient

client = ArchylClient(
    api_key=os.environ["ARCHYL_API_KEY"],
    organization_id="your-org-id",
)

# List projects
projects = client.projects.list()

# Get C4 model
model = client.projects.get_c4_model("project-id")

# Compute drift score
drift = client.governance.compute_drift("project-id")

# Create an ADR
adr = client.docs.create_adr("project-id",
    title="Use PostgreSQL for persistence",
    status="accepted",
    context="We need a relational database for transactional data.",
    decision="Adopt PostgreSQL 16 as the primary datastore.",
    consequences="Team must learn PostgreSQL-specific features.",
)

APIリファレンス

プロジェクト

メソッド 説明
projects.list() 組織内のすべてのプロジェクトを一覧表示
projects.get(projectId) IDでプロジェクトを取得
projects.create(data) 新しいプロジェクトを作成
projects.getC4Model(projectId) プロジェクトのC4モデル全体を取得
projects.getAgentContext(projectId) アーキテクチャのコンテキスト(ルール、テクノロジーレーダー、決定事項)を取得

C4モデル

メソッド 説明
c4.createSystem(projectId, data) システムを作成
c4.updateSystem(projectId, systemId, data) システムを更新
c4.createContainer(projectId, systemId, data) コンテナを作成
c4.updateContainer(projectId, containerId, data) コンテナを更新
c4.createComponent(projectId, containerId, data) コンポーネントを作成
c4.createRelationship(projectId, data) 要素間のリレーションシップを作成
c4.listRelationships(projectId) すべてのリレーションシップを一覧表示

ガバナンス

メソッド 説明
governance.runConformanceCheck(projectId, data) ファイルに対して適合性ルールを実行
governance.getReport(checkId) チェックの完全なレポートを取得
governance.listRules() すべての適合性ルールを一覧表示
governance.createRule(data) 適合性ルールを作成
governance.getStats(projectId?) 適合性の統計情報を取得
governance.computeDrift(projectId) プロジェクトのドリフトスコアを算出
governance.getDriftScore(projectId) 最新のドリフトスコアを取得
governance.getDriftHistory(projectId) ドリフトスコアの推移を取得

DORAメトリクス

メソッド 説明
dora.getMetrics(projectId) 現在のDORAメトリクスを取得
dora.getTrend(projectId) DORAメトリクスの推移を取得

ドキュメント

メソッド 説明
docs.listADRs(projectId) アーキテクチャ決定記録を一覧表示
docs.createADR(projectId, data) ADRを作成
docs.listReleases(projectId) リリースを一覧表示
docs.createRelease(projectId, data) リリースを作成
docs.listChangeRequests(projectId) 変更リクエストを一覧表示
docs.createChangeRequest(projectId, data) 変更リクエストを作成

エラーハンドリング

どちらのSDKも、APIから返されたHTTPステータスコードとエラーの詳細を含む型付きのエラーをスローします。

Node.js

import { ArchylError } from "@archyl/sdk";

try {
  await client.projects.get("nonexistent-id");
} catch (error) {
  if (error instanceof ArchylError) {
    console.error(error.status); // 404
    console.error(error.code); // "NOT_FOUND"
    console.error(error.message); // "Project not found"
  }
}

Python

from archyl import ArchylError

try:
    client.projects.get("nonexistent-id")
except ArchylError as e:
    print(e.status)   # 404
    print(e.code)     # "NOT_FOUND"
    print(e.message)  # "Project not found"

主なステータスコード:

コード 意味
400 Bad Request - 無効なパラメータ
401 Unauthorized - 無効または欠落したAPIキー
403 Forbidden - 権限不足
404 Not Found - リソースが存在しない
429 Too Many Requests - レート制限の超過
500 Internal Server Error

設定

カスタムベースURL

セルフホストのArchylインスタンスでは、カスタムの baseUrl を渡します:

const client = new ArchylClient({
  apiKey: "your-api-key",
  organizationId: "your-org-id",
  baseUrl: "https://archyl.your-company.com/api/v1",
});
client = ArchylClient(
    api_key="your-api-key",
    organization_id="your-org-id",
    base_url="https://archyl.your-company.com/api/v1",
)

ソースコード

どちらのSDKもオープンソースです:

次のステップ