Rule作成
概要
新規のイベント処理ルールを作成する。
必要な権限
rule
制限事項
- リクエストヘッダのAcceptは無視される
- リクエストヘッダのContent-Typeは全てapplication/jsonとして扱う
- リクエストボディはJSON形式のみ受け付ける
- レスポンスヘッダのContent-Typeはapplication/jsonのみをサポートし、レスポンスボディはJSON形式とする
リクエスト
リクエストURL
{CellURL}__ctl/Rule
メソッド
POST
リクエストクエリ
| クエリ名 | 概要 | 有効値 | 必須 | 備考 |
|---|---|---|---|---|
| p_cookie_peer | クッキー認証値 | 認証時にサーバから返却されたクッキー認証値 | × | Authorizationヘッダの指定が無い場合のみ有効 クッキーの認証情報を利用する場合に指定する |
リクエストヘッダ
| ヘッダ名 | 概要 | 有効値 | 必須 | 備考 |
|---|---|---|---|---|
| X-HTTP-Method-Override | メソッドオーバーライド機能 | 任意 | × | POSTメソッドでリクエスト時にこの値を指定すると、指定した値がメソッドとして使用されます。 |
| X-Override | ヘッダオーバライド機能 | ${上書きするヘッダ名}:${値} | × | 通常のHTTPヘッダの値を上書きします。複数のヘッダを上書きする場合はX-Overrideヘッダを複数指定します。 |
| X-Personium-RequestKey | イベントログに出力するRequestKeyフィールドの値 | 半角英数、-(半角ハイフン)と_(半角アンダーバー) 最大128文字 | × | 指定がない場合は、UUIDの独自短縮表現として${4桁}_${18桁}の形式のBase64url文字列を自動採番 |
| Authorization | OAuth2.0形式で、認証情報を指定する | Bearer {AccessToken} | × | ※認証トークンは認証トークン取得APIで取得したトークン |
| Content-Type | リクエストボディの形式を指定する | application/json | × | 省略時は[application/json]として扱う |
| Accept | レスポンスボディの形式を指定する | application/json | × | 省略時は[application/json]として扱う |
リクエストボディ
Format
JSON
| 項目名 | 概要 | 有効値 | 必須 | 備考 |
|---|---|---|---|---|
| _Box.Name | ルールが紐づくべきBox名 | 有効な box名. このキーを指定しなかったりnull値を指定したリクエストは、いかなるBoxにも紐づかないRuleと解釈されます. | × | |
| Name | 作成するルールを識別するため任意の名前 | Boxに紐づく場合はBox内で一意、Boxに紐づかない場合はCellで一意である必要があります。 | × | 省略時は自動的にuuidが割り当たります |
| EventType | ルールをトリガーするイベントのタイプの一致検査用文字列 | Evnet Typeの値は、内部イベントでは別表のようにTypeが定義されています。外部イベントでは任意のTypeを指定可能です。 時刻によってトリガーされるイベントタイプとして、timer.oneshotとtimer.periodicがあります。これらをタイマーイベントと呼びます。 | × | .ではじまる文字列の場合、後方一致でマッチングを行います。それ以外は前方一致でマッチングを行います。 |
| EventSubject | ルールをトリガーすべきイベントのEvent Subject一致検査用文字列 | Event Subject はアカウントを表すURLになります。有効な値はその完全一致文字列となります。スキームとしては、http、https、personium-localunitが利用可能です。 | × | httpもしくはhttpsのURLの場合、personium-localunitで指定可能なURLの場合はエラーとなります。personium-localunitにて指定してください。 |
| EventObject | ルールをトリガーすべきイベントのEvent Object前方一致検査用文字列 | Event object の値はイベントのタイプにより異なります。 任意の文字列を設定可能ですが、意味を持つ値はイベントタイプにより異なります。 イベントタイプがtimer.oneshotのときは、ルールをトリガーしたい時刻をエポックミリ秒で指定します。その時刻にこのルールがトリガーされます。イベントタイプがtimer.periodicのときは、ルールをトリガーしたい周期を分で指定します。周期的にこのルールがトリガーされます。 | × | |
| EventInfo | ルールをトリガーすべきイベントのEvent Info前方一致検査用文字列 | Event info の値はイベントのタイプにより異なります。 任意の文字列を設定可能ですが、意味を持つ値はイベントタイプにより異なります。 | × | |
| EventExternal | ルールをトリガーすべきイベントが外部イベントであるかどうかを表すフラグ | 真偽値。外部イベントを検出したいときは true を設定してください。 | × | デフォルト値 false |
| Action | イベントがマッチしたときに起動すべきアクション | 有効な値は以下の別表 | 〇 | |
| TargetUrl | アクションに対する具体的なターゲットURL | Actionの値によって指定すべき値は変わります。規則は以下の別表 | × | フラグメントは設定しても無視されます。 |
タイマーイベント記述の規則
| EventType | EventObject | EventExternal | 備考 |
|---|---|---|---|
| timer.oneshot | エポックミリ秒(必須) | falseのみ | 内部では分に切り捨てられます |
| timer.periodic | 分(必須) | falseのみ |
タイマーイベントは次のようにイベント化されます。
| 項目名 | 値 |
|---|---|
| Subject | EventSubject |
| Schema | _Box.NameのBoxのSchema |
| RequestKey | null |
| External | false |
| Type | EventType |
| Object | EventObject |
| Info | EventInfo |
そのため、このイベントはルールとマッチします。
EventSubjectには、他CellのSubjectを設定することも可能ですが、他Cellの場合は、ルールトリガー後にイベントのSubjectはnullに設定されます。
Valid Actions
| Action | 説明 | TargetUrl | 備考 |
|---|---|---|---|
| exec | エンジンscript が起動しPOSTメソッドでイベントデータが渡されます。 | エンジンサービスのurl | - |
| relay | イベントをTargetUrlにリレーします。 | イベントの情報をリレーすべきリレー先Url | - |
| relay.event | イベントをTargetUrlの外部イベント受付APIにリレーします。 | イベントの情報をリレーすべきリレー先Cell URL | - |
| relay.data | EventObjectのurlからデータを読み出しTargetUrlにデータを書込みます。 | データを書き込むurl | EventTypeはodata.create、odata.update、odata.patchのみ有効 |
| log | Eventを info レベルでログ出力します。 | - | - |
| log.info | Eventを info レベルでログ出力します。 | - | - |
| log.warn | Eventを warn レベルでログ出力します。 | - | - |
| log.error | Eventを error レベルでログ出力します。 | - | - |
EventObject記述の規則
| EventExternal | _Box.Name | EventType | EventObject | 備考 |
|---|---|---|---|---|
| false | 設定あり | personium-localbox:/... personium-localcell:/__... | ||
| false | 設定なし | personium-localcell:/... | ||
| false | timer.oneshot timer.periodic | 数字のみの文字列 | ||
| true | 任意の文字列 |
TargetUrl記述の規則
| Action | _Box.Name | TargetUrl | 備考 |
|---|---|---|---|
| exec | 設定あり | personium-localbox:/... | |
| exec | 設定なし | personium-localcell:/... | |
| relay | 設定あり | スキームがhttp,https,personium-localunit,personium-localcell,personium-localboxのURL | httpもしくはhttpsのURLの場合、personium-localunitで指定可能なURLの場合はエラーとなります。personium-localunitにて指定してください。 |
| relay | 設定なし | スキームがhttp,https,personium-localunit,personium-localcellのURL | httpもしくはhttpsのURLの場合、personium-localunitで指定可能なURLの場合はエラーとなります。personium-localunitにて指定してください。 |
| relay.event | {Cell URL} | httpもしくはhttpsのURLの場合、personium-localunitで指定可能なURLの場合はエラーとなります。personium-localunitにて指定してください。 | |
| relay.data | 設定あり | スキームがhttp,https,personium-localunit,personium-localcell,personium-localboxのURL | httpもしくはhttpsのURLの場合、personium-localunitで指定可能なURLの場合はエラーとなります。personium-localunitにて指定してください。 |
| relay.data | 設定なし | スキームがhttp,https,personium-localunit,personium-localcellのURL | httpもしくはhttpsのURLの場合、personium-localunitで指定可能なURLの場合はエラーとなります。personium-localunitにて指定してください。 |
リクエストサンプル
{"Name":"rule1", "EventExternal":true, "Action":"log"}
レスポンス
成功時ステータスコード
201
レスポンスヘッダ
| ヘッダ名 | 概要 | 備考 |
|---|---|---|
| X-Personium-Version | APIの実行バージョン | リクエストが処理されたAPIバージョン |
| Access-Control-Allow-Origin | クロスドメイン通信許可ヘッダ | 返却値は"*"固定 |
| Content-Type | 返却されるデータの形式 | |
| Location | 作成したリソースへのURL | |
| ETag | リソースのバージョン情報 | |
| DataServiceVersion | ODataのバージョン |
レスポンスボディ
レスポンスはJSONオブジェクトで、オブジェクト(サブオブジェクト)に定義されるキー(名前)と型、並びに値の対応は以下のとおりです。
| オブジェクト | 項目名 | Data Type | 備考 |
|---|---|---|---|
| ルート | d | object | オブジェクト{1} |
| {1} | results | array | オブジェクト{2}の配列 |
| {2} | __metadata | object | オブジェクト{3} |
| {3} | uri | string | 作成したリソースへのURL |
| {3} | etag | string | Etag値 |
| {2} | __published | string | 作成日(UNIX時間) |
| {2} | __updated | string | 更新日(UNIX時間) |
| {1} | __count | string | $inlinecountクエリでの取得結果件数 |
Rule固有レスポンスボディ
| オブジェクト | 項目名 | Data Type | 備考 |
|---|---|---|---|
| {3} | type | string | CellCtl.Rule |
| {2} | Name | string | Rule名 |
| {2} | _Box.Name | string | 関係対象のBox名 |
| {2} | EventExternal | boolean | |
| {2} | EventSubject | string | |
| {2} | EventType | string | |
| {2} | EventObject | string | |
| {2} | EventInfo | string | |
| {2} | Action | string | |
| {2} | TargetUrl | string |
レスポンスボディサンプル
{
"d": {
"results": {
"__metadata": {
"uri": "https://cell1.unit1.example/__ctl/Rule(Name='rule1',_Box.Name='box1')",
"etag": "W/\"1-1486368212581\"",
"type": "CellCtl.Rule"
},
"Name": "rule1",
"_Box.Name": "box1",
"EventExternal": true,
"EventSubject": null,
"EventType": null,
"EventObject": null,
"EventInfo": null,
"Action": "log",
"TargetUrl": null,
"__published": "/Date(1486368212581)/",
"__updated": "/Date(1486368212581)/"
}
}
}
エラーレスポンス
エラーメッセージ一覧を参照
cURLサンプル
curl "https://cell1.unit1.example/__ctl/Rule" -X POST -i \
-H 'Authorization: Bearer AA~PBDc...(省略)...FrTjA' -H 'Accept: application/json' \
-d '{"Name":"rule1", "EventExternal":true, "Action":"log"}'
