監査ログ
組織内のすべての変更 — 管理者UIアクションとパブリックAPI呼び出しの両方 — が単一の監査ストリームに記録されます。これらのエンドポイントを使用して、そのストリームをSIEMに送信したり、社内コンプライアンスレポートを構築したり、特定の変更を調査したりしてください。APIキーに必要なスコープ: audit-log:read。
エンドポイント
| メソッド | パス | スコープ | 目的 |
|---|---|---|---|
GET | /api/public/v1/audit-log | audit-log:read | オプションのフィルタ付き監査イベントのページネーションリスト。 |
GET | /api/public/v1/audit-log/actions | audit-log:read | 組織でこれまでに記録された個別のアクション名。フィルタドロップダウンの構築に便利です。 |
記録される内容
パブリックAPI呼び出しは自動監査されます。エントリにはactorRole = "api_key"とactorEmail = "apikey:<apiKeyId>"が含まれ、<apiKeyId>は呼び出しを行ったAPIキーの完全なUUID (scs_live_…トークンプレフィックスではない) です。管理者UIアクションは人間のメールアドレスとorg_adminロールを使用します。2つのストリームは同じログ内で混在しているため、1回のエクスポートですべての変更履歴がカバーされます。
監査イベントをリスト表示
イベントを最新順に返します。すべてのフィルタは任意で、組み合わせ可能です。
GET /api/public/v1/audit-log
?action=sarif.ingested
&actorEmail=apikey:7d8a3e0b-4f12-4cd6-b9e1-21f6cf5d4a73
&from=2026-05-01T00:00:00Z
&to=2026-05-29T23:59:59Z
&page=1
&pageSize=50
Authorization: Bearer scs_live_…クエリパラメーター
| パラメーター | タイプ | デフォルト | 備考 |
|---|---|---|---|
action | string | — | 完全一致のアクション名。有効な値は/audit-log/actionsから取得してください。 |
actorEmail | string | — | 完全一致のアクターメール。APIキーエントリの場合はapikey:<api-key-uuid>形式を使用してください。 |
from | ISO 8601 | — | createdAt (UTC) の包含下限。 |
to | ISO 8601 | — | createdAt (UTC) の包含上限。 |
page | integer | 1 | 1ベースのページインデックス。 |
pageSize | integer | 50 | 200で上限。1–200の外の値は50にフォールバックします。 |
レスポンス
{
"items": [
{
"id": "0e7a3b4c-9d2f-4e1a-b6c8-2c4f8d5a1e90",
"createdAt": "2026-05-29T13:42:11.318Z",
"actorEmail": "apikey:7d8a3e0b-4f12-4cd6-b9e1-21f6cf5d4a73",
"actorRole": "api_key",
"action": "assignment.created",
"targetType": "assignment",
"targetId": "b1d8c2a0-7e34-4f9a-9d51-8e2c91a4f607",
"targetLabel": "jane.smith@acme.com / SQL Injection",
"metadata": "{\"topicId\":\"sql-injection\",\"deadlineDays\":14}",
"ipAddress": "203.0.113.42"
},
{
"id": "ba98c9d4-5f60-4b21-9c0e-3f72e1b58a44",
"createdAt": "2026-05-29T13:41:08.902Z",
"actorEmail": "amelia.ng@acme.com",
"actorRole": "org_admin",
"action": "user.invited",
"targetType": "user",
"targetId": "c4f1d22a-83b7-4d2c-9a01-7e6b5d1f9c33",
"targetLabel": "jane.smith@acme.com",
"metadata": null,
"ipAddress": "203.0.113.7"
}
],
"total": 2841,
"page": 1,
"pageSize": 50
}metadataはJSON文字列 (オブジェクトではない) です。クライアントで解析してください。形状はアクションによって異なります。totalは現在のページだけでなく、フィルタされた合計数を反映します — ページ数を求めるにはpageSizeで割ってください。- User-agentとその他のリクエストヘッダーはフォレンジック用にサーバー側に保存されますが、このレスポンスでは返されません。
例
curl -sS \
-H "Authorization: Bearer $SCH_API_KEY" \
"https://api.limeplate.com/api/public/v1/audit-log?from=2026-05-01T00:00:00Z&pageSize=200"個別アクションをリスト表示
組織で記録されたすべてのアクション名をアルファベット順で返します。リストは組織スコープです — 新しいテナントは、イベントが流れ始めるまで空の配列を返します。
GET /api/public/v1/audit-log/actions
Authorization: Bearer scs_live_…レスポンス
[
"apikey.created",
"apikey.revoked",
"assignment.completed",
"assignment.created",
"course.published",
"sarif.ingested",
"user.invited",
"user.role_changed",
"webhook.created"
]例
curl -sS \
-H "Authorization: Bearer $SCH_API_KEY" \
https://api.limeplate.com/api/public/v1/audit-log/actionsSIEMへの送信
典型的なパターンは、fromに最後に取り込んだcreatedAtを渡し、items.length < pageSizeまで連続するページを進めながら、/audit-logをcronでポーリングすることです。結果は最新順に並ぶため、増分フェッチャーはダウンストリーム順を時系列に保つために、イベントを発行する前にページを反転すべきです。v1にはストリーミング監査Webhookはありません — 特定のイベントへの低レイテンシ反応も必要な場合は、Webhookで文書化された対象ドメインWebhookと監査ポーリングを組み合わせてください。