メインコンテンツまでスキップ

17. エンドポイント一覧

PlantPulse APIのRESTエンドポイントとクライアントメソッドのマッピングです。ベースパスは /api/v5 です。

認証: APIClient_V5.connect() 呼び出し時に自動的にapi_keyが発行・管理されるため、ユーザーが直接呼び出すべき認証エンドポイントはありません。

17.1 System​

HTTPエンドポイントメソッド
GET/api/v5/pingclient.system().ping()

17.2 ID発行​

メソッドパス説明
POST/api/v5/domain-idsドメインIDを事前に取得します(クライアントメソッドなし) — IDルール

17.3 Site (6個)​

HTTPエンドポイントメソッド
POST/api/v5/siteclient.site().create(req)
PUT/api/v5/site/{id}client.site().update(id, req)
DELETE/api/v5/site/{id}client.site().delete(id)
GET/api/v5/site/{id}client.site().get(id)
GET/api/v5/siteclient.site().list()
GET/api/v5/site/{id}/existsclient.site().exists(id)

17.4 OPC (10個)​

HTTPエンドポイントメソッド
POST/api/v5/opcclient.opc().create(req)
PUT/api/v5/opc/{id}client.opc().update(id, req)
DELETE/api/v5/opc/{id}client.opc().delete(id)
GET/api/v5/opc/{id}client.opc().get(id)
GET/api/v5/opcclient.opc().list()
GET/api/v5/opc?site_id={id}client.opc().listBySite(siteId)
GET/api/v5/opc?opc_source_type={type}client.opc().listByType(sourceType)
GET/api/v5/opc/{id}/existsclient.opc().exists(id)
GET/api/v5/opc/countclient.opc().count()
GET/api/v5/opc/count?site_id={id}client.opc().countBySite(siteId)

17.5 Asset (6個)​

HTTPエンドポイントメソッド
POST/api/v5/assetclient.asset().create(req)
PUT/api/v5/asset/{id}client.asset().update(id, req)
DELETE/api/v5/asset/{id}client.asset().delete(id)
GET/api/v5/asset/{id}client.asset().get(id)
GET/api/v5/assetclient.asset().list()
GET/api/v5/asset/{id}/existsclient.asset().exists(id)

関係オントロジー (4個)​

階層(親–子)とは別の方向性を持つ関係です。「この設備が停止した場合、どこまで影響を受けるか」を問う際に使用します。

HTTPエンドポイント役割
POST/api/v5/assets/{asset_id}/relations関係登録 — 本文 {site_id, to_entity_type, to_entity_id, relation_type, description?} → 201
GET/api/v5/assets/{asset_id}/relations?type=直接関係リスト(インバウンド・アウトバウンド)
DELETE/api/v5/relations/{relation_id}関係削除 → 204
GET/api/v5/ontology/graph/{entity_id}?relation=&direction=DOWN&depth=2グラフ探索(BFS)
関係意味方向
FEEDS工程フロー資産 → 資産
DEPENDS_ONユーティリティ依存(電力・エアー・冷却)資産 → 資産
PRODUCES生産アウトプット資産 → 製品
  • direction は UP · DOWN · BOTH(デフォルト DOWN), depth は 1~5(デフォルト 2)です。
  • 自己参照関係は保存されず、同一組み合わせの関係は一度だけ登録されます。
  • 登録・削除は変更にあたるため、ADMIN/APIロールと監査ログが適用されます。
  • 同様の探索をAIアシスタントが呼び出すのが MCP の trace_asset_relations です。

QRラベル​

HTTPエンドポイント役割
GET/api/v5/asset/qr/{token}ラベルトークンの設備。トークンではない、または再発行された旧トークンの場合は 404

ラベルに含まれるアドレスは GET /api/v5/asset/{id} 応答の qr_payload です。この呼び出しではトークンを作成しないため、トークンがまだないか PP_UI_CONSOLE_URL がない場合は "" となります。ログイン不要の公開ページは V5 ではなく /qr/{token} です — QRラベルと公開ページ.

17.6 Tag (23個)​

CRUD + リスト​

