Neos VR のユーザー情報を取得したときの API のメモ

概要

NeosVR の API からユーザー情報を取得する必要があって、ちょっとしたスクリプトを書いて取得したときのメモです。
公式の情報は ネットワークに関する情報 に書いてあることだけっぽいですが、
API 自体は公式には公開されてない [※要出典] らしいので、この記事の情報は別に正しくないです。

wiki.neos.com

API

Neos の APIapi.neos.com を使うと良さそうです。
www.neosvr-api.com とか cloudx.azurewebsites.net とかを叩いても同じ結果 [※未確認] が帰ってくるっぽいですが、どう違うのかはよくわかりません。
API ドキュメントは公開されていません。しかし、 PolyLogix Studio という有志のグループ? がまとめている非公式のものがあります。確認したくなったらこれを見るのがよいかと思います。

neos-api.polylogix.studio

ユーザー情報の取得

ユーザーIDは、多くの場合 U-[ユーザー名] になるんですが、ハイフン-やアンダーバー_などのような記号、日本語などが混じっていた場合はその限りではありません。
ユーザー名から情報を検索したい場合は https://api.neos.com/api/users/[ユーザー名]?byUserName=true を叩きます。マルチバイト文字の場合はURIエンコードしてください。
ぼくの情報が知りたい場合は https://api.neos.com/api/users/yoshi1123_?byUserName=true にアクセスするとわかります。

ユーザーIDがわかっている場合は、 https://api.neos.com/api/users/[ユーザーID] を見ます。ぼくの場合はユーザーIDが U-yoshi1123- なので、 https://api.neos.com/api/users/U-yoshi1123- を見れば丸わかりです。

上記2つの方法で帰ってくる形式は同じで、下記のようになります。
内容が推測できるものだけコメントを書いてます。

{
   "id":"U-yoshi1123-", /* ユーザーID */
   "username":"yoshi1123_", /* ユーザー名 */
   "normalizedUsername":"yoshi1123_",
   "registrationDate":"2021-05-18T09:23:47.9666713Z", /* Neos のアカウントを作成した日 */
   "isVerified":true,
   "quotaBytes":-1,
   "isLocked":false,
   "supressBanEvasion":false,
   "usedBytes":-1,
   "2fa_login":false,
   "tags":[
      "neos festa 3 participant"
   ],
   "profile":{
      "iconUrl":"neosdb:///b818988b835d17093c81636a3344d0f47ea3316f10ce8fcca5cd5a3afb2243b9.webp" /* プロフィールアイコンの画像 */
   },
   "patreonData":{ /* Patreon の情報(Patreon 連携してない場合は無いっぽい) */
      "isPatreonSupporter":true,
      "lastPatreonPledgeCents":-1,
      "lastTotalCents":-1,
      "minimumTotalUnits":-1,
      "externalCents":-1,
      "lastExternalCents":-1,
      "hasSupported":true,
      "lastIsAnorak":false,
      "priorityIssue":0,
      "lastPlusActivationTime":"2021-09-01T16:55:54.5170223Z",
      "lastActivationTime":"2021-09-01T16:55:54.5170223Z",
      "lastPlusPledgeAmount":-1,
      "lastPaidPledgeAmount":-1,
      "accountName":"Standard Account",
      "currentAccountType":0,
      "currentAccountCents":-1,
      "pledgedAccountType":0
   }
}

ちなみに、ユーザー名の前方一致で検索する API も存在します。
https://api.neos.com/api/users/?name=[ユーザー名]
結果は配列で帰ってきます。順序はよくわからないので、ユーザー名がわかっている場合は上の API を使うのがよいです。(最初の1件が完全一致したユーザーにならない場合があります。orangeさんとか)