Appearance
me.virmesh.social.sendFriendRequest
署名済み friend request object を保存し、pending request を作成します。
相互フレンド前提の social surface で使う private action です。
payload.friendRequest には sender 署名済みの friend request object を入れます。
top-level の signature は canonical JSON of { action, from, payload } に対する署名で、
内側の payload.friendRequest.senderSignature は canonical JSON of payload.friendRequest.friendPayload に対する sender の署名です。
from と payload.friendRequest.sender は一致している必要があります。
sender または requestTo が tombstone 化済み account の場合は受理されません。
draft
Endpoint
- Method
POST- Path
/private/me.virmesh.social.sendFriendRequest- Auth
- required
- Host
- VirMesh.PlayerServer
Request schema
fromstringRequiredaction 実行者の player identifier です。payload.friendRequest.sender と一致している必要があります。
sender / requestTo と future friendPayload を含む、sender 署名済みの friend request object です。
References obj+me.virmesh.social.friendRequest : future `friendPayload` を固定した sender 署名付き friend request object です。
senderstringRequiredフレンドリクエスト送信者の player identifier です。
requestTostringRequiredフレンドリクエスト受信者の player identifier です。
friendPayload.playerAstringRequiredfuture friend object における sender の player identifier です。
friendPayload.playerBstringRequiredfuture friend object における receiver の player identifier です。
senderSignaturestringRequiredcanonical JSON of friendPayload に対する sender の署名です。
signaturestringRequiredcanonical JSON of { action, from, payload } に対する署名です。
Request example
{
"from": "medi:player:ed25519:sender-public-key",
"payload": {
"friendRequest": {
"sender": "medi:player:ed25519:sender-public-key",
"requestTo": "medi:player:ed25519:receiver-public-key",
"friendPayload": {
"playerA": "medi:player:ed25519:sender-public-key",
"playerB": "medi:player:ed25519:receiver-public-key"
},
"senderSignature": "base64-signature-by-sender"
}
},
"signature": "base64-signature-for-action-envelope"
}Responses
201status+me.virmesh.success.friendRequestSentfriend request が pending request として保存されたことを示します。
status+me.virmesh.success.friendRequestSentfriend request が pending request として保存されたことを示します。
me.virmesh.social.sendFriendRequest が正常終了し、
future friendPayload に対する sender 署名付き friend request object が pending request として保存されたときに返ります。
friend request stored
{
"status": "status+me.virmesh.success.friendRequestSent"
}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.social.self_request_not_allowed自分自身に対する friend request は作成できないことを示します。
status+me.virmesh.social.self_request_not_allowed自分自身に対する friend request は作成できないことを示します。
この status は sender と requestTo が同じ値だった場合に返ります。
Status payload
payload.messagestringRequired実装依存の詳細メッセージです。
self request rejected
{
"status": "status+me.virmesh.social.self_request_not_allowed",
"payload": {
"message": "You cannot send a friend request to yourself."
}
}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."
}
}403status+me.virmesh.social.friend_request_rejected対象 player が friend request を受け付けていないことを示します。
status+me.virmesh.social.friend_request_rejected対象 player が friend request を受け付けていないことを示します。
この status は対象 player が block、privacy policy、server-side social rule などの理由で、 送信された friend request を拒否した場合に返ります。
Status payload
payload.messagestringRequired実装依存の詳細メッセージです。
target player rejected the request
{
"status": "status+me.virmesh.social.friend_request_rejected",
"payload": {
"message": "The target player rejected this friend request."
}
}404status+me.virmesh.social.target_player_not_knownrequestTo で指定した対象 player をサーバー側で認識できないことを示します。
status+me.virmesh.social.target_player_not_knownrequestTo で指定した対象 player をサーバー側で認識できないことを示します。
この status は me.virmesh.social.sendFriendRequest で指定した requestTo を、
PlayerServer が既知の player として解決できない場合に返ります。
Status payload
payload.messagestringRequired実装依存の詳細メッセージです。
target player not known
{
"status": "status+me.virmesh.social.target_player_not_known",
"payload": {
"message": "The target player is not known to this server."
}
}409status+me.virmesh.social.friend_request_sender_mismatchaction 実行者と friend request object の sender が一致しないことを示します。
status+me.virmesh.social.friend_request_sender_mismatchaction 実行者と friend request object の sender が一致しないことを示します。
この status は sender として扱うべき actor が payload.friendRequest.sender と一致しない場合に返ります。
主に sendFriendRequest と cancelFriendRequest で使います。
Status payload
payload.messagestringRequired不一致の内容を表す実装依存の詳細メッセージです。
sender mismatch
{
"status": "status+me.virmesh.social.friend_request_sender_mismatch",
"payload": {
"message": "The acting player does not match friendRequest.sender."
}
}409status+me.virmesh.social.friend_request_already_exists同じ sender と requestTo の pending friend request がすでに存在することを示します。
status+me.virmesh.social.friend_request_already_exists同じ sender と requestTo の pending friend request がすでに存在することを示します。
この status は同じ sender/requestTo の組み合わせに対して、まだ処理されていない pending request がある場合に返ります。
Status payload
payload.messagestringRequired実装依存の詳細メッセージです。
duplicate pending request
{
"status": "status+me.virmesh.social.friend_request_already_exists",
"payload": {
"message": "A pending friend request for this pair already exists."
}
}409status+me.virmesh.social.already_friends対象 pair はすでに mutual friend 関係にあることを示します。
status+me.virmesh.social.already_friends対象 pair はすでに mutual friend 関係にあることを示します。
この status は対象 pair がすでに相互フレンドとして登録済みで、pending request として扱えない場合に返ります。
Status payload
payload.messagestringRequired実装依存の詳細メッセージです。
already mutual friends
{
"status": "status+me.virmesh.social.already_friends",
"payload": {
"message": "The players are already friends."
}
}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による登録がサポートされていません。"
}
}