HTTPエンドポイントメソッド
POST/api/v5/tagclient.tag().create(req)
PUT/api/v5/tag/{id}client.tag().update(id, req)
DELETE/api/v5/tag/{id}client.tag().delete(id)
GET/api/v5/tag/{id}client.tag().get(id)
GET/api/v5/tag/{id}/existsclient.tag().exists(id)
GET/api/v5/tagclient.tag().list()
GET/api/v5/tag?site_id={id}client.tag().listBySite(siteId)
GET/api/v5/tag?opc_id={id}client.tag().listByOpc(opcId)
GET/api/v5/tag?asset_id={id}client.tag().listByAsset(assetId)
GET/api/v5/tag/countclient.tag().count()
GET/api/v5/tag/count?site_id={id}client.tag().countBySite(siteId)
GET/api/v5/tag/count?opc_id={id}client.tag().countByOpc(opcId)
GET/api/v5/tag/count?asset_id={id}client.tag().countByAsset(assetId)

PATCH (10個 — タブ別部分修正)​

HTTPエンドポイントメソッド
PATCH/api/v5/tag/{id}/basicpatchBasic(id, req)
PATCH/api/v5/tag/{id}/alarmpatchAlarm(id, req)
PATCH/api/v5/tag/{id}/metadatapatchMetadata(id, req)
PATCH/api/v5/tag/{id}/calculationpatchCalculation(id, req)
PATCH/api/v5/tag/{id}/samplingpatchSampling(id, req)
PATCH/api/v5/tag/{id}/aggregationpatchAggregation(id, req)
PATCH/api/v5/tag/{id}/aipatchAi(id, req)
PATCH/api/v5/tag/{id}/publishpatchPublish(id, req)
PATCH/api/v5/tag/{id}/attributepatchAttribute(id, req)
PATCH/api/v5/tag/{id}/linkpatchLink(id, req)

17.7 Alarm (3個)​

HTTPエンドポイントメソッド
GET/api/v5/alarm/{seq}client.alarm().get(seq)
GET/api/v5/alarm?limit={n}client.alarm().list(limit)
GET/api/v5/alarm/performance?scope_type=&scope_id=アラームシステム性能(クライアントメソッドなし)

/alarm/performance — scope_type は SITE · AREA · LINE, scope_id は サイトID または エセットID であり、両方必須です。期間は days(1~31, デフォルト 7) または from + to(セットで、31日まで)であり、from/to が days より優先されます。アラーム発生のみをカウントし、非表示・抑制中に発生したものは suppression に別途表示されます。範囲・期間が正しくない場合は 400 となります。同一の値を MCP get_alarm_performance が返します。

17.8 Order (11個)​

HTTPエンドポイントメソッド
POST/api/v5/orderclient.order().create(req)
PUT/api/v5/order/{id}client.order().update(id, req)
DELETE/api/v5/order/{id}client.order().delete(id)
GET/api/v5/order/{id}client.order().get(id)
GET/api/v5/orderclient.order().list()
GET/api/v5/order/{id}/existsclient.order().exists(id)
POST/api/v5/order/{id}/startclient.order().start(id)
POST/api/v5/order/{id}/endclient.order().end(id)
POST/api/v5/order/{id}/pauseclient.order().pause(id)
POST/api/v5/order/{id}/resumeclient.order().resume(id)
POST/api/v5/order/{id}/abortclient.order().abort(id)

17.8.1 保全オーダー​

設備の保全呼び出し・修理・予防保全作業です(ISA-95 maintenance work order)。生産ワークオーダー(/order)とは異なるオブジェクトであり、クライアントメソッドなしで REST 経由で呼び出します。

HTTPエンドポイント役割
GET/api/v5/maintenance-ordersリスト。フィルタ scope+scope_id(asset · line · area · site) · status_code · open · maintenance_kind_code · assignee_employee_id · failure_mode_code · maintainable_item_code · from/to · period_of · overdue · external_system · external_id。ページ page · limit(デフォルト 50, 最大 500) · sort · order
GET/api/v5/asset/{asset_id}/maintenance-orders設備単体のリスト
POST/api/v5/asset/{asset_id}/maintenance-orders保全呼び出し追加
GET/api/v5/maintenance-orders/{maintenance_order_id}単一案件
PATCH/api/v5/maintenance-orders/{maintenance_order_id}内容変更
POST/api/v5/maintenance-orders/{maintenance_order_id}/transition状態遷移(受付・開始・完了・取消)。本文 status_code · version, 取消は cancel_reason_code
GET/api/v5/maintenance-orders/{maintenance_order_id}/revisions判定履歴
GET/api/v5/maintenance-orders/summary範囲・期間の保全サマリー
GET/api/v5/maintenance-orders/options設定可能な種類・状態・コード
GET/api/v5/maintenance-orders/board範囲の保全ステータスボード
GET/api/v5/maintenance-orders/changesCMMS同期用変更フィード(カーソル)
GET · PUT/api/v5/maintenance-orders/by-external/{system}/{external_id}外部(CMMS)番号で検索・べき等書き込み
GET · PUT/api/v5/maintenance-orders/by-external?system=&external_id=同上。番号に / がある場合
POST · GET/api/v5/maintenance-orders/{maintenance_order_id}/attachments写真アップロード・リスト
GET/api/v5/maintenance-orders/{maintenance_order_id}/attachments/{maintenance_attachment_seq}/content写真内容

