splats logo

Webhook概要

Webhookを利用してSPLATSで記録されたログを受け取ることができます。通知対象のログがSPLATSに記録されると、利用者が設定したWebhook URLにJSONオブジェクトが含まれたPOSTリクエストを送信します。
Webhookを利用することで、SPLATS APIを定期的に呼び出してログ検出を行う必要がなく、リアルタイムに通知を受け取ることができるようになります。

リクエスト

  • 以下のリクエストヘッダーとリクエストボディで、設定されたWebhook URLにHTTP POSTリクエストをおこないます。

  • デバイスでログが記録されてすぐにSPLATSが受け取り、リクエストがおこなわれますが、ネットワークの状態によっては遅延が発生する場合があります。

リクエストヘッダー

    名称     値/説明

X-Splats-ID

Webhookのリクエストごとに付与されるユニークID

X-Splats-Signature

シークレットトークンと Webhook のリクエストボディを使って計算された HMAC-SHA256 (設定がある場合のみ)

User-Agent

Splats-Webhook

Content-Type

application/json

リクエストボディ

下記の項目を持つJSONオブジェクトです。

フィールド名 タイプ 必須 説明

history_id

string 

○ 

ログID

tenant_id

string 

○ 

ログを記録したテナントのID

datetime

string

ログ記録日時 ISO 8601 拡張形式 "YYYY-MM-DDThh:mm:ss+09:00"

event

string

ログ内容(定数)
詳細は通知対象一覧を参照

event_name

string

ログ内容

status

string

ログ状態

  • occur:発生

  • restore:復旧

category

string

ログカテゴリー

  • normal:通常

  • suspicious:不審

  • warning:不正

  • error:障害

  • emergency:緊急

device_id

string

ログを記録したデバイスのID

device_name

string

ログを記録したデバイスの名前

device_module

string

ログを記録したデバイスのモジュール

  • control:パスコントローラー

  • front_in:入室側リーダー

  • front_out:退室側リーダー

  • keybox:キーボックス

additional_info

object

ログに応じたオブジェクト
以下の情報をログに応じて付与します

  • エリア情報

{
  "additional_info":{
    "area":{
      "from":{
        "id": "string",     # 退室側のエリアID
        "name": "string"    # 退室側のエリア名
      },
      "to":{
        "id": "string",     # 入室側のエリアID
        "name": "string"    # 入室側のエリア名
      }
    }
  }
}
  • メンバー情報

{
  "additional_info":{
    "member":{
      "id": "string",     # メンバーID
      "name": "string",   # メンバー名
      "code": "string"    # メンバーコード
    }
  }
}
  • カギ情報

{
  "additional_info":{
    "units":[
      {
        "unit_no": "string",     # カギナンバー
        "unit_name": "string"    # カギ名
      }
    ]
  }
}
  • カメラ情報

{
  "additional_info":{
    "video": {
      "camera_name": "string",  # カメラ名
      "exists": "boolean"       # 関連する動画があるかどうか
    }
  }
}

リクエストボディのサンプル

{
  "history_id": "b196f365-7248-40c2-bf3a-126c3105bda9.1234567",
  "tenant_id": "9dc19d04-7a95-968f-971b-736cdc23f7be",
  "datetime": "2022-02-18T11:38:55.317622+09:00",
  "event": "open",
  "event_name": "入室",
  "status": "occur",
  "category": "normal",
  "device_id": "4e75e89e-e409-4415-8638-083e24bbd242",
  "device_name": "会議室入口",
  "device_module": "control",
  "additional_info": {
    "area": {
      "from": {
        "id": "817b49a6-5ef2-46df-b507-afa43be91669",
        "name": "エントランス"
      },
      "to": {
        "id": "a56f2c0e-767a-485a-82a3-ca394a894d95",
        "name": "会議室"
      }
    },
    "member": {
      "id": "b785b807-2836-4235-ab25-50bd8f8f371e",
      "name": "管理者",
      "code": "123456789"
    }
  }
}

