Create a gist now

Instantly share code, notes, and snippets.

@Snack-X /1_DOC.md
Last active Jan 17, 2017

Deresute.info API Documentation

Deresute.info API Documentation

Version : 1.1.0

If you are a developer/hacker/geek/whatever, you might like this.

All API request should have base URL https://apiv2.deresute.info. HTTP requests will be redirected to HTTPS.

Error

If an request fails, it will send empty body with 404/500 status code.
404 status code means there is no resource (image, pattern, story).
500 status code means I messed up with something, or Cygames have messed up with their CDN. Please report to me.

Rate Limiting

I'm a noob and I can't implement it. Even if I can implement it, I won't do it for now.
But, seriously, don't make a lot of request. API server is hosted on a small VPS.

Copyright, Thanks to

As same as deresute.info, all copyrights belong to their respective owners. What I did was just gathering informations.

I would be happy if you credit me when you use my API.

Also, I'd like to thank to @summertriangle-dev and @marcan.


Image Endpoints

All image endpoints can use jpg and png extensions.
But I didn't change JPEG's quality parameter from 100, JPGs can be larger than PNGs. Also, PNG supports alpha channel, so, why don't you use png?

Card

GET /image/card_{cardId}_{size}.{extension}

  • cardId - /\d{6}/, ID of a card (see /data/card)
  • size - one of s, m,l, xl
    • s - 88x88
    • m - 124x124
    • l - 192x240
    • xl - 272x340
  • extension - s and m size should use png (they have alpha channel)

Large card image

GET /image/card_bg_{cardId}.{extension}

NOTICE: cards with SR~SSR+ rarity will have this, others not

  • cardId - see above
  • extension

Emblem

GET /image/emblem_{emblemId}_{size}.{extension}

  • emblemId - /\d{7}/, ID of an emblem
  • size - one of s, l
    • s - 134x28
    • l - 240x50
  • extension - There is an alpha channel, so, use png

Music jacket

GET /image/jacket_{musicId}.{extension}

  • musicId - /\d{4}/, ID of a music (see /data/music)
  • extension

Data Endpoints

Every response will be application/json; charset=UTF-8, unless it's an 500 error.

All endpoints have search/filter function. Send them on the querystring.
If you send multiple queries, it will work as an AND operator.

Character

GET /data/character

Result:

[{
  id            - Number | internal ID for a character
  name          - String | name
  nameKana      - String | name in hiragana
                    ex) if name is 上条春菜, this would be かみじょうはるな
  age           - String | age, or sometimes 永遠の17
  ageRaw        - Number | age in raw value
                           some idol has value 500x, refers to internal special string DB
  hometown      - String
  height        - Number
  weight        - String | age, or sometimes ダイエットちゅう
  weightRaw     - Number | age in raw value
                           some idol has value 500x
  bodySize      - Array<String> | array of 'three-size', or sometimes ["?","?","?"]
  bodySizeRaw   - Array<Number> | array of bodySize in raw value
                                  some idols have value 500x
  birthMonth    - Number
  birthDay      - Number
  constellation - String
  bloodType     - String
  hand          - String
  favorite      - String
  voice         - String
  personality   - Number | type of an idol (how she acts in 'room')
  type          - Number | [1, 2, 3] for [Cu, Co, Pa], 4 means special
}, ...]

id, age, ageRaw, height, weight, weightRaw, birthMonth, birthDay, constellation, bloodType, hand, personality, type can be searched as an exact-match.
name, nameKana, hometown, favorite, voice can be search as a partial-match.

Ex) /data/character?nameKana=かみ&birthMonth=4

Card

GET /data/card

NOTICE: This provides very basic informations about cards. Starlight DB will have more detailed informations.

Result:

[{
  id          - Number | internal ID for a card
  name        - String | name
  characterId - Number | ID of a character
  attribute   - Number | [1, 2, 3] for [Cu, Co, Pa]
  rarity      - Number | 1 ~ 8 for [N, N+, R, R+, SR, SR+, SSR, SSR+]
  hasBg       - Boolean | usually true when rarity >= 5
                          if true, you can get an image from `/image/card_bg_{id}.{extension}`
}, ...]

id, characterId, attribute, rarity can be searched as an exact-match.
name can be searched as a partial-match.

Ex) /data/card?characterId=175&name=Snow

Music

GET /data/music

Result:

[{
  id       - Number | internal ID for a music
  bpm      - Number | this value can be different from the value on the deresute.info
  title    - String
  composer - String
  lyricist - String
}, ...]

id, bpm can be searched as an exact-match.
title, composer, lyricist can be searched as an partial-match.