保全オーダー項目​

項目名は応答・リクエスト本文・リストクエリで共通です。

項目タイプ意味
maintenance_order_id文字MAINTENANCE_ORDER_000001。旧行は数値文字列("12")
maintenance_kind_code文字保全種類(CORRECTIVE …)
status_code文字状態(REQUESTED · ACCEPTED · IN_PROGRESS · COMPLETED · CANCELLED)
cancel_reason_code文字取消理由
failure_record_seq数値紐付いた故障記録
maintenance_plan_id · maintenance_plan_name文字予防保全計画。MAINTENANCE_PLAN_000001 または旧数値文字列
failure_mode_code · failure_mechanism_code · failure_cause_code · maintainable_item_code文字ISO 14224 コード。表示名は _code の代わりに _name
cause_code文字原因辞書コード(アラームと同一の辞書)
checklist_results[].maintenance_attachment_seq数値点検項目の写真

CMMSウェブフック​

設定キー PP_MAINTENANCE_WEBHOOK_URL にアドレスを設定すると、保全オーダーの状態が変わるたびに JSON を一度 POST します(呼び出し・受付・開始・完了・取消)。内容のみを修正した場合は送信されず、空にするとオフになります。失敗すると診断 diagnostic.maintenance.webhook_failed がオンになり、次回の成功時にオフになります。再送は行われません。

キー値
text導入言語の1行文章
eventmaintenance.requested · maintenance.accepted · maintenance.in_progress · maintenance.completed · maintenance.cancelled
maintenance_order_id保全オーダーID(文字)
asset_id · asset_name設備
maintenance_kind_code · status_code種類 · 状態
description · failure_mode_code説明 · 故障モード
requested_by · accepted_by · assignee_employee_id作業者
cancel_reason_code取消理由
external_system · external_id · owner外部番号と所有者
anomaly_found · checklist_results点検異常有無と回答(item_id · checked · value · maintenance_attachment_seq · out_of_range)
maintenance_plan_id · plan_due_at予防保全計画
at · version状態遷移時刻(epoch ms) · 判定

値が不明なキーも省略されず null として含まれます。

17.9 Calendar (6個)​

HTTPエンドポイントメソッド
POST/api/v5/calendarclient.calendar().create(req)
PUT/api/v5/calendar/{id}client.calendar().update(id, req)
DELETE/api/v5/calendar/{id}client.calendar().delete(id)
GET/api/v5/calendar/{id}client.calendar().get(id)
GET/api/v5/calendarclient.calendar().list()
GET/api/v5/calendar/search?from={iso}&to={iso}client.calendar().search(from, to)

17.10 Customer (8個)​

HTTPエンドポイントメソッド
POST/api/v5/customerclient.customer().create(req)
PUT/api/v5/customer/{id}client.customer().update(id, req)
DELETE/api/v5/customer/{id}client.customer().delete(id)
GET/api/v5/customer/{id}client.customer().get(id)
GET/api/v5/customerclient.customer().list()
GET/api/v5/customer?site_id={id}client.customer().listBySite(siteId)
GET/api/v5/customer/{id}/existsclient.customer().exists(id)
GET/api/v5/customer/countclient.customer().count()

17.11 Employee (7個)​

HTTPエンドポイントメソッド
POST/api/v5/employeeclient.employee().create(req)
PUT/api/v5/employee/{id}client.employee().update(id, req)
DELETE/api/v5/employee/{id}client.employee().delete(id)
GET/api/v5/employee/{id}client.employee().get(id)
GET/api/v5/employeeclient.employee().list()
GET/api/v5/employee/{id}/existsclient.employee().exists(id)
GET/api/v5/employee/countclient.employee().count()

17.12 Product (7個)​

