Quagga APIリファレンス

概要

APIエンドポイント

https://quagga.studio/api/v1

データ形式

JSON

アクセストークン

全てのAPIリクエストにプロフィールで取得した秘密の暗号を Authorizationリクエストヘッダに付与してください。

Authorization: Bearer QuAGGa2023APitoKeNSAMPle

イベントID

特定のイベントの情報を取得する場合は、イベントIDが必要です。

イベントIDは回答/管理画面のURLから取得することができます。

例 (以下では、「1」がイベントIDになります)

https://quagga.studio/programs/1/quiz
https://quagga.studio/programs/1/admin

ステータスコード

下記のコードを返却します。

| ステータスコード | 説明 | | - | - | | 200 | リクエスト成功 | | 201 | 登録成功 | | 204 | リクエストに成功したが返却するbodyが存在しない | | 400 | 不正なリクエストパラメータを指定している | | 401 | APIアクセストークンが不正、または権限不正 | | 404 | 存在しないURLにアクセス | | 429 | リクエスト制限を超えている | | 500 | 不明なエラー |

利用制限

ユーザ毎に1分間に30リクエストまで受け付けます。 決められた制限を超える場合は、429 Too Many Requests が返却されます。

API

問題情報一覧

GET /programs/{event_id}/questions

Request

| パラメータ | 内容 | 必須 | | --- | --- | :---: | | event_id | イベントID | Yes |

Response

  {
    questions: [
      {
        id: "40255a8a-944d-461a-9e01-ec3585b1bbee",
        period: 1,
        description: "絵画を発表された順に並べて",
        q_format: "bonus",
        answer: "2,4,1,3",
        point: 3,
        time: 15,
        choice_number: 4,
        answer_number: 4,
        is_enquete: false,
        money: 250000,
        payment_type_name: "split"
      }
    ]
  }
questions
(questionの配列)
id問題ID
periodピリオド
description概要
q_format

出題形式
択一: alternative
複数選択: multiple
文字入力: input
並び替え: sort
解数秘匿: secret
ボーナス: bonus

answer答え
答えが複数ある場合は「,」で区切り、文字入力の場合は答えママ
point正解時配当ポイント
time回答制限時間
choice_number選択肢数
answer_number答えの数
is_enqueteアンケートか(true|false)
money正解時配当額
payment_type_name

配当方式
split: 山分け
full: 満額

問題詳細

GET /programs/{event_id}/questions/{question_id}

Request

| パラメータ | 内容 | 必須 | | --- | --- | :---: | | event_id | イベントID | Yes | | question_id | 問題ID(IDは問題一覧から取得してください) | Yes |

Response

{
  question: {
    id: "40255a8a-944d-461a-9e01-ec3585b1bbee",
    period: 1,
    description: "絵画を発表された順に並べて",
    q_format: "bonus",
    answer: "2,4,1,3",
    point: 3,
    time: 15,
    choice_number: 4,
    answer_number: 4,
    is_enquete: false,
    money: 250000,
    payment_type_name: "split"
  },
  answers: [
    {
      id: 1,
      answer: "1,2,3,4",
      correct: false,
      point: 4,
      time: "5.63",
      money: "0.0",
      member: {
        id: 1,
        admin: false,
        user: {
          id: 1,
          name: "クアッガ",
          name_gana: "くあっが"
        }
      },
      question_id: "40255a8a-944d-461a-9e01-ec3585b1bbee"
    }
  ]
}
question
id問題ID
periodピリオド
description概要
q_format

出題形式
択一: alternative
複数選択: multiple
文字入力: input
並び替え: sort
解数秘匿: secret
ボーナス: bonus

answer答え
答えが複数ある場合は「,」で区切り、文字入力の場合は答えママ
point正解時配当ポイント
time回答制限時間
choice_number選択肢数
answer_number答えの数
is_enqueteアンケートか(true|false)
money正解時配当額
payment_type_name

配当方式
split: 山分け
full: 満額

answers
(answerの配列)
id回答ID
answer回答
答えが複数ある場合は「,」で区切り、文字入力の場合は答えママ
correct

集計の結果、正解しているか
true: 正解
false: 不正解

point配当ポイント
time回答タイム
money配当金額
member参加者情報
question_id問題ID
member
id参加者ID
admin管理者権限の有無
userユーザー情報
user
idユーザーID
name名前
name_gana名前(ひらがな)

