Skip to content

me.virmesh.register.startChallenge

指定した種類のチャレンジを開始し、ポーリング用の challengeToken を発行します。

アカウント登録などで追加検証が必要な場合に、チャレンジフローを開始します。 返却された challengeTokenme.virmesh.register.getChallengeStatus をポーリングし、 status+me.virmesh.challenge.successChallenge になってから me.virmesh.account.registerAccountKey 等へ進めます。 成功時は payload.challenge.typepayload.challenge.payload も返し、 client は type ごとに起動フローを分岐します。unknown type の payload は owner-defined extension として扱います。

draft

Endpoint

Method
POST
Path
/public/me.virmesh.register.startChallenge
Auth
none
Host
VirMesh.PlayerServer

Request schema

payload.challengeTypestringRequired

開始するチャレンジの種類。me.virmesh.register.listChallengeTypes で取得した payload.challengeTypes[].id のいずれかを渡します。

payload.sent_atintegerRequired

クライアント送信時刻。UNIX epoch ミリ秒で送ります。

Request example

{
  "payload": {
    "challengeType": "web_browser",
    "sent_at": 1770000000000
  }
}

Responses

200
status+me.virmesh.success.challengeIssued

チャレンジが発行され、`challengeToken` と type-specific payload が返却されたことを示します。

Response body

payload.challengeTokenstringRequired

発行された challenge token です。me.virmesh.register.getChallengeStatus に渡します。

payload.challenge.typestringRequired

開始された challenge の semantic type です。enum+<reverse-domain>.register.challengeType.<name> 形式の open enum を返します。

payload.challenge.payloadobjectRequired

type-specific data を格納する extensible object です。unknown type の場合も opaque payload としてここに入ります。

Response example

{
  "status": "status+me.virmesh.success.challengeIssued",
  "payload": {
    "challengeToken": "opaque-challenge-token",
    "challenge": {
      "type": "enum+me.virmesh.register.challengeType.web_browser",
      "payload": {
        "url": "https://challenge.example.com/session/opaque-challenge-token"
      }
    }
  }
}

me.virmesh.register.startChallenge が正常終了し、 以降の検証や me.virmesh.register.getChallengeStatus のポーリングに使うトークンが発行され、 challenge 起動に必要な type-specific payload も返されたときに返します。

400
status+me.virmesh.json.invalid_json

request body が JSON として解釈できないことを示します。

この status は body が壊れている、または JSON parser が受理できない形式で送られた場合に返ります。

Status payload

payload.messagestringRequired

実装依存の詳細メッセージです。

malformed json

{
  "status": "status+me.virmesh.json.invalid_json",
  "payload": {
    "message": "Request body must be valid JSON."
  }
}
400
status+me.virmesh.json.invalid_payload

`payload`がactionの期待する形式ではないことを示します。

リクエストデータ自体はJSON objectとして解釈できたものの、 期待する形式と一致しない場合に使います。

Status payload

payload.messagestringRequired

検証に失敗した理由を表す詳細メッセージです。

invalid payload

{
  "status": "status+me.virmesh.json.invalid_payload",
  "payload": {
    "message": "送信されたペイロードが正しい形式ではありません。"
  }
}
501
status+me.virmesh.action.not_supported

要求した action が現在の server では利用できないことを示します。

指定されたactionがサーバー上で無効化されており、使用できないことを示します。

Status payload

payload.messagestringRequired

実装依存の詳細メッセージです。

action is disabled

{
  "status": "status+me.virmesh.action.not_supported",
  "payload": {
    "message": "registerAccountKeyによる登録がサポートされていません。"
  }
}