Live

GET /data/live

Result:

[{
  id           - Number | internal ID for a live
  musicId      - Number | ID of a music
  musicTitle   - String | title of a music (for convenience)
  type         - Number | [1, 2, 3, 4] for [Cu, Co, Pa, All]
  liveDetailId - Array<Number> | internal value
  eventType    - Number | type of event
                            1 - token event (internally aka 'atapon')
                            3 - LIVE Groove (internally aka 'medley')
  debut        - Number | difficulty of debut pattern
  regular      - Number
  pro          - Number
  master       - Number
  masterPlus   - Number | 0 if no master+ exists
}, ...]

id, musicId, type, debut, regular, pro, master, masterPlus can be searched as an exact-match.
musicTitle can be searched as an partial-match.

Story

GET /data/story

Result:

[{
  id       - Number | internal ID of a story category
  type     - Number | [1, 2, 3, 4] for [story, character, event, special]
  title    - String
  subtitle - String
  cleaned  - String | better representation of title and subtitle
  story    - Array<StoryDetail>
}, ...]

StoryDetail = {
  id       - Number | internal ID of an individual story
  title    - String
  subtitle - String
  cleaned  - String | better representation of title and subtitle
}

id, type can be searched as an exact-match.
title, subtitle, cleaned can be searched as an partial-match (not searching stories under story).

Pattern Endpoint

GET /pattern/{liveId}_{difficulty}

This is just a csv-json convert.

  • liveId - /\d{3}/, ID of a live (see /data/live), should be zero padded
  • difficulty - 1 ~ 5 for [debut, regular, pro, master, master+]

Ex) /pattern/001_1

Story Endpoint

GET /story/{storyId}

See 2_STORY_CMD.md for command reference.

  • storyId - /\d{7}/, ID of an individual story (see /data/story)

Result:

