Gehirn EDJ¶
Gehirn EDJ の API ドキュメントは OpenAPI 形式 でも提供しています。
イベント形式¶
Gehirn EDJ では、イベントを次の形式の JSON オブジェクトで表現します。
{
"type": "object",
"properties": {
"@version": {
"const": "1"
},
"id": {
"type": "string"
},
"service": {
"type": "string"
},
"name": {
"type": "string"
},
"summary": {
"type": "string"
},
"short": {
"type": "string"
},
"content": {},
"raw": {},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"content_type": {
"type": "string"
},
"filename": {
"type": "string"
},
"encoding": {
"type": "string",
"enum": ["7bit", "8bit", "base64"]
},
"content": {
"type": "string"
}
},
"required": [
"content_type",
"encoding",
"content"
],
"additionalProperties": false
},
"minItems": 0
},
"created_at": {
"type": "string",
"format": "date-time"
},
"expires_at": {
"type": "string",
"format": "date-time"
},
"topic_id": {
"type": "string"
}
},
"required": [
"@version",
"id",
"service",
"name",
"summary",
"content",
"attachments",
"created_at"
],
"additionalProperties": false
}
プロパティ |
型 |
説明 |
---|---|---|
."@version" |
string |
イベントスキーマのバージョン。常に |
.id |
string |
イベントの ID イベントはリトライなどにより複数回配信される場合があります。 ID で重複を検知できます。 |
.service |
string |
イベントが発生したサービスの ID |
.name |
string |
イベントの種類 |
.summary |
string |
イベントの概要を表す文字列。最大 8KiB 。改行コードは LF 。 |
.content |
any |
イベントの詳細を表す任意の JSON 。各サービスで別途定義されます。 |
.attachments |
array |
イベントの添付ファイル |
.attachments[].content_type |
string |
添付ファイルのメディアタイプ |
.attachments[].filename |
string |
添付ファイルのファイル名 空文字列が設定される場合もあります。 |
.attachments[].encoding |
string |
添付ファイルの Content Transfer Encoding
|
.attachments.content |
string |
添付ファイルの内容。 ".encoding" 方式によりエンコードされます。 添付ファイルを |
.created_at |
string (date-time) |
イベント発生日時 |
.expires_at |
string (date-time) |
イベント有効期限 プロパティが存在しない場合は、イベントに有効期限はありません。 |
イベント例¶
Gehirn MTA でメールを受信した場合に発生するイベントの例です。
HTTP サブスクライバーでは、ご指定の URL 以下の JSON オブジェクトが POST されます。
.summary
は定義の通り LF 改行コードが利用されますが、 .content.body
は RFC 5322 に従い CRLF 改行コードが利用される場合があります。
{
"@version": "1",
"id": "072edd9c-d309-4790-8e70-0556466c5f0d",
"service": "mta",
"name": "incoming",
"summary": "From: <john.smith@example.net>\nTo: <sayhi@example.net>\nDate: 21 Jun 2023 06:00:00 +0000\nSubject: Hello\n\nHello World!\n",
"content": {
"header_list": [
{
"raw_name": "From",
"raw_value": " <john.smith@example.net>"
},
{
"raw_name": "To",
"raw_value": " <sayhi@example.net>"
},
{
"raw_name": "Date",
"raw_value": " 21 Jun 2023 06:00:00 +0000"
},
{
"raw_name": "Subject",
"raw_value": " Hello"
}
],
"header_map": {
"From": ["<john.smith@example.net>"],
"To": ["<sayhi@example.net>"],
"Date": ["21 Jun 2023 06:00:00 +0000"],
"Subject": ["Hello"]
},
"body": "Hello World!\r\n"
},
"attachments": [
{
"content_type": "image/jpeg",
"filename": "cat.jpeg",
"encoding": "base64",
"content": ""
}
],
"created_at": "2023-06-21T06:00:00Z"
}
廃止されたプロパティ¶
以下のプロパティは、ほかのプロパティで置き換えられるなどの理由により廃止されました。
ただし、 HTTP サブスクライバーでは後方互換性のため引き続き以下のプロパティが設定されます。
プロパティ |
型 |
説明 |
---|---|---|
.short |
string |
|
.raw |
any |
|
.topic_id |
string |
廃止されました |