資産を一覧・登録する
お客様の既存の資産管理システムから CRISIS へ資産台帳を同期する、代表的な API の使い方を解説します。
概要
CRISIS の資産管理 API では、建物・設備・車両などの資産をグループ単位で管理できます。
- 資産アイテム — 個々の資産(建物、車両、機器など)。
kindで種別を区別します。 - 資産グループ — 資産をまとめる階層構造。拠点や部門ごとの管理に使用します。
前提条件
- サービスアカウントとアクセストークンを作成済み(はじめに 参照)
- サービスアカウントの IAM に以下のパーミッションを付与済み
organization.asset_item:listorganization.asset_item:createorganization.asset_item:updateorganization.asset_item:deleteorganizationIdを把握済み
資産の一覧を取得する
GET /organizations/{organizationId}/assets/items で、登録済みの資産一覧を取得できます。
const response = await fetch(
`https://api.crisis.jp/v1/organizations/${organizationId}/assets/items?limit=20`,
{
headers: {
Authorization: `Bearer ${accessToken}`,
},
}
);
const { data, next_cursor, total } = await response.json();
console.log(`全 ${total} 件中 ${data.length} 件取得`);
// 各資産の基本情報
for (const item of data) {
console.log(`${item.name} (${item.kind}) - ${item.status}`);
}
フィルタリング
クエリパラメータで結果を絞り込めます。
kind — 種別でフィルタ(例: ?kind=vehicle)tags — タグでフィルタ。カンマ区切りで OR 条件(例: ?tags=tokyo,osaka)group_ids — グループ ID でフィルタ。カンマ区切りで OR 条件include_descendants — true にすると、指定グループの配下も含めて取得ページネーションの詳細は 実装ガイド — ページネーション を参照してください。
資産を登録する
POST /organizations/{organizationId}/assets/items で、新しい資産を登録します。
kind、name、description、status、tags が必須フィールドです。
const response = await fetch(
`https://api.crisis.jp/v1/organizations/${organizationId}/assets/items`,
{
method: 'POST',
headers: {
Authorization: `Bearer ${accessToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
kind: 'BUILDING',
name: '本社ビル',
description: '東京都千代田区 本社オフィスビル',
status: 'ACTIVE',
tags: ['tokyo', 'headquarters'],
location: {
address: {
prefecture: '東京都',
municipality: '千代田区',
street: '九段北1-3-6',
},
coordinates: {
latitude: 35.696255,
longitude: 139.751416,
},
},
metadata: {
id: "既存システムの資産IDなど、任意の情報を自由に保存できます",
},
}),
}
);
if (!response.ok) {
const error = await response.json();
throw new Error(`CRISIS API error: ${error.ErrorCode} (${response.status})`);
}
const item = await response.json();
console.log(`登録完了: ${item.id}`);
オプションフィールド
用途に応じて追加情報を設定できます。
group_ids — 所属する資産グループlocation — 所在地(住所・緯度経度)metadata — 任意のカスタムフィールドvehicle — 車両情報insurance — 保険情報maintenance — メンテナンス情報acquisition — 取得(購入)情報emergency_contact — 緊急連絡先location フィールドの詳細
location フィールドは以下の構造を持ちます。
address(オプション) — 住所情報prefecture,municipality,street— 構造化された住所(都道府県、市区町村、丁目番地)freeform— 非構造化の住所文字列。構造化できていない住所がある場合はこちらを使用。freeformが優先され、自動的にジオコーディングと構造化が試みられます。coordinates(オプション) — 緯度経度latitude,longitude— 座標値- 指定されている場合はこの値を優先します。指定されていない場合は、住所から自動的にジオコーディングが行われます。
レスポンスには自動補完フィールド(gehirn_code, mesh_code, jisx0402 など)も含まれますが、リクエストに含める必要はありません。
住所パターン別の例
構造化された住所と座標の両方を指定する場合
{
location: {
address: {
prefecture: '東京都',
municipality: '千代田区',
street: '九段北1-3-6',
},
coordinates: {
latitude: 35.696255,
longitude: 139.751416,
},
},
}
住所だけを指定する場合(自動ジオコーディング)
{
location: {
address: {
prefecture: '東京都',
municipality: '千代田区',
street: '九段北1-3-6',
},
},
}
座標値を指定しない場合、住所から自動的にジオコーディングが行われます。
座標だけを指定する場合
{
location: {
coordinates: {
latitude: 35.696255,
longitude: 139.751416,
},
},
}
非構造化の住所文字列を使う場合
{
location: {
address: {
freeform: '東京都千代田区九段北1-3-6',
},
},
}
freeform が指定された場合、自動的にジオコーディングと構造化が試みられます。座標値を指定しない場合、住所から座標が自動補完されます。
同期パターン
お客様の資産管理システムから CRISIS へ定期的に台帳を同期する場合、以下のパターンが一般的です。
既存資産の一覧を取得
GET /assets/items で CRISIS 側の現在の資産一覧を取得し、お客様側のマスターデータと突き合わせます。
※metadata フィールドを活用して、既存システムの資産IDなどの情報を保持して突合できます。
差分を検出して反映
新規資産は POST で登録、変更があった資産は PUT で更新、廃止された資産はステータスを変更します。