[{
  name - String | name of a command
  args - Array<String> | arguments
}, ...]
name summary usage classname minarg maxarg
title タイトル設定 title <タイトル名> Title 1 1
outline あらすじ設定 outline <あらすじ> Outline 1 1
chara キャラの追加 chara <キャラID> <タイプID> <表情ID> Chara 4 4
visible キャラ表示切り替え visible <キャラID> Visible 2 2
type キャラタイプ切り替え type <キャラID> <タイプID> Type 2 2
face キャラ表情 face <キャラID> <表情ID> <タイプID:オプション> <オフセットX:オプション> <オフセットY:オプション> Face 2 5
focus キャラを明るく表示 focus <キャラID> Focus 1 1
background 背景設定 background <背景ID もしくは カードID> Background 1 1
print テキスト表示 pring <名前> <テキスト> Print 2 2
tag タグ設定 tag <タグID> Tag 1 1
goto 指定タグの位置に移動 goto <飛ばしたいタグID> Goto 1 1
bgm BGM指定 bgm <キュー名> Bgm 1 2
touch タッチ入力待ち touch Touch 0 0
choice 選択肢追加 choice <選択肢ラベル> <飛ばしたいタグID> Choice 2 2
vo ボイス再生 vo <ボイスキュー名> Vo 1 1
wait 指定時間待機 wait <待ち時間> Wait 1 1
in_L 左からスライドイン in_L <キャラID> <フレーム数:オプション> <フェードフラグ:オプション> InL 1 3
in_R 右からスライドイン> in_R <キャラID> <フレーム数:オプション> <フェードフラグ:オプション> InR 1 3
out_L 左へスライドアウト out_L <キャラID> <フレーム数:オプション> <フェードフラグ:オプション> OutL 1 3
out_R 右へスライドアウト out_R <キャラID> <フレーム数:オプション> <フェードフラグ:オプション> OutR 1 3
fadein フェードイン> fadein <キャラID> <フレーム数:オプション> Fadein 1 2
fadeout フェードアウト fadeout <キャラID> <フレーム数:オプション> Fadeout 0 2
in_float フロートイン in_float <キャラID> <フレーム数:オプション> InFloat 1 2
out_float フロートアウト out_float <キャラID> <フレーム数:オプション> OutFloat 1 2
jump ジャンプ jump <キャラID> <回数:オプション> Jump 1 2
shake 震える shake <キャラID> <回数:オプション> Shake 1 2
pop 軽く弾む pop <キャラID> <回数:オプション> Pop 1 2
nod 沈む nod <キャラID> <回数:オプション> Nod 1 2
question_right はてな 右向き question_right <キャラID> QuestionRight 1 1
question_left はてな 左向き question_left <キャラID> QuestionLeft 1 1
se SE再生 se <キューシート> <キュー名> Se 1 2
black_out 暗転 black_out <アルファ:オプション> <時間:オプション> BlackOut 0 2
black_in 暗転からの復帰 black_in BlackIn 0 2
white_out ホワイトアウト white_out <アルファ:オプション> <時間:オプション> WhiteOut 0 2
white_in ホワイトアウトから復帰 white_in WhiteIn 0 2
transition 場面転換演出 transition <アニメ名:オプション> Transition 0 1
situation 指定文字列を帯表示 situation <場面名> Situation 1 1
color_fadein 指定色フェードイン color_fadein <透明度> <時間> ColorFadein 3 3
flash フラッシュ flash Flash 0 0
shake_text テキストウィンドウを揺らす shake_text ShakeText 0 0
text_size フォントサイズ指定 text_size <フォントサイズ> TextSize 1 1
shake_screen 画面全体揺らす shake_screen ShakeScreen 0 0
double テキストを重ねて表示 double <名前> <テキスト> <オフセットX:オプション> <オフセットY:オプション> Double 2 4
flower_y 黄色の花びら flower_y <キャラID> <オフセットX:オプション> <オフセットY:オプション> FlowerY 1 3
flower_r 赤い花びら flower_r <キャラID> <オフセットX:オプション> <オフセットY:オプション> FlowerR 1 3
concent 集中線 concent <キャラID> <オフセットX:オプション> <オフセットY:オプション> Concent 1 3
find_l 気付(左) find_l <キャラID> <オフセットX:オプション> <オフセットY:オプション> FindL 1 3
find_r 気付き(右) find_r <キャラID> <オフセットX:オプション> <オフセットY:オプション> FindR 1 3
laugh_l 笑い三本線(左) laugh_l <キャラID> <オフセットX:オプション> <オフセットY:オプション> LaughL 1 3
laugh_r 笑い三本線(右) laugh_r <キャラID> <オフセットX:オプション> <オフセットY:オプション> LaughR 1 3
chord_l 音符(左) chord_l <キャラID> <オフセットX:オプション> <オフセットY:オプション> ChordL 1 3
chord_r 音符(右) chord_r <キャラID> <オフセットX:オプション> <オフセットY:オプション> ChordR 1 3
sweat_l 汗(左) sweat_l <キャラID> <オフセットX:オプション> <オフセットY:オプション> SweatL 1 3
sweat_r 汗(右) sweat_r <キャラID> <オフセットX:オプション> <オフセットY:オプション> SweatR 1 3
question_l はてな(左) question_l <キャラID> <オフセットX:オプション> <オフセットY:オプション> QuestionL 1 3
question_r はてな(右) question_r <キャラID> <オフセットX:オプション> <オフセットY:オプション> QuestionR 1 3
angry ぷんすか(左) angry <キャラID> <オフセットX:オプション> <オフセットY:オプション> Angry 1 3
drop_l 汗2(左) drop_l <キャラID> <オフセットX:オプション> <オフセットY:オプション> DropL 1 3
drop_r 汗2(右) drop_r <キャラID> <オフセットX:オプション> <オフセットY:オプション> DropR 1 3
live ライブ遷移 live <楽曲ID> <難易度(debut:1から数字上がる毎に難易度アップ)> <メンバー1ID> <メンバー2ID> <メンバー3ID> <メンバー4ID> <メンバー5ID> <観客フラグ:オプション> Live 7 8
scale 拡縮 scale <キャラID> <拡縮率(等倍は1)> Scale 2 2
title_telop タイトルテロップ title_telop <ストーリーID> TitleTelop 1 1
window_visible テキストウィンドウの表示切り替え window_visible <\"true\" か \"false\"> WindowVisible 1 1
log ログにだけ表示するテキスト log <キャラID> <名前> <テキスト> <ボイスID : オプション> Log 3 4
novoice ボイス再生しない novoice NoVoice 0 0
attract 話している人 attract <キャラID> Attract 1 1
change キャラ位置入れ替え change <位置1> <位置2> <移動フレーム数:オプション> Change 2 3
fadeout_all キャラとウィンドウを消す fadeout_all <フェード時間(フレーム)> FadeoutAll 0 1
v1.0.0 [2016-07-21]
- First version of Deresute.info API Documentation
v1.0.1 [2016-07-22]
- Added `eventType` on `/data/live` endpoint
v1.1.0 [2016-12-02]
- Renamed `weight` to `weightRaw` on `/data/character` endpoint
- `weight` on `/data/character` endpoint will return string value
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment