Appearance
me.virmesh.server.notifyNewAccount
ポスト量子化移行に先立ち、新アカウント情報を連合先 PlayerServer に事前登録します。
旧アカウントから新アカウントへの移行予定を、連合中の PlayerServer へ通知する private action です。
top-level の signature と newSignature は、
旧鍵と新鍵の両方が同じ移行内容に同意していることを示します。
この action は移行予定の保存だけを行い、旧アカウントの無効化や参照切り替えは行いません。
tombstone 化済み account を含む migration は受理されません。
Endpoint
Request schema
fromstringRequired移行元アカウントの id です。通常は payload.oldAccountId と同じ値を送ります。
payload.oldAccountIdstringRequired移行元アカウントの id です。
payload.newAccountIdstringRequired移行先アカウントの id です。
payload.newPublicKeystringRequired移行先アカウントの公開鍵です。
payload.newKeyTypestringRequired移行先アカウントの鍵種別です。ポスト量子耐性を持つ方式を想定します。
payload.prepared_atintegerRequired事前登録を作成した時刻です。UNIX epoch milliseconds を送ります。
signaturestringRequiredoldAccountId, newAccountId, newPublicKey, newKeyType, prepared_at から構成される canonical JSON に対する旧アカウント鍵の署名です。
newSignaturestringRequiredoldAccountId, newAccountId, newPublicKey, newKeyType, prepared_at から構成される canonical JSON に対する新アカウント鍵の署名です。
Request example
{
"from": "medi:player:ed25519:base64-old-public-key",
"payload": {
"oldAccountId": "medi:player:ed25519:base64-old-public-key",
"newAccountId": "medi:player:sqisign:base64-new-public-key",
"newPublicKey": "base64-new-public-key",
"newKeyType": "sqisign",
"prepared_at": 1770000000000
},
"signature": "base64-signature-by-old-account",
"newSignature": "base64-signature-by-new-account"
}Responses
200status+me.virmesh.success.newAccountNotifiedポスト量子化移行用の新アカウント情報が事前登録されたことを示します。
status+me.virmesh.success.newAccountNotifiedポスト量子化移行用の新アカウント情報が事前登録されたことを示します。
me.virmesh.server.notifyNewAccount が正常終了し、
旧アカウントから新アカウントへの移行予定が受信側 PlayerServer に保存されたことを示します。
new account prepared
{
"status": "status+me.virmesh.success.newAccountNotified"
}400status+me.virmesh.json.invalid_jsonrequest body が JSON として解釈できないことを示します。
status+me.virmesh.json.invalid_jsonrequest 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."
}
}400status+me.virmesh.json.invalid_private_requestprivate request envelope の形式が不正であることを示します。
status+me.virmesh.json.invalid_private_requestprivate request envelope の形式が不正であることを示します。
この status は private route が期待する from, payload, signature などの envelope 要件を満たさない場合に返ります。
Status payload
payload.messagestringRequired実装依存の詳細メッセージです。
invalid private envelope
{
"status": "status+me.virmesh.json.invalid_private_request",
"payload": {
"message": "Private request must contain the expected envelope fields."
}
}400status+me.virmesh.json.unexpected_fields許可されていない field が request に含まれていることを示します。
status+me.virmesh.json.unexpected_fields許可されていない field が request に含まれていることを示します。
この status は strict validation が有効な route に未知の top-level field または payload field を送った場合に返ります。
Status payload
payload.messagestringRequired実装依存の詳細メッセージです。
unexpected request fields
{
"status": "status+me.virmesh.json.unexpected_fields",
"payload": {
"message": "Request contains unknown fields that are not allowed by this route."
}
}400status+me.virmesh.json.invalid_payload`payload`がactionの期待する形式ではないことを示します。
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": "送信されたペイロードが正しい形式ではありません。"
}
}400status+me.virmesh.key.invalid_key送信された公開鍵がこの key scheme では受理できないことを示します。
status+me.virmesh.key.invalid_key送信された公開鍵がこの key scheme では受理できないことを示します。
公開鍵の encoding、byte length、または key material が想定する key type に 合致しない場合に返します。
Status payload
payload.messagestringRequired公開鍵が不正である理由を表す詳細メッセージです。
invalid key
{
"status": "status+me.virmesh.key.invalid_key",
"payload": {
"message": "送信された鍵が無効です。"
}
}400status+me.virmesh.key.unsupported_keytype送信された鍵種別がそのサーバーでサポートされていないことを示します。
status+me.virmesh.key.unsupported_keytype送信された鍵種別がそのサーバーでサポートされていないことを示します。
指定された鍵方式にサーバーが対応しておらず、リクエストを処理できないことを示します。
例えば、action が ed25519 鍵を要求しているにもかかわらず、クライアントが secp256k1 鍵を送信した場合などに返されます。
Status payload
payload.messagestringRequired未対応であることを示すメッセージです。
unsupported key type
{
"status": "status+me.virmesh.key.unsupported_keytype",
"payload": {
"message": "送信された鍵の種類はサポートされていません。"
}
}401status+me.virmesh.key.invalid_signature署名の形式が不正、または署名検証に失敗したことを示します。
status+me.virmesh.key.invalid_signature署名の形式が不正、または署名検証に失敗したことを示します。
この status は署名文字列が base64 として不正な場合と、 復元できた署名が検証に失敗した場合に使われます。
Status payload
payload.messagestringRequired実装依存の詳細メッセージです。
signature verification failed
{
"status": "status+me.virmesh.key.invalid_signature",
"payload": {
"message": "Signature verification failed."
}
}409status+me.virmesh.server.account_mismatch移行要求のアカウント情報が署名、公開鍵、または保存済み migration record と一致しないことを示します。
status+me.virmesh.server.account_mismatch移行要求のアカウント情報が署名、公開鍵、または保存済み migration record と一致しないことを示します。
この status は移行要求に含まれるアカウント情報の整合性が取れない場合に返ります。
たとえば newAccountId と newPublicKey/newKeyType の対応が一致しない場合や、
事前登録済み record と異なるアカウントの組み合わせで切り替えを試みた場合が該当します。
Status payload
payload.messagestringRequired不一致の内容を表す実装依存の詳細メッセージです。
account pair mismatch
{
"status": "status+me.virmesh.server.account_mismatch",
"payload": {
"message": "The requested account mapping does not match the prepared migration."
}
}410status+me.virmesh.account.disabled対象 account が tombstone 化済みであり、有効な主体または参照先として扱えないことを示します。
status+me.virmesh.account.disabled対象 account が tombstone 化済みであり、有効な主体または参照先として扱えないことを示します。
この status は account が disable 済みで、以後の更新、social 操作、migration、
公開 profile / handle 解決の対象として受理されない場合に返ります。
通常は HTTP 410 Gone と組み合わせて返します。
Status payload
payload.messagestringRequired実装依存の詳細メッセージです。
account disabled
{
"status": "status+me.virmesh.account.disabled",
"payload": {
"message": "The requested account has been disabled and tombstoned."
}
}501status+me.virmesh.action.not_supported要求した action が現在の server では利用できないことを示します。
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による登録がサポートされていません。"
}
}