Appearance
status+me.virmesh.success.challengeIssued
チャレンジが発行され、`challengeToken` と type-specific payload が返却されたことを示します。
Description
me.virmesh.register.startChallenge が正常終了し、
以降の検証や me.virmesh.register.getChallengeStatus のポーリングに使うトークンが発行され、
challenge 起動に必要な type-specific payload も返されたときに返します。
When this happens
- payload の型検証が通る
- 要求された
challengeTypeがサーバでサポートされている
Payload
payload.challengeTokenstringRequiredチャレンジの識別子。getChallengeStatus に渡します。
payload.challenge.typestringRequired開始された challenge の semantic type です。enum+<reverse-domain>.register.challengeType.<name> 形式の open enum を返します。
payload.challenge.payloadobjectRequiredchallenge 起動用の type-specific payload です。owner-defined な unknown type の場合も opaque object として返ります。
payload.challenge.payload.urlstringOptionalpayload.challenge.type が enum+me.virmesh.register.challengeType.web_browser のときに返る URL です。
payload.challenge.payload.challengestringOptionalpayload.challenge.type が enum+me.virmesh.register.challengeType.proof_of_work のときに返る計算対象文字列です。
payload.challenge.payload.difficultyintegerOptionalpayload.challenge.type が enum+me.virmesh.register.challengeType.proof_of_work のときに返る difficulty です。
Examples
challenge issued
{
"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"
}
}
}
}Client handling
challengeTokenを保存し、チャレンジ完了までme.virmesh.register.getChallengeStatusでポーリングするchallenge.typeを見て client 側でフローを分岐する- unknown
typeは opaque payload として扱い、未対応 client では unsupported 表示または開始不可にする - 続くフロー(例:
me.virmesh.account.registerAccountKeyのpayload.challenge)にトークンを渡す
Related statuses
Referenced by
| HTTP | API | Action |
|---|---|---|
200 | me.virmesh.register.startChallenge | me.virmesh.register.startChallenge |