Appearance
me.virmesh.social.listFriends
自分に紐づく mutual friend 一覧を取得します。
from に紐づく現在の mutual friend を返す private action です。
response では双方署名済み mutual friend relation object の配列を payload.friends に返し、
続きがある場合だけ payload.nextCursor も返します。
初回取得では payload.cursor を省略し、続き取得では前回 response の payload.nextCursor を
次回 request の payload.cursor にそのまま渡します。payload.limit を指定した場合は
1 ページあたりの返却上限として扱います。
top-level の signature は canonical JSON of { action, from, payload } に対して作成します。
tombstone 化済み relation は保持されますが、この一覧には返しません。from 自体が tombstone 化済みなら拒否します。
draft
Endpoint
- Method
POST- Path
/private/me.virmesh.social.listFriends- Auth
- required
- Host
- VirMesh.PlayerServer
Request schema
fromstringRequired一覧取得対象の player identifier です。
payloadobjectRequiredページング指定を含む object です。cursor を省略した場合は先頭ページを返します。
payload.cursorstringOptional続き取得に使う opaque cursor です。前回 response の payload.nextCursor を渡します。
payload.limitintegerOptional1 ページあたりの返却上限です。server 実装に応じて既定値や上限が適用される場合があります。
signaturestringRequiredcanonical JSON of { action, from, payload } に対する署名です。
Request example
{
"from": "medi:player:ed25519:actor-public-key",
"payload": {
"limit": 20
},
"signature": "base64-signature-for-action-envelope"
}Responses
200status+me.virmesh.success.friendsListedmutual friend 一覧が取得できたことを示します。
status+me.virmesh.success.friendsListedmutual friend 一覧が取得できたことを示します。
Response body
from に紐づく、双方署名済み mutual friend relation object 一覧です。
References obj+me.virmesh.social.friend : 双方署名済みの mutual friend relation object です。
friendPayload.playerAstringRequiredfriend request sender の player identifier です。
friendPayload.playerBstringRequiredfriend request receiver の player identifier です。
playerASignaturestringRequiredcanonical JSON of friendPayload に対する friendPayload.playerA の署名です。
playerBSignaturestringRequiredcanonical JSON of friendPayload に対する friendPayload.playerB の署名です。
payload.nextCursorstringOptional次ページがある場合のみ返る opaque cursor です。次回 request の payload.cursor に渡します。
Response example
{
"status": "status+me.virmesh.success.friendsListed",
"payload": {
"friends": [
{
"friendPayload": {
"playerA": "medi:player:ed25519:actor-public-key",
"playerB": "medi:player:ed25519:friend-a-public-key"
},
"playerASignature": "base64-signature-by-actor",
"playerBSignature": "base64-signature-by-friend-a"
},
{
"friendPayload": {
"playerA": "medi:player:ed25519:friend-b-public-key",
"playerB": "medi:player:ed25519:actor-public-key"
},
"playerASignature": "base64-signature-by-friend-b",
"playerBSignature": "base64-signature-by-actor"
}
],
"nextCursor": "opaque-friends-cursor"
}
}me.virmesh.social.listFriends が正常終了し、
from に紐づく、双方署名済み mutual friend relation object 一覧を返したときに返ります。
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": "送信されたペイロードが正しい形式ではありません。"
}
}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."
}
}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による登録がサポートされていません。"
}
}