レスポンス

  • リクエストには常にステータスコード200を返してください。

  • リクエストが失敗しても、再送はおこなわれません。

  • リクエストには 10 秒以内に応答してください。超過した場合、エラーとして扱われます。
    ※10秒という値は変更される可能性があります。

  • リクエストが何らかの原因でエラーになった場合、通知エラーとして扱われます。通知エラーが頻発する場合は該当するWebhookの設定を無効化する場合があります。有効化する場合は再度SPLATS APIから設定を更新してください。

リクエストの署名検証

Webhook設定時に secret_token を指定すると、リクエストヘッダーのX-Splats-Signatureに secret_token とリクエストボディを使って計算されたHMAC-SHA256署名を付与します。

secret_token を使ってその署名を計算し、SPLATSから送信された署名と比較することで、リクエストの送信元がSPLATS であることを確認できます。

サンプルコード(Python)

import hmac
import hashlib

secret_token = {Webhook設定時に指定したsecret_token}
message = {リクエストボディ}

signature = hmac.new(secret_token.encode('utf-8'), message.encode('utf-8'), hashlib.sha256).hexdigest()

サンプルコード(Ruby)

require 'openssl'

secret_token = {Webhook設定時に指定したsecret_token}
message = {リクエストボディ}

signature = OpenSSL::HMAC::hexdigest(OpenSSL::Digest::SHA256.new, secret_token, message)

Webhookの通知条件

設定した通知条件により、該当するログがSPLATSに記録されると、Webhook通知を受け取ることができます。

設定可能な通知条件

分類 通知条件 説明

ログ

[通常]カテゴリー
(入室/退室、取出/保管のみ)

入室/退室、取出/保管のログ
※入室/退室はSPLATS PASSでのみ、取出/保管はSPLATS KEYでのみ記録されるログです
 [通常]にカテゴリーするログでも入室/退室、取出/保管以外のログは通知しません

[不審]カテゴリー

「不審」にカテゴリーされるログ
閉め忘れ、未入室、未開扉など

[不正]カテゴリー

「不正」にカテゴリーされるログ
未登録、権限なし、権限時間外など

[障害]カテゴリー

「障害」にカテゴリーされるログ
通信エラー、停電発生、機器異常など

[緊急]カテゴリー

「緊急」にカテゴリーされるログ
非常解錠、こじ開けなど

Webhookの設定方法

  • WebhookはSPLATSメンバーサイト、SPLATS APIのWebhook設定更新から設定することができます。

  • SPLATS APIから設定するためには「Tenant」スコープが必要となります。

  • 設定は1テナントごとに1件の設定が可能です。

通知対象一覧

category event event_name status device_module 説明

normal

open

入室

occur

control

入室側SPLATSリーダーを使って特定のエリアに入室した

退室

occur

control

退室側SPLATSリーダーを使って特定のエリアから退室した

lend

キーホルダー取出 ({カギ名})

occur

keybox

キーホルダーを取り出した

return

キーホルダー返却 ({カギ名})

occur

keybox

キーホルダーを返却した

lend_remote

遠隔でキーホルダー取出 ({カギ名})

occur

keybox

メンバーサイトの操作リクエストで解錠してキーホルダーを取り出した

return_remote

遠隔でキーホルダー返却 ({カギ名})

occur

keybox

メンバーサイトの操作リクエストで解錠してキーホルダーを返却した

suspicious

forget_to_close

閉め忘れ

occur

control
keybox

一定時間以上扉を開けていた

閉め忘れた扉の閉扉

restore

control

一定時間以上開けていた扉を閉めた

not_open

未入室

occur

control

入室側SPLATSリーダーを使って扉を解錠したが、入室しなかった

未退室

occur

control

退室側SPLATSリーダーを使って扉を解錠したが、退室しなかった

未開扉

occur

keybox

キーボックスの扉を解錠したが、開けなかった

drivers_license_ng

免許証未確認

occur

keybox

免許証確認二要素認証待ちでタイムアウトした

warning

no_authority

権限なし

occur

control
keybox

エリアに入る権限を持っていない人が解錠しようとした
カギを利用する権限を持っていない人が取り出そうとした

overtime_authority

権限時間外

occur

control
keybox

エリアに入る権限がない時間帯に解錠しようとした
カギを利用する権限がない時間帯に取り出そうとした

expired_authority

利用期間外

occur

control
keybox

利用開始日より前、もしくは利用終了日より後に解錠しようとした

