Skip to content

API設計

Averak edited this page Oct 18, 2022 · 22 revisions

REST API

詳細はSwagger UIを参照してください。

ヘルスチェックAPI

/api/health
GET

ルーム作成API

/api/rooms
POST

ルーム入室API

/api/rooms/{room_id}/join
POST

STOMP API(over WebSocket)

詳細はasyncapi.ymlを参照してください。

Pub Topics

タイマー開始トピック

/app/rooms/{room_id}/timer/start

{
  "value": number, // タイマー時間を秒単位で指定(例:15分なら900にする)
}

タイマー再開トピック

/app/rooms/{room_id}/timer/resume

{
  "value": number, // 残り時間を秒単位で指定
}

タイマー停止トピック

/app/rooms/{room_id}/timer/stop

タイマーリセットトピック

/app/rooms/{room_id}/timer/reset

スライドを進めるトピック

/app/rooms/{room_id}/slides/next

スライドを戻すトピック

/app/rooms/{room_id}/slides/previous

ポインター操作トピック

/app/rooms/{room_id}/pointer/control

{
  alpha: number,
  beta: number,
  beta: gamma,
}

ポインター切断トピック

/app/rooms/{room_id}/pointer/disconnect

Sub Topics

ユーザリスト購読トピック

/topic/rooms/{room_id}/users

{
  users: [
    {
      id: string,
      name: string,
    }
  ]
}

タイマー購読トピック

/topic/rooms/{room_id}/timer

{
  value: number, // 初期値[s]
  finish_at: date, // 終了予定日時(READY中は当てにならん数値)
  status: number, // ステータスIDが入る(0: READY、1: RUNNING)
}

スライド操作購読トピック

/topic/rooms/{room_id}/slides/control

{
  control: number // スライド操作ID(0: NEXT、1: PREVIOUS)
}

ポインター操作購読トピック

rotationは、ポインター切断イベントを配信する場合(=enabledがfalseの場合)のみnullになる。

/topic/rooms/{room_id}/pointer/control

{
  user: {
    id: string,
    name: string,
  },
  enabled: boolean, // ポインター表示フラグ(ポインターボタンを離したら、これがfalseになる)
  rotation: {  // NULLABLなセンサ値
    alpha: number,
    beta: number,
    beta: gamma,
  }
}

例外購読トピック

ユーザのpub処理に失敗した場合に、本トピックから例外を対象ユーザのみに配信します。

/topic/exception

{
  code: number,
  message: string,
}