Players

A player's own data

Exporting and deleting everything a player has in a project.

A signed-in player can take everything this project holds about them, and can delete it all. Both are per project: they cover this game only, never the player's dasmaffin.com account and never their players in other games. Offer both somewhere in your game's settings; the law gives players the right to each, and this is how they exercise it without writing to you.

GET    /me/export        everything held about the player, as one JSON document
DELETE /me               the player and everything of theirs, for good -> 204
Authorization: Bearer mgds_...

The export has the player record, how they sign in (account is the SteamID or dasmaffin.com account id; null for a device key, which is a secret), their sessions, every save file they own with its contents, files they made and left, their reports with the conversation, their scores on every version of every leaderboard, and any account link they started and did not finish. Attachments of their reports are listed with a url they can fetch with their token:

GET /me/reports/{id}/attachments/{attachmentId}

No token, token hash or device key hash is ever in it.

Deleting removes, in this order:

What How
Save files They leave every file they own. A file they were the last owner of is deleted, values and uploads included. A file others still own stays theirs, and its createdBy becomes 00000000-0000-0000-0000-000000000000
Reports Theirs are deleted, with attachments and the conversation
Leaderboards Their scores on every board, every version, archives included
Account links Any dasmaffin.com link they had started
Sign-in Every way in (logins), every session, the player record

It cannot be undone, so ask the player to confirm first. Their tokens stop working at once; an idToken your own server already holds is believed until its exp, at most an hour. A deletion that fails part way can be asked for again with the same token - the session goes last.

When a request reaches you some other way - an email - a service account with players.export or players.delete does the same for any player (below).