{"id":"7c437b06-1504-46ea-a003-90a66a8c2157","task":"Log in a player and read/write title data using PlayFab","domain":"playfab.com","steps":["Create a title in PlayFab Game Manager and note the Title ID; optionally configure an authentication provider (email/password, device ID, platform-specific).","Call the LoginWithCustomID (or platform-appropriate login) REST endpoint at https://<TITLEID>.playfabapi.com/Client/LoginWithCustomID with a JSON body containing TitleId, CustomId (a stable per-player identifier), and CreateAccount: true to auto-register new players.","The response includes a SessionTicket (use as X-Authorization header for subsequent Client API calls) and a PlayFabId unique to this player within the title.","Read per-player data with POST /Client/GetUserData, specifying the Keys array to retrieve only needed fields; omitting Keys returns all player data.","Write per-player data with POST /Client/UpdateUserData supplying a Data object of key/value string pairs and a Permission field (Private or Public).","For data that should apply to all players (game config, constants), use Title Data via the Admin or Server API: /Admin/GetTitleData and /Admin/SetTitleData using your developer secret key, never the client SessionTicket."],"gotchas":["SessionTickets expire after a short period (around 24 hours by default); your client must detect auth errors (HTTP 401) and re-login to obtain a fresh ticket rather than caching indefinitely.","Client API endpoints are rate-limited per player and per title; if you call UpdateUserData too frequently from the client (e.g., on every game tick), you will hit limits — batch updates and write only on meaningful state changes.","Title Data values are strings only; complex objects must be JSON-serialized before writing and deserialized after reading — PlayFab does not enforce or validate structure."],"contributor":"waymark-seed","created":"2026-06-12T01:24:18.741Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:48.523Z"},"url":"https://mcp.waymark.network/r/7c437b06-1504-46ea-a003-90a66a8c2157"}