NasuCoin Connect API
NC口座・カード・送金・Connectを利用するためのAPIです。すべてのURLは https://nasucoin.com を基準にしています。
認証とデータ形式
要求と応答はJSONです。変更操作は POST、参照操作は表に記載したメソッドを使います。POSTでは Content-Type: application/json を指定してください。金額は整数NC、時刻は特記のない限りUNIX秒です。
カードなどから使う場合は、/API/Common/RequestLogin にNC IDまたはユーザー名とパスワードを送ります。返された sessionId を以降の Authorization: Bearer <SESSION_ID> に設定します。セッションはURLへ含めず、共有するカードやワールドにも保存しないでください。
POST /API/Common/RequestLogin
Content-Type: application/json
{"ncid":"NC-EXAMPLE","password":"<YOUR_PASSWORD>"}
Webサイトは mode: "web" でログインし、HttpOnly Cookieを使います。Webの変更要求には、本人の /API/Account/GetProfile で取得したCSRF値を X-CSRF-Token ヘッダーへ設定します。Cookie・CSRF方式では、ブラウザーへ秘密のセッションIDを返しません。
ブラウザーからの通信は、サイト自身またはサーバーに登録された許可Originから行います。Webの登録・ログイン・回復とCookieによる変更操作にはサイト自身のOriginが必要です。ネイティブクライアントのBearer認証では Origin を省略できます。送る場合は許可Originである必要があります。Cookieと異なるBearerを同時に送った場合、無効なBearerからCookie認証へ自動では切り替わりません。
Common・Currency・Connect・銀行管理はカードのBearer認証とWeb Cookie認証に対応します。Web専用のアカウント設定・スキン・UMC・NumbersはWeb Cookieを使います。記憶ログインを扱うCard APIはXRift本人確認とカードのBearer認証を使用します。銀行管理とNumbers管理照会には、サーバーで確認した管理者権限が必要です。
CheckLogin・GetCurrent・GetCard・GetEvents の ncid は、認証した本人のNC IDです。他人の送金先名だけを確認するには Account/Find を使います。カードのセッションは30分、最大12時間です。CheckLogin・AcceptConnectで30分の期限を更新し、Web Cookieは12時間です。セッションの期限は応答の expiresAt・absoluteExpiresAt を参照してください。
APIへのアクセスは3秒間に20件までです。ログイン後は同じNC口座のクライアント全体、未ログイン時は送信元IPで合算します。21件目はHTTP 429の excessive_access となり、30秒間アクセスを停止します。Retry-After ヘッダーの秒数を待ってから本人の明示操作で再確認してください。パスワードを連続3回間違えると、そのアカウントのパスワードログインは30分間ロックされ、HTTP 429の password_locked を返します。ロック中の試行で時間は延長されません。変更操作を自動で繰り返さないでください。
送金とConnect
通常の送金では送金元としてログインします。requestId は8~128文字で、操作ごとに1つ生成し、結果が確定するまで同じ本文と一緒に保持します。UUID形式を利用できます。同じ本人の異なる操作に同じIDを使い回さないでください。メモは任意で最大500文字です。
金額は正の整数です。Connectを指定しない通常の直接送金は既定で1回1,000,000 NCまで、利用者の口座残高は1,000,000,000 NCまでです。Connect経由では設定された1回の金額・日次回数の上限と受取人口座の残高上限を確認します。金額や上限に小数・数値文字列は使えません。
POST /API/Currency/Remittance
Authorization: Bearer <SESSION_ID>
Content-Type: application/json
{"requestId":"example-request-0001","fromNCID":"NC-SENDER",
"toNCID":"NC-RECEIVER","amount":1000,"memo":"イベント賞品"}
Connectは送金元が作成する送金ルールです。connectId は1~128文字、limitNC は1回の送金上限、dailyLimit は同じ送金先への1日あたりの回数です。日付は日本時間で区切り、回数の 0 は無制限です。Connect IDだけでは送金できません。
- 送金元が設定画面または
Connect/CreateでConnectを作ります。 - 受取人が自分の現在のセッションから
Common/AcceptConnectを呼びます。 - 同じ受取人セッションで、送金元NC ID・Connect ID・受取人NC IDを指定して
Currency/Remittanceを呼びます。
POST /API/Common/AcceptConnect
Authorization: Bearer <RECEIVER_SESSION_ID>
Content-Type: application/json
{"requestId":"accept-example-0001","fromNCID":"NC-SENDER",
"connectId":"my-event"}
許可は現在の受取人セッションだけで30分間有効です。10~15分ごとに、新しい更新要求IDで AcceptConnect を再実行すると期限を更新できます。ログインをやり直した場合やConnect設定が変更された場合は、新しい許可を取り直します。無効化されたConnectは利用できません。
POST /API/Currency/Remittance
Authorization: Bearer <RECEIVER_SESSION_ID>
Content-Type: application/json
{"requestId":"connect-payment-0001","fromNCID":"NC-SENDER",
"toNCID":"NC-RECEIVER","connectId":"my-event","amount":1000}通信結果が不明なとき
応答が途切れても、サーバーでは送金が成立している場合があります。新しい要求IDで送り直さず、元の要求IDを Currency/GetRemittance に渡して確認してください。未確認なら元の要求ID・本文で再送します。同じ要求IDで異なる内容を送ると拒否されます。
GET /API/Currency/GetRemittance?requestId=example-request-0001
Authorization: Bearer <SESSION_ID>
照会結果の status: "confirmed" は送金確定です。status: "failed" と同じ requestId・error が返れば、その要求の拒否が確定しています。remittance_not_found の場合は元の本文で再送できます。認証切れ・通信エラーだけで失敗と決めず、同じ本人でログインし直して照合してください。
スキン・設定変更・銀行調整でも、未確定の操作は同じ要求IDと本文で再確認します。UMC交換は、未送信の受付を CreateExchange の同じ要求で継続し、送信済み・結果不明の交換は CheckExchange で照合します。CheckExchange は新しい送金を行いません。
応答形式と例
以下は架空の値を使った主要フィールドの抜粋です。未知の追加フィールドは無視できるように実装してください。account は認証した本人の口座情報です。Connect送金の場合も、受取人として呼び出せば受取人の情報を返します。
RequestLogin・CheckLogin
通常のログイン成功はHTTP 200です。sessionId と互換フィールド walletToken は同じ秘密値です。scope は "wallet"、deviceId は認証セッションの識別子です。物理カードの登録IDである cardId は返しません。
{"sessionId":"<SESSION_ID>","walletToken":"<SESSION_ID>",
"scope":"wallet","deviceId":"dev_example",
"expiresAt":1800001800,"absoluteExpiresAt":1800043200,
"account":{"accountNumber":"NC-EXAMPLE","displayName":"ナスコ",
"balance":10000,"currency":"NC","isAdmin":false},
"rewards":{"day":"2027-01-15","card":{"claimed":false},"web":{"claimed":false}}}
mode:"web" のログインは Set-Cookie と、口座フィールドを最上位に置いた {accountNumber, username, displayName, balance, currency, appearance, isAdmin, csrfToken} を返します。秘密のセッションIDは返しません。
CheckLogin の成功は {loggedIn:true, account} です。Bearerの場合は上記の deviceId, scope, expiresAt, absoluteExpiresAt, rewards も返します。期限切れ・失効・認証情報なしはHTTP 401と {"error":"wallet_authentication_required"} または {"error":"authentication_required"} です。loggedIn:false のHTTP 200ではありません。本人以外のNC IDの指定はHTTP 403です。
GetCurrent・GetCard
{"ncid":"NC-EXAMPLE","balance":10000,
"account":{"accountNumber":"NC-EXAMPLE","balance":10000,"currency":"NC"}}
GetCard は口座の表示名・残高・外観を取得するAPIです。同じ口座情報を account と card の両方へ返し、物理カードの発行や登録は行いません。Bearerでは認証セッション・有効期限・ボーナス情報も返します。表示に使うフィールドは次のとおりです。
{"card":{"accountNumber":"NC-EXAMPLE","username":"example",
"displayName":"ナスコ","balance":10000,"currency":"NC","ncPerCredit":10,
"isAdmin":false,
"appearance":{"skin":{"id":"nc-default","name":"NCスタンダード",
"category":"default","imageUrl":null,"width":1024,"height":640,"custom":false},
"avatarUrl":null,"avatarWidth":256,"avatarHeight":256}}}
appearance.skin.imageUrl はスキン画像、appearance.avatarUrl はアイコン画像です。画像なしは null です。スキンの id を識別に使い、表示名をIDとして使わないでください。
GetEvents
items は新しい順の本人履歴です。amount は入金が正・出金が負、balanceBefore・balanceAfter はその取引の前後残高です。nextBefore が null でなければ Account/GetEvents?before=... で続きを取得できます。
{"items":[{"id":12,"transactionId":"tx_example","kind":"transfer_in",
"amount":1000,"balanceBefore":9000,"balanceAfter":10000,
"createdAt":1800000000,"status":"confirmed","counterparty":"NC-SENDER",
"requestId":"example-request-0001","sessionId":null,"creditDelta":0,
"detail":{"connectId":null,"memo":"イベント賞品"}}],"nextBefore":null}
status は取引の処理状態、detail は種類ごとの補足です。sessionId・creditDelta は過去記録との互換項目で、ログインの秘密セッションIDではありません。新方式ではゲームのBET・配当・CREDIT履歴は記録しません。
AcceptConnect
{"status":"accepted","fromNCID":"NC-SENDER","toNCID":"NC-RECEIVER",
"connectId":"my-event","expiresAt":1800001800,"limitNC":10000,"dailyLimit":0}
expiresAt はこの受取許可の期限です。上限はその時点で有効な送金元のConnect設定です。
Remittance・GetRemittance
送金の成功と、その要求IDによる照会は同じ確定結果を返します。transactionId は確定した台帳取引のIDです。GetRemittance の照会キーは requestId のみです。
{"status":"confirmed","requestId":"example-request-0001",
"transactionId":"tx_example","fromNCID":"NC-SENDER","toNCID":"NC-RECEIVER",
"amount":1000,"account":{"accountNumber":"NC-SENDER","balance":9000}}
確定拒否の保存記録を GetRemittance で照会するとHTTP 200で次の形式を返します。最初の送金操作の拒否では、対応するHTTP 4xxと同形式を返す場合があります。
{"status":"failed","requestId":"example-request-0001","error":"insufficient_funds"}
記録が見つからなければHTTP 404の {"error":"remittance_not_found"} です。照会はその要求を実行した本人に限定されます。確定時の account は保存された結果なので、現在残高が必要なら GetCurrent を使います。
その他のAPIの返却形式
| 機能 | 主要フィールド |
|---|---|
| Account | GetProfileは口座情報と csrfToken。Register・Recoverはさらに一度だけ表示する recoveryCode。Findは {accountNumber,displayName}。GetEventsは上記の履歴形式、GetEventは {items:[取引詳細]}。SetIcon・RemoveIconは {status:"confirmed",appearance,account}。 |
| Card | RevokeDeviceは {deviceId,status:"revoked"}。対象の認証セッションを失効・削除します。RefreshLoginはログイン時と同様の認証セッション情報(cardId なし)。各Logout・UnlinkXRiftは {status:"logged_out"}。SetXRiftIconは {imageUrl}。 |
| XRift本人確認 | StartXRiftBinding・StartRememberedLoginは {challengeId,purpose,worldId,userId,key,value,expiresAt}。XRiftの本人領域へ証明値を保存してからFinishXRiftLoginを実行します。完了時は端末・口座・期限情報と bindingId・xriftUserId、記憶ログインでは sessionId・walletToken を返します。証明値・verifier・秘密セッションを共有保存しないでください。 |
| Reward | Getは {day,timezone,nextClaimAt,card,web,webProbabilities,cardAmount}。card/webは {claimed,amount,transactionId}。Claimは {status,amount,transactionId,nextClaimAt,account} で、受取済みなら status:"already_claimed"。日次判定は日本時間です。 |
| Skin | Listは {items,appearance,balance,customPriceNC,uploadLimits}。各itemはスキン情報に priceNC,owned,equipped,purchasable,grantSource,grantedAt などを加えます。Purchase・CreateCustomは {status:"confirmed",transactionId,chargedNC,alreadyOwned,skin,account}、Equipは {status:"confirmed",appearance,account}。 |
| Connect | Listは {ownerNCID,items}。Create・Updateは {ownerNCID,connectId,limitNC,dailyLimit,enabled,internal,createdAt,updatedAt} の1件、Listのitemsも同形式です。Revokeは {status:"revoked",ownerNCID,connectId}。internal:true は変更できないシステム用ルールです。 |
| Admin / Bank | Get・GetGraphは {accountNumber,balance,currency,days,timezone,graph:[{day,income,outflow,net,balance}]}。GetEventsは {accountNumber,items:[{transactionId,kind,createdAt,requestId,amount,balanceBefore,balanceAfter,detail}]}。Adjustは {status:"confirmed",transactionId,requestId,accountNumber,balance,adjustment}。balanceは調整後残高、adjustmentは増減です。 |
| Collabo / UMC | GetStatus・FinishLoginは {enabled,linked,authenticated,authMode,authExpiresAt,authorizationSaved,authorizationState,longTermAvailable,umcBalance,exchange,exchanges}。linkedは未連携ならnull、連携後は {walletId,userId,name,linkedAt}。StartLoginは {challengeId,expiresAt}。QuoteExchangeは {direction,amount,feeAmount,receiveAmount,fromCurrency,toCurrency}。CreateExchange・CheckExchangeは {exchange,account}。交換は {id,requestId,direction,amount,feeAmount,receiveAmount,status,createdAt,updatedAt,transactionId,error} でstatusは queued/sending/unknown/completed/rejected。受付前に拒否が確定した要求はHTTP 200で {exchange:null,rejectedRequest:{requestId,error},account} を返します。 |
| Daily / Numbers | GetStatusは {enabled,linked,isAdmin,serverUnix}。GetSalesは {enabled,drawNo,cutoffUnix,serverUnix,price:{NC,UMC},prizes:[{digits,amount}],umcAuthenticated,pendingPurchase}。Purchase・CheckPurchaseは {purchase,account,serverUnix}、受付前の確定拒否は {purchase:null,rejectedRequest:{requestId,error},account,serverUnix}。履歴は {items,page,pageSize,total,serverUnix}。抽選itemは {drawNo,winningNumber,cutoffUnix,drawnAtUnix}、購入itemは purchaseId,ticketId,requestId,source,currency,drawNo,number,state,price,createdAtUnix,acceptedAtUnix,winningNumber,drawnAtUnix,prize,payoutState,payoutKind,paymentState,error。番号は先頭0を保持した4桁文字列、未発表・未確定の値はnullです。管理購入履歴には buyerName,userId,walletId も含まれます。 |
| Common / GetHealth・Logout | GetHealthは {ok,service,schemaVersion,protocolVersion,ncPerCredit}。Logoutは {status:"logged_out"}。 |
UMC交換は両方向とも手数料10%、10単位、既定で10~1,000,000です。実際の上限はGetStatusの exchange を参照してください。NCとUMCの本人連携は1対1で保持され、UMC認証の期限切れやNCのログアウトで解除されません。認証状態は authenticated、有効期限は authExpiresAt で確認します。FinishLogin の remember:true は、OTPで本人確認した後に専用のUMC APIキーを作成し、サーバーの専用領域へ暗号化保存します。通常のNCログアウト・サーバー再起動後も利用でき、authMode:"api_key"・authorizationSaved:true で確認できます。authExpiresAt:null は期限指定なしです。UMC側での失効やNCアカウント回復後は再認証が必要です。キー作成中の結果不明時は自動再発行せず、再度OTP確認して作成済みキーを照合・解除してから、別の明示操作で作り直します。authorizationState は none/jwt/active/issuing/revoking/revoked/invalid です。remember を省略またはfalseにすると従来の一時認証となり、UMCのJWT期限と最大7日の短い方までRAMに保持します。RevokeAuthorization は新しいStartLoginで取得したchallengeIdとOTPを受け取り、保存した専用キーをUMC側で失効させます。口座の紐付けは残ります。OTP・秘密キー・JWTはAPI応答・ブラウザー保存領域・金融DBへ含めません。
API一覧
参照欄の GET / POST はどちらでも照会できます。GETのパラメーターはクエリー、POSTはJSON本文へ渡します。セッションIDやパスワードをクエリーへ入れることは禁止です。
指定済みの7本
| URL / メソッド | 用途・パラメーター | 認証 |
|---|---|---|
/API/Common/RequestLoginPOST | NC IDとパスワードでログインncid または username、password。Webは mode:web | ログイン前に利用 |
/API/Common/CheckLoginGET / POST | 指定NC IDのログイン状態を確認ncid(省略時は本人) | Bearer / Web Cookie |
/API/Common/GetCurrentGET / POST | 指定NC IDのNC残高を確認ncid(省略時は本人) | Bearer / Web Cookie |
/API/Common/GetCardGET / POST | アイコン・名前・NC・スキンを取得ncid(省略時は本人) | Bearer / Web Cookie |
/API/Common/GetEventsGET / POST | 最新100件の取引履歴を取得ncid、limit(1~100・初期値100) | Bearer / Web Cookie |
/API/Common/AcceptConnectPOST | 受取人の現在のセッションで、送金元NC ID・Connect ID経由の受取を30分間許可requestId、fromNCID、connectId。toNCIDは省略時本人 | Bearer / Web Cookie |
/API/Currency/RemittancePOST | 送金元NC IDから送金先NC IDへ送金。メモも指定可能requestId、fromNCID、toNCID、amount。任意: connectId、memo | Bearer / Web Cookie |
新しい設定・Connect・管理機能
| URL / メソッド | 用途・パラメーター | 認証 |
|---|---|---|
/API/Common/LogoutPOST | 現在のログインを終了空のJSON | Bearer / Web Cookie |
/API/Currency/GetRemittanceGET / POST | 要求IDから送金結果を確認requestId | Bearer / Web Cookie |
/API/Connect/ListGET / POST | 本人が作成したConnectの一覧・設定・有効状態を取得ownerNCID(省略時は本人) | Bearer / Web Cookie |
/API/Connect/CreatePOST | 任意のConnect文字列、1回の送金上限、同じ送金先への日次回数上限を登録requestId、connectId、limitNC、dailyLimit。ownerNCIDは省略時本人 | Bearer / Web Cookie |
/API/Connect/UpdatePOST | 本人のConnect設定を更新requestId、connectId、limitNC、dailyLimit。ownerNCIDは省略時本人 | Bearer / Web Cookie |
/API/Connect/RevokePOST | 本人のConnectを無効化requestId、connectId。ownerNCIDは省略時本人 | Bearer / Web Cookie |
/API/Admin/Bank/GetGET / POST | 銀行 NC-NASUCOINBANK の現在残高と概要を取得days(任意) | Bearer / Web Cookie・管理者限定 |
/API/Admin/Bank/AdjustPOST | 銀行残高を理由付きで調整requestId、balance(調整後残高)、reason(1~500文字) | Bearer / Web Cookie・管理者限定 |
/API/Admin/Bank/GetEventsGET / POST | 銀行の入出金・調整履歴を取得limit(1~100) | Bearer / Web Cookie・管理者限定 |
/API/Admin/Bank/GetGraphGET / POST | 銀行残高の推移をグラフ用に取得days(1~365・初期値30) | Bearer / Web Cookie・管理者限定 |
既存のアカウント・設定機能
| URL / メソッド | 用途・パラメーター | 認証 |
|---|---|---|
/API/Account/RegisterPOST | NCアカウントを新規作成し、回復コードを発行username、displayName、password | ログイン前に利用 |
/API/Account/RecoverPOST | 回復コードでアカウントを回復username、recoveryCode、password | ログイン前に利用 |
/API/Account/GetProfileGET | 本人の設定用情報・権限などを取得なし | Web Cookie |
/API/Account/FindGET / POST | 送金先の公開口座番号・表示名だけを確認ncid | Bearer / Web Cookie |
/API/Account/GetEventsGET / POST | 本人の取引履歴を期間・種類で絞り込み、過去ページも取得before、limit(1~100)、kind、from、to(UNIX秒) | Bearer / Web Cookie |
/API/Account/GetEventGET / POST | 本人の取引1件の詳細を取得transactionId | Bearer / Web Cookie |
/API/Account/SetIconPOST | Webで選んだユーザーアイコンを登録requestId、imageBase64(PNG/JPEG/WebP・2 MBまで) | Web Cookie |
/API/Account/RemoveIconPOST | Webのユーザーアイコンを標準へ戻すrequestId | Web Cookie |
カード認証・記憶ログイン
NCカードの物体はXRiftインスタンス内で管理します。Webのカード・接続端末一覧と発行・失効の管理画面は撤去しました。/API/Card/List・/API/Card/Create・/API/Card/Revoke・/API/Card/ListDevices は廃止し、HTTP 410を返します。代わりの発行APIはありません。
サーバーは有効な認証セッションを保持し、失効・期限切れ時に削除します。XRiftアカウントの記憶、NC残高、取引、プロフィール・スキンは別に保持します。通常の終了は LogoutSession、明示的な記憶解除は Logout または UnlinkXRift を使います。
| URL / メソッド | 用途・パラメーター | 認証 |
|---|---|---|
/API/Card/RevokeDevicePOST | 本人の認証セッションを失効させ、DBから削除requestId、deviceId。外部利用との互換用 | Web Cookie |
/API/Card/RefreshLoginPOST | カードのログインを更新空のJSON | カードBearer |
/API/Card/LogoutPOST | カードからログアウトし、記憶したXRift連携も解除空のJSON | カードBearer |
/API/Card/LogoutSessionPOST | 記憶したXRift連携を残して現在のカードログインだけ終了空のJSON | カードBearer |
/API/Card/StartXRiftBindingPOST | 現在のNCログインとXRift本人を結び付ける確認を開始worldId、userId、verifierHash | カードBearer |
/API/Card/StartRememberedLoginPOST | 登録済みXRift本人による記憶ログインを開始worldId、userId、verifierHash | XRift本人確認 |
/API/Card/FinishXRiftLoginPOST | XRift本人確認を完了し、連携または記憶ログインを確定challengeId、verifier | XRift本人確認 |
/API/Card/UnlinkXRiftPOST | 記憶したXRift連携を解除空のJSON | カードBearer |
/API/Card/SetXRiftIconPOST | XRiftのユーザーアイコンをカード表示用に取得・正規化imageUrl | カードBearer |
既存の日次ボーナス・スキン
| URL / メソッド | 用途・パラメーター | 認証 |
|---|---|---|
/API/Reward/GetGET / POST | 本人のWebルーレット・カードボーナスの受取状況を確認なし | Bearer / Web Cookie |
/API/Reward/ClaimWebPOST | Webルーレットを回して本日分を受け取るrequestId | Web Cookie |
/API/Reward/ClaimCardPOST | 本日分のカードボーナスを受け取るrequestId | Bearer / Web Cookie |
/API/Skin/ListGET | 販売中・入手済み・装備中のスキンを取得なし | Web Cookie |
/API/Skin/PurchasePOST | 販売中のスキンを購入requestId、skinId | Web Cookie |
/API/Skin/CreateCustomPOST | 画像から有料カスタムスキンを作成requestId、name、imageBase64(2 MBまで・推奨1024×640 px) | Web Cookie |
/API/Skin/EquipPOST | 入手済みのスキンを装備requestId、skinId | Web Cookie |
既存のUMC連携・交換
| URL / メソッド | 用途・パラメーター | 認証 |
|---|---|---|
/API/Collabo/UMC/GetStatusGET | 検証済みの連携先、UMCログイン状態、残高、交換履歴を確認なし | Web Cookie |
/API/Collabo/UMC/StartLoginPOST | UMC口座番号・Resonite U-IDから確認コードを要求identifier(口座番号 または Resonite U-ID) | Web Cookie |
/API/Collabo/UMC/FinishLoginPOST | 確認コードで本人確認・連携を完了。認証の保存はremember:truechallengeId、otp、remember(省略時false。boolean) | Web Cookie |
/API/Collabo/UMC/RevokeAuthorizationPOST | 専用の保存認証キーを失効。口座連携を維持新しいStartLoginのchallengeId、otp。Cookie・CSRF必須 | Web Cookie |
/API/Collabo/UMC/QuoteExchangePOST | 交換方向・金額から手数料と受取額を確認direction(nc_to_umc / umc_to_nc)、amount | Web Cookie |
/API/Collabo/UMC/CreateExchangePOST | 確認した交換を同じ要求IDで受付・継続requestId、direction、amount | Web Cookie |
/API/Collabo/UMC/CheckExchangePOST | 受付済み交換の結果を照合。新しい送金は行わないid(交換ID) | Web Cookie |
ナスコナンバーズ
| URL / メソッド | 用途・パラメーター | 認証 |
|---|---|---|
/API/Daily/Numbers/GetStatusGET | 機能の利用可否・本人連携・管理権限を確認なし | Web Cookie |
/API/Daily/Numbers/GetSalesGET | 現在の販売回・締切・価格・配当・本人の未確定購入を取得なし | Web Cookie |
/API/Daily/Numbers/PurchasePOST | 確認済みの番号を指定通貨で1枚購入、または未送信の同じ要求を継続requestId、currency(NC / UMC)、drawNo、number(半角数字4桁の文字列) | Web Cookie・CSRF。UMCは本人のUMCログインも必要 |
/API/Daily/Numbers/CheckPurchasePOST | 本人の購入結果を照合。新しい支払いを送信しないrequestId。省略時は本人の未確定購入を優先し、なければ直近1件 | Web Cookie・CSRF |
/API/Daily/Numbers/GetDrawsGET | 確定した当選番号を照会page、pageSize、drawNo | Web Cookie |
/API/Daily/Numbers/GetPurchasesGET | 本人のWeb購入と連携したUMC本人のResonite購入を照会page、pageSize、drawNo、number(4桁)、state、currency(NC / UMC)、source(web / resonite) | Web Cookie |
/API/Daily/Numbers/GetAdminPurchasesGET | 管理者が購入履歴を照会page、pageSize、drawNo、number、state、currency、source、userId、walletId | Web Cookie・管理者限定 |
/API/Daily/Numbers/GetAdminDrawsGET | 管理者が抽選履歴を照会page、pageSize、drawNo | Web Cookie・管理者限定 |
抽選は毎日20:00(日本時間)です。購入番号は "0042" のような4桁文字列で渡します。1枚1,000 NCまたは1,000 UMCで、当選金も購入時の通貨です。4桁一致100,000、下3桁一致50,000、下2桁一致10,000のうち最上位の賞だけを受け取ります。販売回・締切はGetSalesの drawNo・cutoffUnix を使い、価格・配当も応答値を確認してください。NC購入と自分のWeb購入履歴の確認にはUMC連携は不要です。
POST /API/Daily/Numbers/Purchase
Content-Type: application/json
X-CSRF-Token: <CSRF_TOKEN>
{"requestId":"numbers-example-0001","currency":"NC","drawNo":24,"number":"0042"}
購入成立は state:"accepted" と paymentState:"completed" です。購入状態は payment_pending / accepted / rejected / expired / refund_pending / refunded、支払い状態は queued / sending / unknown / completed / rejected / cancelled です。GetSales.pendingPurchase が返った場合は新しい購入を作らず、その本人の要求を復旧します。queued の購入だけ、明示操作で同じrequestId・currency・drawNo・numberのPurchaseを継続できます。sending / unknown はCheckPurchaseで照会します。
Purchaseの応答が途切れた場合は、まず元のrequestIdでCheckPurchaseを呼びます。未発見はHTTP 404と numbers_purchase_not_found です。この場合だけ、保持した元の本文で明示的にPurchaseを再送できます。rejectedRequest.requestId が元の要求と一致すれば拒否確定です。CheckPurchaseのrequestId省略時に記録がなければ purchase:null を返します。
UMCの入金が締切後に確認されたくじは抽選対象にせず、同じUMCで返金します。refund_pending と refunded を区別し、当選金・返金は payoutKind と payoutState で送金完了まで確認してください。抽選結果は既存の抽選元から取り込み、Web購入が別の当選番号を抽選することはありません。
稼働確認
| URL / メソッド | 用途・パラメーター | 認証 |
|---|---|---|
/API/Common/GetHealthGET | サービス・プロトコルの稼働状況を確認なし | ログイン前に利用 |
Texas Hold’em
ResoniteとXRiftの全インスタンスで共有するサーバー進行卓です。物理的な台や座る位置に関係なく、自動で人間の空席へ参加します。1卓は人間最大5人で、満員なら別の卓を作ります。本人認証必須。Bearer、またはPOST本文のsessionIdを利用できます。Web Cookieの書込みはCSRF必須です。10 NC / 10 UMC = 1 CREDIT、購入した通貨で出金します。
接頭辞は /API/Game/TexasHoldem/。GetTables・GetStateはGET/POST、その他はPOSTです。
| 操作 | 本文 |
|---|---|
| LoginUMC | umcToken。公式UMC本人認証を検証しHold’em専用sessionId、participantId、guest、ncid、displayName、expiresAtを返します。Guestのncidは空です。秘密は本文だけに送り、保存・共有しないでください |
| Logout | Hold’em専用sessionIdを失効。確定CREDIT・未確定送金・対戦記録は保持し、同じUMC本人で再ログインして復旧できます |
| GetTables | 作成順の卓一覧、人間の参加・次ハンド待機人数、ブラインド、購入範囲 |
| GetState | tableId省略を推奨。参加・待機中は常に本人の所属卓を返します(旧main指定も所属卓を優先)。未参加時は任意tableIdで観戦、無指定なら直前の本人終了ハンドをまだ表示している卓、または空席のある最初の卓を表示します。通常2秒間隔。本人の手札・CREDIT・手番・legal・未確定送金。native:trueで小さなflat応答。requestId任意(8~128文字)で本人のその取引だけを照会。通常transfers最新5件に加えてrequestedTransferを返し、nativeのtransferState/transferRequestIdは指定取引を優先、未発見は空になります |
| BuyCredit | requestId, currency (NC / UMC), credit (1000~4000)。UMC専用sessionは毎回公式本人認証を再確認。NC連携済み本人はNCも利用可能、GuestはUMCのみ。既存NCログイン時のUMC購入は連携とUMC再認証が必要です |
| Join | requestId, buyIn (1000~4000 CREDIT)。既存卓を作成順、人間の空席を0~4の順に自動割当します。既存卓がすべて満員なら新卓へ入ります。tableIdは旧クライアント互換の受付だけで卓選択には使いません。応答はtableIdとseat。進行中の到着者はCPUを途中で置換せず次ハンドまで待機します |
| Action | requestId, tableId, handId, revision, kind (fold / check / call / raise / all_in)。raise時のみraiseTo(このストリートの合計額) |
| Leave | requestId, tableId, afterHand。trueでハンド終了後に退出、falseで予約解除 |
| CashOut | requestId。離席後のCREDITを購入通貨・元の受取先へ全額払戻し。未送信queuedのUMC購入だけは明示返却で取消し、sending/unknownは照合まで保留します |
| Show | requestId, tableId, handId, show。終了後の任意公開 |
Action・Leave・ShowにはGetStateが返したtableIdを使います。変更要求は同じrequestId・同じ本文で再確認します。異なる本文は409。ACK後にGetStateで最新状態を取得します。UMCのsending/unknownは結果不明のため新規送信せずGetStateで確認してください。サーバーは公式取引履歴で確認できるまで購入CREDITを発行しません。NC/UMCの結果不明でも要求を捨てないでください。
UMC専用sessionは無操作30分、公式UMC認証の期限以下です。GetStateで延長し、サーバー再起動時は再ログインします。一般NC送金・プロフィールAPIには使用できません。GuestはNC口座を作らずレート0・ランキングと月間賞金対象外です。CREDIT・席・未確定送金があるGuestは返却完了までGuestを維持し、後のNC連携へ過去レートを遡及しません。連携が変わった古いNC専用sessionは返却復旧だけとなり、NC残高・本人札・記録は表示しません。
GetStateのbankBalanceはNC残高(Guestは0)、canBuyNCはNC購入可否です。meSeatは現在の席、viewerSeatは表示中ハンドの本人席です。handRankは本人・任意公開・ショーダウンで許可された札だけから算出。winAmountは未コール返金を含めないポット獲得額で、0より大きい席が勝者です。native:trueではplayer0Rank~player4Rank、player0WinAmount~player4WinAmountを返します。照会対象のtransferKind・transferCurrency・transferCreditも返し、対象がない場合は空文字・空文字・0です。
次ハンド待機中はmeSeatが予約席、viewerSeatはnull(nativeは-1)です。進行中CPUと予約席の番号が重なる場合でも、そのCPUの札や操作権限はありません。本人の札・役・操作判定にはviewerSeatとlegalを使い、物理席番号やmeSeatだけから推定しないでください。
記録は /API/Records/TexasHoldem/ のGetSummary、GetHands(直近100戦)、GetHand(handId必須)、GetRanking(period=all / month)で取得します。全員の札を含む終了後記録は、その対戦の参加者だけが閲覧できます。期待値・最良候補は公開情報による推定モデルの評価で、厳密な最適解の保証ではありません。
レート0から開始。最初に3000へ到達するまではマイナスなし、以後は操作品質と収支プラスにより1戦-10~+15。月間は日本時間の月初に切替え、前月上位3人へ100,000 / 50,000 / 30,000 NCを一度だけ付与します。
旧APIからの移行
JSON APIは /API/ 配下に統一しました。旧 /nc/api/v1/ の経路はHTTP 410と {"error":"api_route_retired"} を返します。例外は既存Web Cookieを移行する読取専用の GET /nc/api/v1/me と稼働確認の GET /nc/api/v1/health だけです。新しいクライアントは通常、この2つの旧経路を使用しません。
Web Cookieは Path=/ です。旧Web Cookieを持つ利用者の初回アクセス時だけ、新GetProfileが401なら旧meを1回読み、その後に新GetProfileを再照会します。新しいログイン・回復・ログアウトでは旧 Path=/nc Cookieを失効します。
旧スロット用のlocal/session/hold/recover/checkpoint・台snapshot・Webゲーム連携APIは廃止しました。旧スロットのBET・配当・CREDIT残高は保存しません。旧スロットのNC移動は Currency/Remittance、結果照会は Currency/GetRemittance を使います。新しいTexas Hold’emは別のサーバー進行ゲームで、専用APIがCREDITと進行を保持します。通信断は確定済みNC取引を取り消しません。未確定の送金要求ID・本文を保持し、同じ本人で照会・再送してください。
スキンなどの静的画像URLはJSON APIとは別で、/nc/static/・/nc/media/ を継続します。account.ncPerCredit や過去の履歴項目が残っていても、旧CREDIT保存APIが利用できることを意味しません。
主なエラー
| コード | 意味 / 対応 |
|---|---|
authentication_required / wallet_authentication_required / unauthorized | ログインが必要です。本人として再ログインしてください。 |
csrf_failed / origin_denied | Web認証情報や接続元を確認し、画面を更新してください。 |
insufficient_funds | 送金元の残高が不足しています。 |
request_id_conflict | 同じ要求IDに別の内容が指定されています。元の要求を確認してください。 |
connect_acceptance_required | 現在の受取人セッションでConnectを許可し直してください。 |
connect_amount_limit / connect_daily_limit | Connectの1回の金額または日次回数上限を超えています。 |
connect_already_exists | 同じConnect IDは登録済みです。本人の一覧から編集してください。 |
internal_connect_reserved | システム用Connectは変更・無効化できません。 |
forbidden / account_access_denied | その口座または管理操作を扱う権限がありません。 |
rate_limited | 操作が集中しています。少し待って同じ要求を確認してください。 |
numbers_unavailable | 最新の抽選情報を取得できません。時間をおいて照会してください。 |
| HTTP 500 / 接続失敗 | 変更操作の結果は不明です。要求IDと本文を保持して再確認してください。 |
excessive_access | 3秒間に20件の制限を超えたため30秒間停止しています。Retry-Afterの秒数を待ち、元の要求で結果を確認してください。 |
password_locked | パスワードの連続3回失敗により30分間ロックされています。Retry-Afterの秒数後に再ログインしてください。 |
draw_closed / numbers_purchase_pending | 販売締切、または別の購入が未確定です。GetSalesで現在の販売・未確定購入を確認してください。 |