{"info":{"title":"DXRating API","version":"1.0.0","description":"> **Public Beta**: This API is in public beta and may not be finalized before the end of May 2026. Breaking changes are expected.\n\nOpenAPI for DXRating.net"},"servers":[{"url":"/api/v1"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"PublishedDxdataCatalog":{"type":"object","properties":{"schemaVersion":{"const":1},"updatedAt":{"type":"string","minLength":1},"categories":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string","minLength":1}},"required":["category"],"additionalProperties":false}},"versions":{"type":"array","items":{"type":"object","properties":{"version":{"type":"string","minLength":1},"abbr":{"type":"string"},"releaseDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["version"],"additionalProperties":false}},"types":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"abbr":{"type":"string"},"iconUrl":{"type":"string"},"iconHeight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["type","name"],"additionalProperties":false}},"difficulties":{"type":"array","items":{"type":"object","properties":{"difficulty":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"color":{"type":"string"}},"required":["difficulty","name"],"additionalProperties":false}},"servers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1}},"required":["id","name"],"additionalProperties":false}},"songs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^dsng_[23456789abcdefghjkmnpqrstvwxyz]{10}$"},"category":{"type":"string","minLength":1},"title":{"type":"string","minLength":1},"artist":{"type":"string"},"bpm":{"type":"number","exclusiveMinimum":0},"imageName":{"type":"string"},"version":{"type":"string","minLength":1},"isNew":{"type":"boolean"},"isLocked":{"type":"boolean"},"sheets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^dsht_[23456789abcdefghjkmnpqrstvwxyz]{10}$"},"type":{"type":"string","minLength":1},"difficulty":{"type":"string","minLength":1},"level":{"type":"string","minLength":1},"internalLevelValue":{"type":"number","minimum":0},"noteDesigner":{"type":"string"},"noteCounts":{"type":"object","properties":{"tap":{"type":"integer","minimum":0,"maximum":9007199254740991},"hold":{"type":"integer","minimum":0,"maximum":9007199254740991},"slide":{"type":"integer","minimum":0,"maximum":9007199254740991},"touch":{"type":"integer","minimum":0,"maximum":9007199254740991},"break":{"type":"integer","minimum":0,"maximum":9007199254740991},"total":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"serverIds":{"type":"array","items":{"type":"string","minLength":1}},"serverOverrides":{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"object","properties":{"level":{"type":"string"},"levelValue":{"type":"number","minimum":0},"version":{"type":"string"}},"additionalProperties":false}},"isSpecial":{"type":"boolean"},"version":{"type":"string","minLength":1},"internalId":{"type":"integer","minimum":0,"maximum":9007199254740991},"releaseDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"multiverInternalLevelValue":{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"number","minimum":0}},"comment":{"type":"string"}},"required":["id","type","difficulty","level","internalLevelValue","noteCounts","serverIds","isSpecial","version"],"additionalProperties":false}},"searchAcronyms":{"type":"array","items":{"type":"string"}}},"required":["id","category","title","artist","imageName","version","isNew","isLocked","sheets","searchAcronyms"],"additionalProperties":false}},"tagGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"localized_name":{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"string"}},"color":{"type":"string"}},"required":["id","localized_name","color"],"additionalProperties":false}},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"localized_name":{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"string"}},"localized_description":{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"string"}},"group_id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["id","localized_name","localized_description"],"additionalProperties":false}},"tagSongs":{"type":"array","items":{"type":"object","properties":{"song_id":{"type":"string","pattern":"^dsng_[23456789abcdefghjkmnpqrstvwxyz]{10}$"},"sheet_id":{"type":"string","pattern":"^dsht_[23456789abcdefghjkmnpqrstvwxyz]{10}$"},"sheet_type":{"type":"string","minLength":1},"sheet_difficulty":{"type":"string","minLength":1},"tag_id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["song_id","sheet_id","sheet_type","sheet_difficulty","tag_id"],"additionalProperties":false}},"aliases":{"type":"array","items":{"type":"object","properties":{"song_id":{"type":"string","pattern":"^dsng_[23456789abcdefghjkmnpqrstvwxyz]{10}$"},"name":{"type":"string"}},"required":["song_id","name"],"additionalProperties":false}}},"required":["schemaVersion","updatedAt","categories","versions","types","difficulties","servers","songs","tagGroups","tags","tagSongs","aliases"],"additionalProperties":false,"examples":[{"schemaVersion":1,"updatedAt":"2026-08-30T15:00:13.396044948+00:00","categories":[{"category":"niconico＆ボーカロイド"},{"category":"maimai"},{"category":"宴会場"}],"versions":[{"version":"ORANGE PLUS","abbr":"ORANGE+ (暁)","releaseDate":"2015-03-19"},{"version":"Splash","abbr":"Splash (爽)","releaseDate":"2020-09-17"},{"version":"PRiSM","abbr":"PRiSM (鏡)","releaseDate":"2024-09-12"}],"types":[{"type":"dx","name":"DX（でらっくす）","abbr":"DX","iconUrl":"type-dx.png","iconHeight":22},{"type":"std","name":"STD（スタンダード）","abbr":"STD","iconUrl":"type-std.png","iconHeight":22},{"type":"utage","name":"宴（宴会場）","abbr":"宴"}],"difficulties":[{"difficulty":"basic","name":"BASIC","color":"#22bb5b"},{"difficulty":"master","name":"MASTER","color":"#9e45e2"},{"difficulty":"remaster","name":"Re:MASTER","color":"#ba67f8"}],"servers":[{"id":"jp","name":"日本版"},{"id":"intl","name":"海外版 (International ver.)"},{"id":"usa","name":"アメリカ海外版 (USA International ver.)"}],"songs":[{"id":"dsng_d9dbdcaw9v","category":"niconico＆ボーカロイド","title":"ウミユリ海底譚","artist":"n-buna","bpm":120,"imageName":"e05e2a6fc30cd26f1b87310732062c03fdcc3900808695594d4b7d1c625c7315","version":"ORANGE PLUS","isNew":false,"isLocked":false,"sheets":[{"id":"dsht_jxnmx39rwt","type":"std","difficulty":"master","level":"13","internalLevelValue":13.4,"noteDesigner":"はっぴー","noteCounts":{"tap":648,"hold":21,"slide":76,"break":14,"total":759},"serverIds":["jp","intl","usa"],"isSpecial":false,"version":"ORANGE PLUS","internalId":417,"releaseDate":"2015-05-14","multiverInternalLevelValue":{"BUDDiES":13.4,"FESTiVAL PLUS":13.4,"maimaiでらっくす PLUS":12.8}}],"searchAcronyms":["umiyuri","Umiyuri","Umiyuri Kaiteitan"]},{"id":"dsng_e3bzx8srqf","category":"maimai","title":"全世界共通リズム感テスト","artist":"☆リズムに合わせてボタンを叩き達成率を競うゲームです☆","bpm":120,"imageName":"692ae385226bd2ff2c7134b8593c195ef5d4294194c672eb33ce97394ec882ef","version":"ORANGE PLUS","isNew":false,"isLocked":false,"sheets":[{"id":"dsht_zqs3r86ssb","type":"std","difficulty":"basic","level":"6","internalLevelValue":6,"noteDesigner":"-","noteCounts":{"tap":48,"hold":0,"slide":0,"break":17,"total":65},"serverIds":["intl","usa"],"serverOverrides":{"intl":{"version":"Splash"}},"isSpecial":false,"version":"ORANGE PLUS","internalId":854,"releaseDate":"2015-04-01"}],"searchAcronyms":[]},{"id":"dsng_phnye8rsgn","category":"宴会場","title":"[習]ウミユリ海底譚","artist":"n-buna","bpm":120,"imageName":"e05e2a6fc30cd26f1b87310732062c03fdcc3900808695594d4b7d1c625c7315","version":"PRiSM","isNew":false,"isLocked":false,"sheets":[{"id":"dsht_cjgcb6z68z","type":"utage","difficulty":"【習】","level":"12+?","internalLevelValue":12.7,"noteCounts":{"tap":549,"hold":7,"slide":109,"touch":0,"break":1,"total":666},"serverIds":["jp","intl","usa"],"isSpecial":true,"version":"PRiSM","internalId":110417,"releaseDate":"2024-09-12","comment":"ウミユリ練習譚"}],"searchAcronyms":["[习]ウミユリ海底谭","我们当年哪有这条件"]}],"tagGroups":[{"id":1,"localized_name":{"en":"Patterns","ja":"パターン","zh-Hans":"配置"},"color":"#7dd3fc"}],"tags":[{"id":1,"localized_name":{"en":"Umiyuri","ja":"ウミユリ配置","zh-Hans":"错位"},"localized_description":{"en":"Umiyuri patterns require completing other notes between hitting the star head and beginning the star slide. After finishing those notes, you return to complete the star slide.\n\n~~Have you AP'd Kaitei Tan yet?~~","ja":"ズレ配置とは、スターのヘッドを叩いてからスライドを始めるまでの間に、他のノーツを処理する必要がある配置のことです。他のノーツを処理した後、スライドに戻って完成させます。\n\n~~海底譚APした？~~","zh-Hans":"错位是指从击打星星头后、直到可以正常滑动星星条前的时间内，需要完成其他音符。在完成其他音符后，再回来开始完成星星条的一种配置。\n\n~~海底谭AP了吗~~"},"group_id":1}],"tagSongs":[{"song_id":"dsng_d9dbdcaw9v","sheet_id":"dsht_jxnmx39rwt","sheet_type":"std","sheet_difficulty":"master","tag_id":1}],"aliases":[{"song_id":"dsng_d9dbdcaw9v","name":"海底谭你学不会"},{"song_id":"dsng_d9dbdcaw9v","name":"海𠷡"}]}]}}},"openapi":"3.1.1","paths":{"/tags":{"get":{"operationId":"tags.list","summary":"List all tags, groups, and song associations","tags":["Tags"],"parameters":[{"name":"idScheme","in":"query","schema":{"enum":["legacy","public"],"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"localized_name":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"Localized string. Keys are language codes: \"en\", \"ja\", \"zh-Hans\", \"zh-Hant\""},"localized_description":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"Localized string. Keys are language codes: \"en\", \"ja\", \"zh-Hans\", \"zh-Hant\""},"group_id":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","localized_name","localized_description","group_id"]}},"tagGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"localized_name":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"Localized string. Keys are language codes: \"en\", \"ja\", \"zh-Hans\", \"zh-Hant\""},"color":{"type":"string"}},"required":["id","localized_name","color"]}},"tagSongs":{"type":"array","items":{"type":"object","properties":{"song_id":{"type":"string"},"sheet_id":{"type":"string"},"sheet_type":{"type":"string"},"sheet_difficulty":{"type":"string"},"tag_id":{"type":"number"}},"required":["song_id","sheet_type","sheet_difficulty","tag_id"]}}},"required":["tags","tagGroups","tagSongs"]}}}}},"security":[]}},"/tags/attach":{"post":{"operationId":"tags.attach","summary":"Attach a tag to a song","tags":["Tags"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"songId":{"type":"string"},"sheetId":{"type":"string"},"sheetType":{"type":"string"},"sheetDifficulty":{"type":"string"},"tagId":{"type":"number"}},"required":["songId","sheetType","sheetDifficulty","tagId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]}}}}}}},"/comments":{"post":{"operationId":"comments.create","summary":"Create a new comment","tags":["Comments"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"songId":{"type":"string"},"sheetId":{"type":"string"},"sheetType":{"type":"string"},"sheetDifficulty":{"type":"string"},"parentId":{"type":"number"},"content":{"type":"string"}},"required":["songId","sheetType","sheetDifficulty","content"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"created_at":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"string"}]}},"required":["id","created_at"]}}}}}},"get":{"operationId":"comments.list","summary":"List comments for a specific song sheet","tags":["Comments"],"parameters":[{"name":"songId","in":"query","required":true,"schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"sheetId","in":"query","required":false,"schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"sheetType","in":"query","required":true,"schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"sheetDifficulty","in":"query","required":true,"schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"parent_id":{"anyOf":[{"type":"number"},{"type":"null"}]},"created_at":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"string"}]},"content":{"type":"string"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","parent_id","created_at","content","display_name"]}}}}}},"security":[]}},"/aliases":{"get":{"operationId":"aliases.list","summary":"List all song aliases","tags":["Aliases"],"parameters":[{"name":"idScheme","in":"query","schema":{"enum":["legacy","public"],"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"song_id":{"type":"string"},"name":{"type":"string"}},"required":["song_id","name"]}}}}}},"security":[]},"post":{"operationId":"aliases.create","summary":"Create a new song alias","tags":["Aliases"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"songId":{"type":"string"},"name":{"type":"string"}},"required":["songId","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]}}}}}}},"/analytics/trending":{"get":{"operationId":"analytics.trending","summary":"Get trending sheets based on view counts","tags":["Analytics"],"parameters":[{"name":"idScheme","in":"query","schema":{"enum":["legacy","public"],"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"songId":{"type":"string"}},"required":["songId"]}},"dateFrom":{"type":"string"},"dateTo":{"type":"string"}},"required":["results","dateFrom","dateTo"]}}}}},"security":[]}},"/arcades/games":{"get":{"operationId":"arcades.games","summary":"List supported arcade games","tags":["Arcades"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"manufacturer":{"type":"string"}},"required":["id","name","manufacturer"]}}},"required":["items"]}}}}},"security":[]}},"/arcades/venues":{"get":{"operationId":"arcades.venues","summary":"List arcade venues","tags":["Arcades"],"parameters":[{"name":"minLatitude","in":"query","schema":{"type":"number","minimum":-90,"maximum":90},"allowEmptyValue":true,"allowReserved":true},{"name":"minLongitude","in":"query","schema":{"type":"number","minimum":-180,"maximum":180},"allowEmptyValue":true,"allowReserved":true},{"name":"maxLatitude","in":"query","schema":{"type":"number","minimum":-90,"maximum":90},"allowEmptyValue":true,"allowReserved":true},{"name":"maxLongitude","in":"query","schema":{"type":"number","minimum":-180,"maximum":180},"allowEmptyValue":true,"allowReserved":true},{"name":"games","in":"query","schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"allowEmptyValue":true,"allowReserved":true},{"name":"chains","in":"query","schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"allowEmptyValue":true,"allowReserved":true},{"name":"query","in":"query","schema":{"type":"string","minLength":1,"maxLength":100},"allowEmptyValue":true,"allowReserved":true},{"name":"status","in":"query","schema":{"type":"string","minLength":1,"maxLength":64},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^dven_[23456789abcdefghjkmnpqrstvwxyz]{10}$"},"name":{"type":"string"},"chainId":{"type":"string"},"countryCode":{"type":"string"},"region":{"type":"string"},"city":{"type":"string"},"address":{"type":"string"},"postalCode":{"type":"string"},"phone":{"type":"string"},"websiteUrl":{"type":"string"},"timezone":{"type":"string"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"installations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^dins_[23456789abcdefghjkmnpqrstvwxyz]{10}$"},"gameId":{"type":"string"},"gameName":{"type":"string"},"machineCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"version":{"type":"string"},"cabinetModel":{"type":"string"},"status":{"type":"string"},"region":{"type":"string"},"network":{"type":"string"},"price":{"type":"string"},"condition":{"type":"string"},"confidence":{"type":"number","minimum":0,"maximum":1},"observedAt":{"type":"string","format":"date-time"}},"required":["id","gameId","gameName","observedAt"]}}},"required":["id","name","installations"]}},"chains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string"},"countryCodes":{"type":"array","items":{"type":"string"}}},"required":["id","name","countryCodes"]}}},"required":["items","chains"]}}}}},"security":[]}},"/arcades/venues/{id}":{"get":{"operationId":"arcades.venue","summary":"Get an arcade venue","tags":["Arcades"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^dven_[23456789abcdefghjkmnpqrstvwxyz]{10}$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"^dven_[23456789abcdefghjkmnpqrstvwxyz]{10}$"},"name":{"type":"string"},"chainId":{"type":"string"},"countryCode":{"type":"string"},"region":{"type":"string"},"city":{"type":"string"},"address":{"type":"string"},"postalCode":{"type":"string"},"phone":{"type":"string"},"websiteUrl":{"type":"string"},"timezone":{"type":"string"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"installations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^dins_[23456789abcdefghjkmnpqrstvwxyz]{10}$"},"gameId":{"type":"string"},"gameName":{"type":"string"},"machineCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"version":{"type":"string"},"cabinetModel":{"type":"string"},"status":{"type":"string"},"region":{"type":"string"},"network":{"type":"string"},"price":{"type":"string"},"condition":{"type":"string"},"confidence":{"type":"number","minimum":0,"maximum":1},"observedAt":{"type":"string","format":"date-time"}},"required":["id","gameId","gameName","observedAt"]}}},"required":["id","name","installations"]}}}}},"security":[]}},"/io/import/lxns/authorize":{"post":{"operationId":"lxns.authorize","summary":"Get LXNS OAuth authorization URL","tags":["Import"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]}}}}}}},"/io/import/lxns/status":{"get":{"operationId":"lxns.status","summary":"Check LXNS OAuth connection status","tags":["Import"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"connected":{"type":"boolean"}},"required":["connected"]}}}}}}},"/io/import/lxns/start":{"post":{"operationId":"lxns.start","summary":"Import scores from LXNS using stored OAuth token","tags":["Import"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"scores":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"songName":{"type":"string"},"level":{"type":"string"},"levelIndex":{"type":"number"},"achievements":{"type":"number"},"fc":{"anyOf":[{"type":"string"},{"type":"null"}]},"fs":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"type":"string"},"dxScore":{"type":"number"}},"required":["id","songName","level","levelIndex","achievements","fc","fs","type"]}},"count":{"type":"number"}},"required":["scores","count"]}}}}}}},"/io/import/lxns/disconnect":{"post":{"operationId":"lxns.disconnect","summary":"Disconnect LXNS account","tags":["Import"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}}}}},"/io/import/maimai-net":{"post":{"operationId":"maimai.fetchRecords","summary":"Fetch records from MaimaiNET","tags":["Import"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"password":{"type":"string"},"region":{"enum":["jp","intl"],"type":"string"}},"required":["id","password","region"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"recentRecords":{"type":"array","items":{"allOf":[{"type":"object","properties":{"sheet":{"type":"object","properties":{"songId":{"type":"string"},"type":{"type":"string"},"difficulty":{"type":"string"}},"required":["songId","type","difficulty"]},"achievement":{"type":"object","properties":{"rate":{"type":"number"},"dxScore":{"type":"object","properties":{"achieved":{"type":"number"},"total":{"type":"number"}},"required":["achieved","total"]},"flags":{"type":"array","items":{"enum":["fullCombo","fullCombo+","allPerfect","allPerfect+","syncPlay","fullSync","fullSync+","fullSyncDX","fullSyncDX+"],"type":"string"}}},"required":["rate","dxScore","flags"]}},"required":["sheet","achievement"]},{"type":"object","properties":{"play":{"type":"object","properties":{"track":{"type":"number"},"timestamp":{"type":"string"}},"required":["track"]}},"required":["play"]}]}},"musicRecords":{"type":"array","items":{"type":"object","properties":{"sheet":{"type":"object","properties":{"songId":{"type":"string"},"type":{"type":"string"},"difficulty":{"type":"string"}},"required":["songId","type","difficulty"]},"achievement":{"type":"object","properties":{"rate":{"type":"number"},"dxScore":{"type":"object","properties":{"achieved":{"type":"number"},"total":{"type":"number"}},"required":["achieved","total"]},"flags":{"type":"array","items":{"enum":["fullCombo","fullCombo+","allPerfect","allPerfect+","syncPlay","fullSync","fullSync+","fullSyncDX","fullSyncDX+"],"type":"string"}}},"required":["rate","dxScore","flags"]}},"required":["sheet","achievement"]}}},"required":["recentRecords","musicRecords"]}}}}}}},"/dxdata":{"get":{"operationId":"getPublishedDxdataCatalog","summary":"Get the complete published DX data catalog","description":"Returns one schema-versioned, null-free immutable catalog document, including the tag and alias snapshot. Use `If-None-Match` or HEAD to avoid downloading an unchanged catalog.","tags":["DX Data"],"security":[],"parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"A strong or weak ETag validator, a comma-separated validator list, or `*`.","schema":{"type":"string","example":"\"78af90bc0094b4167143fabea17666892ec38c8de7723254fd74d3389da648e2\""},"examples":{"strong":{"summary":"Strong validator","value":"\"78af90bc0094b4167143fabea17666892ec38c8de7723254fd74d3389da648e2\""},"weak":{"summary":"Weak validator","value":"W/\"78af90bc0094b4167143fabea17666892ec38c8de7723254fd74d3389da648e2\""},"any":{"summary":"Any current representation","value":"*"}}}],"responses":{"200":{"description":"The complete published catalog.","headers":{"Content-Length":{"description":"UTF-8 byte length of the selected immutable catalog representation.","schema":{"type":"integer","minimum":1,"example":4115441},"example":4115441},"ETag":{"description":"Strong validator containing the SHA-256 digest of the response body.","schema":{"type":"string","pattern":"^\"[0-9a-f]{64}\"$","example":"\"78af90bc0094b4167143fabea17666892ec38c8de7723254fd74d3389da648e2\""},"example":"\"78af90bc0094b4167143fabea17666892ec38c8de7723254fd74d3389da648e2\""},"Cache-Control":{"description":"Browser cache policy.","schema":{"type":"string","example":"public, max-age=300, stale-while-revalidate=60, stale-if-error=86400"},"example":"public, max-age=300, stale-while-revalidate=60, stale-if-error=86400"},"CDN-Cache-Control":{"description":"Shared CDN cache policy.","schema":{"type":"string","example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"Cloudflare-CDN-Cache-Control":{"description":"Cloudflare-specific shared cache policy.","schema":{"type":"string","example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"Cache-Tag":{"description":"Surrogate cache tag used to invalidate the catalog.","schema":{"type":"string","enum":["dxdata"],"example":"dxdata"},"example":"dxdata"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishedDxdataCatalog"},"examples":{"representativeCatalog":{"summary":"Representative published catalog","description":"Large collections are shortened to one to three real entries.","value":{"schemaVersion":1,"updatedAt":"2026-08-30T15:00:13.396044948+00:00","categories":[{"category":"niconico＆ボーカロイド"},{"category":"maimai"},{"category":"宴会場"}],"versions":[{"version":"ORANGE PLUS","abbr":"ORANGE+ (暁)","releaseDate":"2015-03-19"},{"version":"Splash","abbr":"Splash (爽)","releaseDate":"2020-09-17"},{"version":"PRiSM","abbr":"PRiSM (鏡)","releaseDate":"2024-09-12"}],"types":[{"type":"dx","name":"DX（でらっくす）","abbr":"DX","iconUrl":"type-dx.png","iconHeight":22},{"type":"std","name":"STD（スタンダード）","abbr":"STD","iconUrl":"type-std.png","iconHeight":22},{"type":"utage","name":"宴（宴会場）","abbr":"宴"}],"difficulties":[{"difficulty":"basic","name":"BASIC","color":"#22bb5b"},{"difficulty":"master","name":"MASTER","color":"#9e45e2"},{"difficulty":"remaster","name":"Re:MASTER","color":"#ba67f8"}],"servers":[{"id":"jp","name":"日本版"},{"id":"intl","name":"海外版 (International ver.)"},{"id":"usa","name":"アメリカ海外版 (USA International ver.)"}],"songs":[{"id":"dsng_d9dbdcaw9v","category":"niconico＆ボーカロイド","title":"ウミユリ海底譚","artist":"n-buna","bpm":120,"imageName":"e05e2a6fc30cd26f1b87310732062c03fdcc3900808695594d4b7d1c625c7315","version":"ORANGE PLUS","isNew":false,"isLocked":false,"sheets":[{"id":"dsht_jxnmx39rwt","type":"std","difficulty":"master","level":"13","internalLevelValue":13.4,"noteDesigner":"はっぴー","noteCounts":{"tap":648,"hold":21,"slide":76,"break":14,"total":759},"serverIds":["jp","intl","usa"],"isSpecial":false,"version":"ORANGE PLUS","internalId":417,"releaseDate":"2015-05-14","multiverInternalLevelValue":{"BUDDiES":13.4,"FESTiVAL PLUS":13.4,"maimaiでらっくす PLUS":12.8}}],"searchAcronyms":["umiyuri","Umiyuri","Umiyuri Kaiteitan"]},{"id":"dsng_e3bzx8srqf","category":"maimai","title":"全世界共通リズム感テスト","artist":"☆リズムに合わせてボタンを叩き達成率を競うゲームです☆","bpm":120,"imageName":"692ae385226bd2ff2c7134b8593c195ef5d4294194c672eb33ce97394ec882ef","version":"ORANGE PLUS","isNew":false,"isLocked":false,"sheets":[{"id":"dsht_zqs3r86ssb","type":"std","difficulty":"basic","level":"6","internalLevelValue":6,"noteDesigner":"-","noteCounts":{"tap":48,"hold":0,"slide":0,"break":17,"total":65},"serverIds":["intl","usa"],"serverOverrides":{"intl":{"version":"Splash"}},"isSpecial":false,"version":"ORANGE PLUS","internalId":854,"releaseDate":"2015-04-01"}],"searchAcronyms":[]},{"id":"dsng_phnye8rsgn","category":"宴会場","title":"[習]ウミユリ海底譚","artist":"n-buna","bpm":120,"imageName":"e05e2a6fc30cd26f1b87310732062c03fdcc3900808695594d4b7d1c625c7315","version":"PRiSM","isNew":false,"isLocked":false,"sheets":[{"id":"dsht_cjgcb6z68z","type":"utage","difficulty":"【習】","level":"12+?","internalLevelValue":12.7,"noteCounts":{"tap":549,"hold":7,"slide":109,"touch":0,"break":1,"total":666},"serverIds":["jp","intl","usa"],"isSpecial":true,"version":"PRiSM","internalId":110417,"releaseDate":"2024-09-12","comment":"ウミユリ練習譚"}],"searchAcronyms":["[习]ウミユリ海底谭","我们当年哪有这条件"]}],"tagGroups":[{"id":1,"localized_name":{"en":"Patterns","ja":"パターン","zh-Hans":"配置"},"color":"#7dd3fc"}],"tags":[{"id":1,"localized_name":{"en":"Umiyuri","ja":"ウミユリ配置","zh-Hans":"错位"},"localized_description":{"en":"Umiyuri patterns require completing other notes between hitting the star head and beginning the star slide. After finishing those notes, you return to complete the star slide.\n\n~~Have you AP'd Kaitei Tan yet?~~","ja":"ズレ配置とは、スターのヘッドを叩いてからスライドを始めるまでの間に、他のノーツを処理する必要がある配置のことです。他のノーツを処理した後、スライドに戻って完成させます。\n\n~~海底譚APした？~~","zh-Hans":"错位是指从击打星星头后、直到可以正常滑动星星条前的时间内，需要完成其他音符。在完成其他音符后，再回来开始完成星星条的一种配置。\n\n~~海底谭AP了吗~~"},"group_id":1}],"tagSongs":[{"song_id":"dsng_d9dbdcaw9v","sheet_id":"dsht_jxnmx39rwt","sheet_type":"std","sheet_difficulty":"master","tag_id":1}],"aliases":[{"song_id":"dsng_d9dbdcaw9v","name":"海底谭你学不会"},{"song_id":"dsng_d9dbdcaw9v","name":"海𠷡"}]}}}}}},"304":{"description":"The supplied validator matches the current published catalog.","headers":{"Content-Length":{"description":"UTF-8 byte length of the selected immutable catalog representation.","schema":{"type":"integer","minimum":1,"example":4115441},"example":4115441},"ETag":{"description":"Strong validator containing the SHA-256 digest of the response body.","schema":{"type":"string","pattern":"^\"[0-9a-f]{64}\"$","example":"\"78af90bc0094b4167143fabea17666892ec38c8de7723254fd74d3389da648e2\""},"example":"\"78af90bc0094b4167143fabea17666892ec38c8de7723254fd74d3389da648e2\""},"Cache-Control":{"description":"Browser cache policy.","schema":{"type":"string","example":"public, max-age=300, stale-while-revalidate=60, stale-if-error=86400"},"example":"public, max-age=300, stale-while-revalidate=60, stale-if-error=86400"},"CDN-Cache-Control":{"description":"Shared CDN cache policy.","schema":{"type":"string","example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"Cloudflare-CDN-Cache-Control":{"description":"Cloudflare-specific shared cache policy.","schema":{"type":"string","example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"Cache-Tag":{"description":"Surrogate cache tag used to invalidate the catalog.","schema":{"type":"string","enum":["dxdata"],"example":"dxdata"},"example":"dxdata"}}},"500":{"description":"The published catalog is unavailable. This response is never cacheable.","headers":{"Cache-Control":{"description":"Always `no-store` for endpoint failures.","schema":{"type":"string","enum":["no-store"],"example":"no-store"},"example":"no-store"},"CDN-Cache-Control":{"description":"Always `no-store` for endpoint failures.","schema":{"type":"string","enum":["no-store"],"example":"no-store"},"example":"no-store"},"Cloudflare-CDN-Cache-Control":{"description":"Always `no-store` for endpoint failures.","schema":{"type":"string","enum":["no-store"],"example":"no-store"},"example":"no-store"}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","example":"Internal server error"}},"additionalProperties":false},"examples":{"error":{"summary":"Internal server error","value":{"error":"Internal server error"}}}}}},"503":{"description":"The published catalog is unavailable. This response is never cacheable.","headers":{"Cache-Control":{"description":"Always `no-store` for endpoint failures.","schema":{"type":"string","enum":["no-store"],"example":"no-store"},"example":"no-store"},"CDN-Cache-Control":{"description":"Always `no-store` for endpoint failures.","schema":{"type":"string","enum":["no-store"],"example":"no-store"},"example":"no-store"},"Cloudflare-CDN-Cache-Control":{"description":"Always `no-store` for endpoint failures.","schema":{"type":"string","enum":["no-store"],"example":"no-store"},"example":"no-store"}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","example":"DX data catalog is unavailable"}},"additionalProperties":false},"examples":{"error":{"summary":"DX data catalog is unavailable","value":{"error":"DX data catalog is unavailable"}}}}}}}},"head":{"operationId":"headPublishedDxdataCatalog","summary":"Get published DX data catalog metadata","description":"Returns catalog headers without loading or returning the stored catalog body.","tags":["DX Data"],"security":[],"parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"A strong or weak ETag validator, a comma-separated validator list, or `*`.","schema":{"type":"string","example":"\"78af90bc0094b4167143fabea17666892ec38c8de7723254fd74d3389da648e2\""},"examples":{"strong":{"summary":"Strong validator","value":"\"78af90bc0094b4167143fabea17666892ec38c8de7723254fd74d3389da648e2\""},"weak":{"summary":"Weak validator","value":"W/\"78af90bc0094b4167143fabea17666892ec38c8de7723254fd74d3389da648e2\""},"any":{"summary":"Any current representation","value":"*"}}}],"responses":{"200":{"description":"Metadata for the complete published catalog.","headers":{"Content-Length":{"description":"UTF-8 byte length of the selected immutable catalog representation.","schema":{"type":"integer","minimum":1,"example":4115441},"example":4115441},"ETag":{"description":"Strong validator containing the SHA-256 digest of the response body.","schema":{"type":"string","pattern":"^\"[0-9a-f]{64}\"$","example":"\"78af90bc0094b4167143fabea17666892ec38c8de7723254fd74d3389da648e2\""},"example":"\"78af90bc0094b4167143fabea17666892ec38c8de7723254fd74d3389da648e2\""},"Cache-Control":{"description":"Browser cache policy.","schema":{"type":"string","example":"public, max-age=300, stale-while-revalidate=60, stale-if-error=86400"},"example":"public, max-age=300, stale-while-revalidate=60, stale-if-error=86400"},"CDN-Cache-Control":{"description":"Shared CDN cache policy.","schema":{"type":"string","example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"Cloudflare-CDN-Cache-Control":{"description":"Cloudflare-specific shared cache policy.","schema":{"type":"string","example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"Cache-Tag":{"description":"Surrogate cache tag used to invalidate the catalog.","schema":{"type":"string","enum":["dxdata"],"example":"dxdata"},"example":"dxdata"}}},"304":{"description":"The supplied validator matches the current published catalog.","headers":{"Content-Length":{"description":"UTF-8 byte length of the selected immutable catalog representation.","schema":{"type":"integer","minimum":1,"example":4115441},"example":4115441},"ETag":{"description":"Strong validator containing the SHA-256 digest of the response body.","schema":{"type":"string","pattern":"^\"[0-9a-f]{64}\"$","example":"\"78af90bc0094b4167143fabea17666892ec38c8de7723254fd74d3389da648e2\""},"example":"\"78af90bc0094b4167143fabea17666892ec38c8de7723254fd74d3389da648e2\""},"Cache-Control":{"description":"Browser cache policy.","schema":{"type":"string","example":"public, max-age=300, stale-while-revalidate=60, stale-if-error=86400"},"example":"public, max-age=300, stale-while-revalidate=60, stale-if-error=86400"},"CDN-Cache-Control":{"description":"Shared CDN cache policy.","schema":{"type":"string","example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"Cloudflare-CDN-Cache-Control":{"description":"Cloudflare-specific shared cache policy.","schema":{"type":"string","example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"example":"public, max-age=21600, stale-while-revalidate=86400, stale-if-error=604800"},"Cache-Tag":{"description":"Surrogate cache tag used to invalidate the catalog.","schema":{"type":"string","enum":["dxdata"],"example":"dxdata"},"example":"dxdata"}}},"500":{"description":"The published catalog is unavailable. This response is never cacheable.","headers":{"Cache-Control":{"description":"Always `no-store` for endpoint failures.","schema":{"type":"string","enum":["no-store"],"example":"no-store"},"example":"no-store"},"CDN-Cache-Control":{"description":"Always `no-store` for endpoint failures.","schema":{"type":"string","enum":["no-store"],"example":"no-store"},"example":"no-store"},"Cloudflare-CDN-Cache-Control":{"description":"Always `no-store` for endpoint failures.","schema":{"type":"string","enum":["no-store"],"example":"no-store"},"example":"no-store"}}},"503":{"description":"The published catalog is unavailable. This response is never cacheable.","headers":{"Cache-Control":{"description":"Always `no-store` for endpoint failures.","schema":{"type":"string","enum":["no-store"],"example":"no-store"},"example":"no-store"},"CDN-Cache-Control":{"description":"Always `no-store` for endpoint failures.","schema":{"type":"string","enum":["no-store"],"example":"no-store"},"example":"no-store"},"Cloudflare-CDN-Cache-Control":{"description":"Always `no-store` for endpoint failures.","schema":{"type":"string","enum":["no-store"],"example":"no-store"},"example":"no-store"}}}}}}}}