no_register

カード未登録

occur

control
keybox

登録されていないカードを使って解錠しようとした

QR未登録

occur

control
keybox

登録されていないQRコードを使って解錠しようとした

SPLATSアプリ未登録

occur

control
keybox

登録されていないSPLATSアプリを使って解錠しようとした

顔未登録

occur

control

登録されていない顔で顔認証を使って解錠しようとした

two_factor_ng

二要素認証エラー

occur

keybox

扉を解錠しようとしたが、二要素認証に失敗した

face_fake

なりすまし

occur

control

写真などで他人になりすまし顔認証を使って解錠しようとした

illegal_pass_error

不正通行エラー発生

occur

control

制御しているゲートで逆方向からの侵入など、不正な通行が発生した

不正通行エラー復旧

restore

control

制御しているゲートで発生していた不正通行エラーが復旧した

pass_check_error

通行ルール違反(入室)

occur

control

通行ルールに違反(前回カードの当て忘れや共連れで通行)して入室側リーダーからエリアに入ろうとした

通行ルール違反(退室)

occur

control

通行ルールに違反(前回カードの当て忘れや共連れで通行)して退室側リーダーからエリアに入ろうとした

error

tamper

タンパー検知発生

occur

control

SPLATSパスコントローラーの蓋を開けた

タンパー検知復旧

restore

control

SPLATSパスコントローラーの蓋を閉めた

リーダータンパー検知(入室)発生

occur

front_in

入室側SPLATSリーダーが壁から取り外された

リーダータンパー検知(入室)復旧

restore

front_in

入室側SPLATSリーダーが壁に取り付けられた

リーダータンパー検知(退室)発生

occur

front_out

退室側SPLATSリーダーが壁から取り外された

リーダータンパー検知(退室)復旧

restore

front_out

退室側SPLATSリーダーが壁に取り付けられた

front_unit_connect_error

リーダー通信異常(入室)発生

occur

front_in

入室側SPLATSリーダーとの通信が途絶えた

リーダー通信異常(入室)復旧

restore

front_in

入室側SPLATSリーダーとの通信が復旧した

リーダー通信異常(退室)発生

occur

front_out

退室側SPLATSリーダーとの通信が途絶えた

リーダー通信異常(退室)復旧

restore

front_out

退室側SPLATSリーダーとの通信が復旧した

qr_connect_error

QRコードリーダー通信異常(入室)発生

occur

front_in

入室側SPLATSリーダーに接続しているQRコードリーダーとの通信が途絶えた

QRコードリーダー通信異常(入室)復旧

restore

front_in

入室側SPLATSリーダーに接続しているQRコードリーダーとの通信が復旧した

QRコードリーダー通信異常(退室)発生

occur

front_out

退室側SPLATSリーダーに接続しているQRコードリーダーとの通信が途絶えた

QRコードリーダー通信異常(退室)復旧

restore

front_out

退室側SPLATSリーダーに接続しているQRコードリーダーとの通信が復旧した

QRコードリーダー通信異常発生

occur

keybox

SPLATSキーボックスに接続しているQRコードリーダーとの通信が途絶えた

QRコードリーダー通信異常復旧

restore

keybox

SPLATSキーボックスに接続しているQRコードリーダーとの通信が復旧した

tablet_connect_error

タブレット通信異常(入室)発生

occur

front_in

入室側SPLATSタブレットとの通信が途絶えた

タブレット通信異常(入室)復旧

restore

front_in

入室側SPLATSタブレットとの通信が復旧した

タブレット通信異常(退室)発生

occur

front_out

退室側SPLATSタブレットとの通信が途絶えた

タブレット通信異常(退室)復旧

restore

front_out

退室側SPLATSタブレットとの通信が復旧した

camera_communication_error

カメラ通信異常(入室)発生

occur

control

入室側カメラとの通信が途切れた

カメラ通信異常(入室)復旧

restore

control

入室側カメラとの通信が復旧した

カメラ通信異常(退室)発生

occur

control

退室側カメラとの通信が途切れた

カメラ通信異常(退室)復旧

restore

control

退室側カメラとの通信が復旧した

カメラ通信異常発生

occur

keybox

カメラとの通信が途切れた

カメラ通信異常復旧

restore

keybox

カメラとの通信が復旧した

camera_recording_error

カメラ録画異常(入室)発生

occur

control

入室側カメラが録画を行っていない

カメラ録画異常(入室)復旧

restore

control

入室側カメラが録画を開始した

カメラ録画異常(退室)発生

occur

control

退室側カメラが録画を行っていない

カメラ録画異常(退室)復旧

restore

control

退室側カメラが録画を開始した

カメラ録画異常発生

occur

keybox

カメラが録画を行っていない

カメラ録画異常復旧

restore

keybox

カメラが録画を開始した

camera_sdcard_error

カメラSDカード接続異常(入室)発生

occur

control

入室側カメラのSDカードを認識できない

カメラSDカード接続異常(入室)復旧

restore

control

入室側カメラのSDカードを認識した

カメラSDカード接続異常(退室)発生

occur

control

退室側カメラのSDカードを認識できない

カメラSDカード接続異常(退室)復旧

restore

control

退室側カメラのSDカードを認識した

カメラSDカード接続異常発生

occur

keybox

カメラのSDカードを認識できない

カメラSDカード接続異常復旧

restore

keybox

カメラのSDカードを認識した

card_reader_connect_error

機器異常発生

occur

keybox

キーボックスで機器異常が発生した

機器異常復旧

restore

keybox

キーボックスで機器異常が復旧した

exp_board_connect_error

機器異常発生

occur

keybox

キーボックスで機器異常が発生した

機器異常復旧

restore

keybox

キーボックスで機器異常が復旧した

led_touch_connect_error

機器異常発生

occur

keybox

キーボックスで機器異常が発生した

機器異常復旧

restore

keybox

キーボックスで機器異常が復旧した

keyunit_connect_error

機器異常発生

occur

keybox

キーボックスで機器異常が発生した

機器異常復旧

restore

keybox

キーボックスで機器異常が復旧した

unlock_error

解錠エラー発生

occur

control

扉が解錠しなかった

解錠エラー復旧

restore

control

解錠エラーが発生しているときに解錠/施錠した

lock_error

施錠エラー発生

occur

control

扉が施錠しなかった

施錠エラー復旧

restore

control

施錠エラーが発生しているときに解錠/施錠した

gate_error

セキュリティゲート異常発生

occur

control

制御しているゲートで異常が発生した

セキュリティゲート異常復旧

restore

control

制御しているゲートで発生していた異常が復旧した

door_unlock_error

扉解錠エラー発生

occur

keybox

扉が解錠しなかった

扉解錠エラー復旧

restore

keybox

扉解錠エラーが発生しているときに解錠/施錠した

key_unlock_error

キーホルダー解錠エラー発生 ({カギ名})

occur

keybox

キーホルダーが解錠しなかった

キーホルダー解錠エラー復旧 ({カギ名})

restore

keybox

キーホルダー解錠エラーが発生しているときに解錠/施錠した

communication_error

通信エラー発生

occur

control
keybox

デバイスとクラウド間の通信が5分以上出来なくなった

通信エラー復旧

restore

control
keybox

デバイスとクラウド間の通信が復旧した

emergency

tamper

タンパー検知発生

occur

keybox

SPLATSキーボックスの背板を開けた

タンパー検知復旧

restore

keybox

SPLATSキーボックスの背板を閉めた

broken_open

こじ開け発生

occur

control

扉が無理やり開けられた

こじ開け復旧

restore

control

こじ開け発生を確認して、扉を解錠した

扉非常解錠発生

occur

keybox

非常解錠キーや非常解錠レバーで扉を開けられた

扉非常解錠復旧

restore

keybox

扉非常解錠発生を確認して、 扉を閉めた

thumbturn

非常解錠発生

occur

control

運用上許可されていない操作(サムターン、鍵の使用など)により扉が不正に開けられた

非常解錠復旧

restore

control

非常解錠発生を確認して、扉を解錠した

broken_lend

キーホルダー強制取り出し発生 ({カギ名})

occur

keybox

キーホルダーが無理やり取り出された

キーホルダー強制取り出し復旧 ({カギ名})

restore

keybox

無理やり取り出されたキーホルダーが返却された