HTTPエンドポイントメソッド
POST/api/v5/productclient.product().create(req)
PUT/api/v5/product/{id}client.product().update(id, req)
DELETE/api/v5/product/{id}client.product().delete(id)
GET/api/v5/product/{id}client.product().get(id)
GET/api/v5/productclient.product().list()
GET/api/v5/product/{id}/existsclient.product().exists(id)
GET/api/v5/product/countclient.product().count()

17.13 Path (2個)​

HTTPエンドポイントメソッド
GET/api/v5/path/asset/{id}client.path().getByAsset(assetId)
GET/api/v5/path/tag/{id}client.path().getByTag(tagId)

17.14 Flow (3個)​

HTTPエンドポイントメソッド
GET/api/v5/flow/{id}client.flow().get(flowId)
GET/api/v5/flowclient.flow().list()
GET/api/v5/flow/{id}/nodeclient.flow().listNodes(flowId)

17.15 統計​

以下の数値は plantpulse-api クライアントメソッドが存在するパスのみをカウントしています。

ドメインエンドポイント数
System1
Site6
OPC10
Asset6
Tag23 (CRUD 5 + リスト 7 + カウント 4 + PATCH 10)
Alarm2
Order11 (CRUD 6 + ライフサイクル 5)
Calendar6
Customer8
Employee7
Product7
Path2
Flow3
合計92 (+認証 1)

17.16 HTTPメソッド分布​

HTTP個数用途
GET56照会 (単一/リスト/存在確認/カウント)
POST16登録 + Orderライフサイクル
PUT10全体修正
PATCH10Tagタブ別部分修正
DELETE10削除

17.17 リストの全件読み込み — カーソル​

GET /api/v5/site · /product · /customer · /employee はカーソルを用いて継続的に読み込みます。ページサイズ limit はデフォルト 100、上限 1000 であり(それを超える場合は 1000 に制限されます)、初回呼び出しには cursor を含めません。

curl -H "X-API-Key: $TOKEN" "$BASE/api/v5/site?limit=500"
curl -H "X-API-Key: $TOKEN" "$BASE/api/v5/site?limit=500&cursor=<next_cursor>"
{
"data": [ ],
"meta": {
"status": "OK",
"pagination": { "limit": 500, "total": 1234 },
"cursor": { "next_cursor": "…", "has_more": true, "limit": 500 }
},
"errors": null
}
  • data は本ページの行配列です。
  • meta.pagination.total は同一フィルタの全件数です。
  • meta.cursor.has_more が false になるまで next_cursor をそのまま次回の呼び出しの cursor として渡します。
  • カーソルはそのリストとフィルタに紐付けられています。別のリストのカーソルや site_id を変更した呼び出しに使用すると 422 E1002 となります。
  • 顧客・製品・従業員は ID 順、サイトは 名前・ID 順です。読み取り中に行が修正されても漏れなく取得されます。

Javaクライアントの list() は cursor を渡さないため、最初のページのみを返します。全件を読み込むには REST で呼び出してください。

17.18 変更時のみ取得 — /tag/export の ETag​

GET /api/v5/tag/export はサイト・接続・プラント全体のタグを一括して出力します。site_id · opc_id でフィルタリングし、include=config の場合は行ごとに設定が含まれます(タグごとに設定を呼び出す必要はありません)。応答は data = {tags: [...], count: N} です。

応答の ETag を保存し、次回の読み取り時に If-None-Match として返します。

curl -i -H "X-API-Key: $TOKEN" "$BASE/api/v5/tag/export?site_id=SITE_000001&include=config"
# ETag: "<SHA-256>"

curl -i -H "X-API-Key: $TOKEN" -H 'If-None-Match: "<SHA-256>"' \
"$BASE/api/v5/tag/export?site_id=SITE_000001&include=config"
# 304 Not Modified — 본문 없음
  • ETag は出力される data の SHA-256 です。この応答の内容が変更された場合 — タグや設定の変更、タグの追加・削除、接続が別のサイトに移動した場合など — 誰が変更したかにかかわらず値が異なります。変更されていない場合は、再起動後や別のノードから読み取っても同一の値となります。
  • プロキシが付与した弱い形式の W/"…" および * も受け入れます。
  • 304は転送とパースを省略するだけであり、読み取り処理自体を省略するものではありません。 サーバーは値を計算するためにすべての行を読み取ります。データが必要な周期よりも頻繁に呼び出さないでください。

KOPENS All rights reserved.