NasuCoin Connectサイトへ戻る

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だけでは送金できません。

  1. 送金元が設定画面または Connect/Create でConnectを作ります。
  2. 受取人が自分の現在のセッションから Common/AcceptConnect を呼びます。
  3. 同じ受取人セッションで、送金元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の返却形式

機能主要フィールド
AccountGetProfileは口座情報と csrfToken。Register・Recoverはさらに一度だけ表示する recoveryCode。Findは {accountNumber,displayName}。GetEventsは上記の履歴形式、GetEventは {items:[取引詳細]}。SetIcon・RemoveIconは {status:"confirmed",appearance,account}。
CardRevokeDeviceは {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・秘密セッションを共有保存しないでください。
RewardGetは {day,timezone,nextClaimAt,card,web,webProbabilities,cardAmount}。card/webは {claimed,amount,transactionId}。Claimは {status,amount,transactionId,nextClaimAt,account} で、受取済みなら status:"already_claimed"。日次判定は日本時間です。
SkinListは {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}。
ConnectListは {ownerNCID,items}。Create・Updateは {ownerNCID,connectId,limitNC,dailyLimit,enabled,internal,createdAt,updatedAt} の1件、Listのitemsも同形式です。Revokeは {status:"revoked",ownerNCID,connectId}。internal:true は変更できないシステム用ルールです。
Admin / BankGet・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 / UMCGetStatus・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 / NumbersGetStatusは {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・LogoutGetHealthは {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/RequestLoginPOSTNC 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、memoBearer / Web Cookie

新しい設定・Connect・管理機能

URL / メソッド用途・パラメーター認証
/API/Common/LogoutPOST現在のログインを終了空のJSONBearer / Web Cookie
/API/Currency/GetRemittanceGET / POST要求IDから送金結果を確認requestIdBearer / 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/RegisterPOSTNCアカウントを新規作成し、回復コードを発行username、displayName、passwordログイン前に利用
/API/Account/RecoverPOST回復コードでアカウントを回復username、recoveryCode、passwordログイン前に利用
/API/Account/GetProfileGET本人の設定用情報・権限などを取得なしWeb Cookie
/API/Account/FindGET / POST送金先の公開口座番号・表示名だけを確認ncidBearer / Web Cookie
/API/Account/GetEventsGET / POST本人の取引履歴を期間・種類で絞り込み、過去ページも取得before、limit(1~100)、kind、from、to(UNIX秒)Bearer / Web Cookie
/API/Account/GetEventGET / POST本人の取引1件の詳細を取得transactionIdBearer / Web Cookie
/API/Account/SetIconPOSTWebで選んだユーザーアイコンを登録requestId、imageBase64(PNG/JPEG/WebP・2 MBまで)Web Cookie
/API/Account/RemoveIconPOSTWebのユーザーアイコンを標準へ戻すrequestIdWeb 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、verifierHashXRift本人確認
/API/Card/FinishXRiftLoginPOSTXRift本人確認を完了し、連携または記憶ログインを確定challengeId、verifierXRift本人確認
/API/Card/UnlinkXRiftPOST記憶したXRift連携を解除空のJSONカードBearer
/API/Card/SetXRiftIconPOSTXRiftのユーザーアイコンをカード表示用に取得・正規化imageUrlカードBearer

既存の日次ボーナス・スキン

URL / メソッド用途・パラメーター認証
/API/Reward/GetGET / POST本人のWebルーレット・カードボーナスの受取状況を確認なしBearer / Web Cookie
/API/Reward/ClaimWebPOSTWebルーレットを回して本日分を受け取るrequestIdWeb Cookie
/API/Reward/ClaimCardPOST本日分のカードボーナスを受け取るrequestIdBearer / Web Cookie
/API/Skin/ListGET販売中・入手済み・装備中のスキンを取得なしWeb Cookie
/API/Skin/PurchasePOST販売中のスキンを購入requestId、skinIdWeb Cookie
/API/Skin/CreateCustomPOST画像から有料カスタムスキンを作成requestId、name、imageBase64(2 MBまで・推奨1024×640 px)Web Cookie
/API/Skin/EquipPOST入手済みのスキンを装備requestId、skinIdWeb Cookie

既存のUMC連携・交換

URL / メソッド用途・パラメーター認証
/API/Collabo/UMC/GetStatusGET検証済みの連携先、UMCログイン状態、残高、交換履歴を確認なしWeb Cookie
/API/Collabo/UMC/StartLoginPOSTUMC口座番号・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)、amountWeb Cookie
/API/Collabo/UMC/CreateExchangePOST確認した交換を同じ要求IDで受付・継続requestId、direction、amountWeb 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、drawNoWeb 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、walletIdWeb Cookie・管理者限定
/API/Daily/Numbers/GetAdminDrawsGET管理者が抽選履歴を照会page、pageSize、drawNoWeb 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です。

操作本文
LoginUMCumcToken。公式UMC本人認証を検証しHold’em専用sessionId、participantId、guest、ncid、displayName、expiresAtを返します。Guestのncidは空です。秘密は本文だけに送り、保存・共有しないでください
LogoutHold’em専用sessionIdを失効。確定CREDIT・未確定送金・対戦記録は保持し、同じUMC本人で再ログインして復旧できます
GetTables作成順の卓一覧、人間の参加・次ハンド待機人数、ブラインド、購入範囲
GetStatetableId省略を推奨。参加・待機中は常に本人の所属卓を返します(旧main指定も所属卓を優先)。未参加時は任意tableIdで観戦、無指定なら直前の本人終了ハンドをまだ表示している卓、または空席のある最初の卓を表示します。通常2秒間隔。本人の手札・CREDIT・手番・legal・未確定送金。native:trueで小さなflat応答。requestId任意(8~128文字)で本人のその取引だけを照会。通常transfers最新5件に加えてrequestedTransferを返し、nativeのtransferState/transferRequestIdは指定取引を優先、未発見は空になります
BuyCreditrequestId, currency (NC / UMC), credit (1000~4000)。UMC専用sessionは毎回公式本人認証を再確認。NC連携済み本人はNCも利用可能、GuestはUMCのみ。既存NCログイン時のUMC購入は連携とUMC再認証が必要です
JoinrequestId, buyIn (1000~4000 CREDIT)。既存卓を作成順、人間の空席を0~4の順に自動割当します。既存卓がすべて満員なら新卓へ入ります。tableIdは旧クライアント互換の受付だけで卓選択には使いません。応答はtableIdとseat。進行中の到着者はCPUを途中で置換せず次ハンドまで待機します
ActionrequestId, tableId, handId, revision, kind (fold / check / call / raise / all_in)。raise時のみraiseTo(このストリートの合計額)
LeaverequestId, tableId, afterHand。trueでハンド終了後に退出、falseで予約解除
CashOutrequestId。離席後のCREDITを購入通貨・元の受取先へ全額払戻し。未送信queuedのUMC購入だけは明示返却で取消し、sending/unknownは照合まで保留します
ShowrequestId, 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_deniedWeb認証情報や接続元を確認し、画面を更新してください。
insufficient_funds送金元の残高が不足しています。
request_id_conflict同じ要求IDに別の内容が指定されています。元の要求を確認してください。
connect_acceptance_required現在の受取人セッションでConnectを許可し直してください。
connect_amount_limit / connect_daily_limitConnectの1回の金額または日次回数上限を超えています。
connect_already_exists同じConnect IDは登録済みです。本人の一覧から編集してください。
internal_connect_reservedシステム用Connectは変更・無効化できません。
forbidden / account_access_deniedその口座または管理操作を扱う権限がありません。
rate_limited操作が集中しています。少し待って同じ要求を確認してください。
numbers_unavailable最新の抽選情報を取得できません。時間をおいて照会してください。
HTTP 500 / 接続失敗変更操作の結果は不明です。要求IDと本文を保持して再確認してください。
excessive_access3秒間に20件の制限を超えたため30秒間停止しています。Retry-Afterの秒数を待ち、元の要求で結果を確認してください。
password_lockedパスワードの連続3回失敗により30分間ロックされています。Retry-Afterの秒数後に再ログインしてください。
draw_closed / numbers_purchase_pending販売締切、または別の購入が未確定です。GetSalesで現在の販売・未確定購入を確認してください。