Socket Start v2
リクエスト
POST https://api.dmdata.jp/v2/socket
WebSocket v2 に接続する場合、このAPIを利用してアクセスするURLを取得します。
リクエストボディ(JSON)
パラメータ名 | 必須 | デフォルト | 説明 |
---|---|---|---|
classifications | はい | Array<String> WebSocketで取得する配信区分を指定。 緊急地震(予報)区分: eew.forecast 緊急地震(警報)関連区分: eew.warning 緊急地震(リアルタイム)区分: eew.realtime 地震・津波関連区分: telegram.earthquake 火山関連区分: telegram.volcano 気象警報・注意報関連区分: telegram.weather 定時関連区分: telegram.scheduled | |
types | いいえ | Array<String> 取得したいデータ種類コードを指定。最大30個まで指定可能 | |
test | いいえ | no | String テスト電文を受け取るか指定。受け取る場合は including にする。 注意:XML電文以外のテスト配信は no 時も配信されます。本文中を参照するようにしてください。 |
appName | いいえ | String アプリケーション名を指定。最大24バイトまで | |
formatMode | いいえ | raw | String データフォーマットの指定。生電文: raw、JSON化データ: json |
例:
{
"classifications": [
"telegram.earthquake",
"telegram.weather"
],
"types": [
"VXSE51",
"VXSE52",
"VXSE53",
"VPWW54"
],
"test": "no",
"appName": "Application Test"
}
APIに必要な権限
- socket.start
- eew.get.forecast (配信区分によっては必要)
- eew.get.warning (配信区分によっては必要)
- eew.get.realtime (取得情報によっては必要)
- telegram.get.earthquake (配信区分によっては必要)
- telegram.get.volcano (配信区分によっては必要)
- telegram.get.weather (配信区分によっては必要)
- telegram.get.scheduled (配信区分によっては必要)
レスポンス
APIは常にJSONを返答します。
status: ok
成功時に次のような内容を返答します。
{
"responseId": "83c36173ceaf9e44",
"responseTime": "2021-04-01T00:00:00.000Z",
"status": "ok",
"ticket": "Tik....",
"websocket": {
"id": 0,
"url": "wss://ws003.api.dmdata.jp/v2/websocket?ticket=Tik....",
"protocol": [
"dmdata.v2"
],
"expiration": 300
},
"classifications": [
"telegram.weather",
"telegram.earthquake"
],
"test": "no",
"types": [
"VXSE51",
"VXSE52",
"VXSE53",
"VPWW54"
],
"formats": [
"xml",
"a/n",
"binary"
],
"appName": "Application Test"
}
フィールド | 出現 | 説明 |
---|---|---|
responseId | いつも | String API処理ID |
responseTime | いつも | ISO8601Time API処理時刻 |
status | いつも | String 成功時は ok 、失敗時(エラー)は error |
ticket | いつも | String WebSocketに接続するためのticket |
websocket | いつも | Object WebSocketへの接続情報 |
websocket.id | いつも | Integer WebSocketID |
websocket.url | いつも | String WebSocketの接続先URLでticket付き |
websocket.protocol | いつも | Array<String> WebSocketのProtocolで配列の要素は dmdata.v2 一つで固定 |
websocket.expiration | いつも | Integer キーの有効時間で単位は秒。値は 300 で固定 |
classifications | いつも | Array<String> WebSocketで受け取る配信区分 |
test | いつも | String including の時のみ、XML電文のテストをWebsocketで受け取る |
types | いつも | Array<String>|Null WebSocketで受け取るデータ種類コードリスト。Null 時は受け取る配信区分の全部を受け取る |
formats | いつも | Array<String> WebSocketで受け取る情報フォーマット |
appName | いつも | String|Null リクエストで指定したアプリ名 |
status: error
APIは各種エラーを次の通り返答します。
{
"responseId": "66d23c0cede77d82",
"responseTime": "2021-04-01T00:00:00.000Z",
"status": "error",
"error": {
"message": "The body of the request is not json.",
"code": 400
}
}
フィールド | 出現 | 説明 |
---|---|---|
error | いつも | Object エラー情報。 |
error.message | いつも | String エラーメッセージ、標準エラーおよび別表参照 |
error.code | いつも | Integer HTTPステータスコード |
標準エラー以外に以下のエラーを出力します。
ステータスコード | エラーメッセージ | 説明 |
---|---|---|
400 | The body of the request is not json. | リクエストボディにJSON形式のデータがない |
400 | At least one element of `classifications` is required. | 配信区分が指定されていない |
400 | The `types` is not a string or has more than 30 elements. | データ種類コードに不正な文字列があるか、30個以上指定されている |
400 | The `appName` is up to 24 bytes. | appNameに文字列でないか、24バイト以上の文字列が入力されている |
400 | You have entered a string that is not defined in `formatMode`. | formatModeにrawかjson以外が指定されている |
402 | No contract. | 有効な契約がない |
409 | The maximum number of simultaneous connections is full. | アカウントの有効な接続数に達して新たにWebSocketに接続できない |