Webhook を使うと、何かが起きた瞬間に FreeMaint があなたの管理する URL へ POST します。これにより別のシステム(ERP、請求、在庫、会計、チャットチャンネル)が、誰も入力し直すことなく同期を保てます。設定は /company-settings/webhooks から。Starter は 1 日 100 配信が上限、Business 以上は無制限です。ペイロードの詳細は「API と GraphQL > Webhook」を参照してください。
利用できるイベント
- work_order.created — 作業指示が作成された
- work_order.completed — 作業指示が「完了」になった
- work_order.status_changed — 作業指示がいずれかのステータスへ遷移した。work_order.completed も引き続き発火する
- request.created — 保全依頼が送信された
- request.status_changed — 依頼が承認・却下・取消された
- part.low_stock — 部品が発注点以下になった
- part.out_of_stock — 部品が在庫ゼロになった
- part.low_stock_summary — 1 日 1 回、発注点以下の部品を、一度も動いていない部品も含めて通知
- part.out_of_stock_summary — 1 日 1 回、在庫ゼロの部品を通知
- part.consumed — 作業指示で消費、または返却された
- compliance.chain_divergence — 監査ハッシュチェーンが途切れた(Enterprise)
- asset.downtime_started — 設備停止が開始された
- asset.downtime_ended — 設備停止が終了した
- report.daily_summary — その日に完了した作業を、指定した時刻に 1 日 1 回
- purchase_order.created — 発注書が作成された
- purchase_order.status_changed — 発注書のステータスが変わった(承認、発注済み、取消など)
- purchase_order.received — 発注書に対する納品を受領した(一部納品を含む)
配信の仕様
- JSON ボディを持つ POST リクエスト:{ event, timestamp, data }
- X-FreeMaint-Signature ヘッダー — t=<unix 秒>,v1=<16 進>。v1 は Webhook シークレットを鍵として「<t>.<生ボディ>」を HMAC-SHA256 したものです。毎リクエスト、生ボディに対して検証してください
- X-FreeMaint-Event と X-FreeMaint-Delivery-Id も併せて送信します
- ネットワークエラーと 5xx は指数バックオフで最大 3 回まで再試行します(約 2 秒、4 秒、8 秒)。4xx は恒久的な拒否として再試行しません
- 各試行はステータス・応答コード・試行回数とともに Webhook 配下に記録され、完了した配信はそこから再送できます
- 任意の写真:「写真を含める」をオンにすると、"work_order" と "request" のイベントの "photos" フィールドに最大 4 件の画像リンクが含まれ、持っている人なら誰でも 7 日間開けます。ご自身で管理しているエンドポイントでのみオンにしてください
設定手順
- /company-settings/webhooks を開く — 会社設定の権限、または「連携を管理」権限が必要です。
- 「Webhook を追加」をクリック — 名前と https:// の URL を入力し、必要なイベントにチェックを入れます。
- 署名シークレットをコピー — 作成時に一度だけ表示されます。後から「シークレットをローテーション」で新しいものを発行でき、古いものは無効になります。
- 配信を確認 — Webhook の配信履歴を開いて、イベントの到達を確認し、失敗したものを再送します。
プラン別の上限
- Starter — 1 社あたり 1 日 100 配信(カウンターは 00:00 UTC にリセット)
- Business — 無制限
- Enterprise — 無制限
- カウントは配信試行ごと:同じイベントに 3 つの Webhook があれば 3 単位を消費します
ヒント
X-FreeMaint-Signature は必ずサーバー側で、生のリクエストボディに対して検証してください。検証しなければ本物の FreeMaint イベントと偽装された呼び出しを区別できず、偽の part.consumed が ERP の在庫を動かしかねません。
関連記事
このページは役に立ちましたか?