API 連携の準備
お客様のシステムから CRISIS API を利用するために必要な準備を、ステップバイステップで案内します。 すべてのセットアップは CRISIS の Web UI で行い、発行したアクセストークンを使って API にリクエストを送信します。
概要
CRISIS API への連携は、次の流れで進めます。
サービスアカウントを作成
Web UI で用途ごとのサービスアカウントを作成
アクセストークンを発行
Bearer トークンを発行し、安全に保管
IAM でアクセス範囲を設定
CRN とパーミッションで最小権限を設定
API にリクエストを送信
Authorization: Bearer {token} ヘッダで認証
ベース URL は https://api.crisis.jp/v1 です。すべてのエンドポイントで Bearer トークンによる認証が必要です。
1. サービスアカウントを作成
CRISIS の Web UI からサービスアカウントを作成します。 サービスアカウントは API 連携専用のアカウントで、人間のユーザーアカウントとは分離されています。
用途ごとに分けて作成することを推奨します。 たとえば「ワークフローパブリッシュ用」「インシデント操作用」「資産管理用」など、役割を明確にすることで、 不要な権限を持たせないセキュリティ設計が実現できます。
サービスアカウントの分離例
- ワークフローパブリッシュ専用 —
organization.workflow_topic:publishのみ - インシデント操作専用 —
organization.incident:* - 資産管理専用 —
organization.asset_item:* - ユーザー管理専用 —
organization.user:*
2. アクセストークンを発行
サービスアカウントのアクセストークンを Web UI から発行します。 トークンは作成時のレスポンスでのみ表示されます。 後から確認することはできないため、必ず安全な場所に保管してください。
⚠ トークンの保管について
- アクセストークンを環境変数に直接記述しないでください
- AWS Secrets Manager、Google Secret Manager、HashiCorp Vault などのシークレット管理サービスの利用を推奨します
- 不要になったトークンは速やかに
DELETE …/access_tokens/{id}で削除してください
CI/CD やクラウドサービスからの連携(GitHub Actions・Google Cloud など OIDC 対応環境)では、 Workload Identity Federation を利用すると、静的アクセストークン不要で認証できます。
3. IAM でアクセス範囲を設定
サービスアカウントの IAM にロールをバインドし、操作可能なリソース(CRN)とアクション(パーミッション)を制限します。 IAM の詳細は 認証・IAM・セキュリティガイド を参照してください。
パーミッションは サービス.リソース:アクション 形式で指定します。
// パーミッション形式の例
organization.workflow_topic:publish // ワークフロートピックへのパブリッシュ
organization.incident:create // インシデントの作成
organization.incident:get // インシデントの取得
organization.user:list // ユーザー一覧の取得
organization.asset_item:update // 資産情報の更新
CRN(CrisisResourceName)はリソースを一意に識別する名前です。
// CRN 形式
crn:crisis:{scope}:{organizationId}:{resourceType}/{resourceId}
// 例: 特定インシデントとそのサブリソースすべてに権限を付与
crn:crisis:organizations:org-123:incidents/inc-456<(/.*)?$>
4. organizationId を取得
すべての API パスには organizationId が含まれます。取得方法は 2 通りあります。
方法 A: 固定値として保持(推奨)
CRISIS の Web UI で組織 ID を確認し、環境変数や設定ファイルに固定値として保持します。
方法 B: /me から取得
GET /me を呼び出し、レスポンスの organization_id フィールドから取得します。
// /me から organizationId を取得する例
const me = await fetch('https://api.crisis.jp/v1/me', {
headers: { Authorization: `Bearer ${accessToken}` },
}).then(r => r.json());
const organizationId = me.organization_id;
5. 最初のリクエスト
トークンと organizationId が揃ったら、API にリクエストを送信できます。 以下は Node.js(AWS Lambda / Cloud Run Functions)からインシデント一覧を取得する例です。
const response = await fetch(
`https://api.crisis.jp/v1/organizations/${organizationId}/incidents?limit=10`,
{
headers: {
Authorization: `Bearer ${accessToken}`,
},
}
);
if (!response.ok) {
const error = await response.json();
// error.ErrorCode: "ERR-403"
// error.TraceID: "CRS-A1B2-C3D4E5F6"
throw new Error(`CRISIS API error: ${error.ErrorCode} (${response.status})`);
}
const { data, next_cursor, total } = await response.json();
console.log(`${total} 件中 ${data.length} 件取得しました`);
次のステップ
ワークフロートピックへのパブリッシュ
お客様のシステムからワークフローを自動トリガーするコード例付きガイド
認証・IAM・セキュリティ
CRN、ロール、パーミッション、認証ポリシーの詳細ガイド
Workload Identity Federation
GitHub Actions・Google Cloud などから静的トークン不要で認証する方法
Webhooks
外部システムとのリアルタイムイベント連携。Outgoing / Incoming の概要と使い分け
API の規約と実装パターン
ページネーション、エラーハンドリング、PUT / PATCH のセマンティクス
API リファレンス
OpenAPI Spec に基づく全エンドポイントの仕様