直近に集計された問題情報

GET /programs/{event_id}/questions/last_aggregate

Request

| パラメータ | 内容 | 必須 | | --- | --- | :---: | | event_id | イベントID | Yes |

Response

{
  question: {
    id: "40255a8a-944d-461a-9e01-ec3585b1bbee",
    period: 1,
    description: "絵画を発表された順に並べて",
    q_format: "bonus",
    answer: "2,4,1,3",
    point: 3,
    time: 15,
    choice_number: 4,
    answer_number: 4,
    is_enquete: false,
    money: 250000,
    payment_type_name: "split"
  },
  answers: [
    {
      id: 1,
      answer: "1,2,3,4",
      correct: false,
      point: 4,
      time: "5.63",
      money: "0.0",
      member: {
        id: 1,
        admin: false,
        user: {
          id: 1,
          name: "クアッガ",
          name_gana: "くあっが"
        }
      },
      question_id: "40255a8a-944d-461a-9e01-ec3585b1bbee"
    }
  ]
}
question
id問題ID
periodピリオド
description概要
q_format

出題形式
択一: alternative
複数選択: multiple
文字入力: input
並び替え: sort
解数秘匿: secret
ボーナス: bonus

answer答え
答えが複数ある場合は「,」で区切り、文字入力の場合は答えママ
point正解時配当ポイント
time回答制限時間
choice_number選択肢数
answer_number答えの数
is_enqueteアンケートか(true|false)
money正解時配当額
payment_type_name

配当方式
split: 山分け
full: 満額

answers
(answerの配列)
id回答ID
answer回答
答えが複数ある場合は「,」で区切り、文字入力の場合は答えママ
correct

集計の結果、正解しているか
true: 正解
false: 不正解

point配当ポイント
time回答タイム
money配当金額
member参加者情報
question_id問題ID
member
id参加者ID
admin管理者権限の有無
userユーザー情報
user
idユーザーID
name名前
name_gana名前(ひらがな)

特定のピリオドのチャンピオン情報

GET /programs/{event_id}/periods/{period}/champion

Request

| パラメータ | 内容 | 必須 | デフォルト値 | 備考 | | --- | --- | :---: | :---: | :---: | | event_id | イベントID | Yes | - | - | | period | ピリオド | Yes | - | 直近集計された問題のピリオドを使用したい場合は
last_aggregate を指定してください

Response

※チャンピオンが確定していない場合、 championnull になります。

{
  champion: {
    id: 1,
    admin: false,
    user: {
      id: 1,
      name: "クアッガ",
      name_gana: "くあっが"
    }
  }
}
champion
id参加者ID
admin管理者権限の有無
userユーザー情報
user
idユーザーID
name名前
name_gana名前(ひらがな)

特定のピリオドの成績

GET /programs/{event_id}/result/period

Request

| パラメータ | 内容 | 必須 | デフォルト値 | | --- | --- | :---: | :---: | | event_id | イベントID | Yes | - | | period | ピリオド | No | 直近集計された問題のピリオド |

Response

{
  results: [
    {
      rank: 1,
      point: 123,
      time: "404.3",
      money: "123456.0",
      member: {
        id: 1,
        admin: false,
        user: {
          id: 1,
          name: "クアッガ",
          name_gana: "くあっが"
        }
      }
    }
  ]
}
results
(resultの配列)
rank順位
point獲得ポイント
time合計回答時間
money獲得金額
member参加者情報
member
id参加者ID
admin管理者権限の有無
userユーザー情報
user
idユーザーID
name名前
name_gana名前(ひらがな)

暫定総合成績

GET /programs/{event_id}/result/total

Request

| パラメータ | 内容 | 必須 | デフォルト値 | | --- | --- | :---: | :---: | | event_id | イベントID | Yes | - |

Response

{
  results: [
    {
      rank: 1,
      point: 123,
      time: "404.3",
      money: "123456.0",
      member: {
        id: 1,
        admin: false,
        user: {
          id: 1,
          name: "クアッガ",
          name_gana: "くあっが"
        }
      }
    }
  ]
}
results
(resultの配列)
rank順位
point獲得ポイント
time合計回答時間
money獲得金額
member参加者情報
member
id参加者ID
admin管理者権限の有無
userユーザー情報
user
idユーザーID
name名前
name_gana名前(ひらがな)