From 2ecd830d75d16b2325d61b62aa57b1184fbeca7e Mon Sep 17 00:00:00 2001 From: funman300 Date: Mon, 17 Aug 2026 04:09:56 +0000 Subject: [PATCH] docs(evidence): commit fresh sanitised UTAS wire captures (2026-08-15 live A/B) Rebuilds the primary-capture corpus lost to .gitignore (Known Issues #200): 10 real-client requests + 12 responses captured during the post-P1 staging A/B on a real FIFA 17 client, sanitised (SID/authCode/deviceId/MAC/tokens redacted; raw pcap withheld). Documents the account/sync, empty-My-Packs 65534 sentinel, and userMassInfo contracts, incl. the finding that account/sync is coupled to Python active-profile selection (so it can't migrate standalone from the userMassInfo hybrid). --- .../live-captures-2026-08-15/README.md | 57 +++++++ .../utas-requests.sanitised.txt | 157 ++++++++++++++++++ .../utas-responses.sanitised.txt | 127 ++++++++++++++ 3 files changed, 341 insertions(+) create mode 100644 docs/evidence/live-captures-2026-08-15/README.md create mode 100644 docs/evidence/live-captures-2026-08-15/utas-requests.sanitised.txt create mode 100644 docs/evidence/live-captures-2026-08-15/utas-responses.sanitised.txt diff --git a/docs/evidence/live-captures-2026-08-15/README.md b/docs/evidence/live-captures-2026-08-15/README.md new file mode 100644 index 0000000..7f37ec0 --- /dev/null +++ b/docs/evidence/live-captures-2026-08-15/README.md @@ -0,0 +1,57 @@ +# Live UTAS wire captures — 2026-08-15 + +Fresh sanitised FIFA 17 UTAS wire, captured during the post-P1 staging A/B on a +**real FIFA 17 client** (`10.10.0.105`) driving the isolated post-P1 candidate +backend (`10.10.0.121`, host bin `fda40d12`, Core `fbb54ea`). Production untouched. + +This rebuilds the primary-capture corpus that was lost to `.gitignore` (Known Issues +#200 / "take sanitised captures on the next live FIFA run and commit them"). + +## Files +- `utas-requests.sanitised.txt` — 10 real client requests (`---`-separated). +- `utas-responses.sanitised.txt` — 12 responses. + +Captured with `tcpdump` on the container netns (UTAS is plain HTTP on `:8099`), +reassembled + split + **sanitised** by `openfut-staging/extract_http.py`. Redacted: +`X-UT-SID`/`sid` (``), `authCode` (``), `deviceId` (``), `macAddress` +(``), and any 32+char hex token (``). The raw `.pcap` is intentionally +NOT committed (it is unsanitised). + +## Route contracts captured (verbatim shapes) + +### POST /openfut/account/sync (launcher control-plane, Python-served) +Request (launcher → backend): +```json +{"personaId":33068179,"personaName":"CAGE","level":1,"experience":0, + "experienceMax":1000,"accountFunds":0,"accountFundsCap":100000} +``` +Response: +```json +{"account":{"personaId":33068179,"personaName":"CAGE","clubName":"OpenFUT", + "clubAbbr":"OFC","level":1,"experience":0,"experienceMax":1000,"accountFunds":0, + "accountFundsCap":100000,"profilePath":"accounts/33068179/fifa17_profile.json", + "coins":29826776,"unopenedPacks":0},"status":"OK"} +``` +NOTE: `coins` here is Python's STALE profile value (29,826,776) — Core's authoritative +balance at capture time was 29,859,876. The launcher's `AccountSummary` parser is +lenient and requires only `{personaId,personaName,level,experience,accountFunds,coins, +unopenedPacks}` (clubName/clubAbbr/etc. ignored). BLOCKER for a Rust migration is NOT +the shape — it is that Python `account/sync` also *selects the active profile* the +still-Python-served userMassInfo envelope depends on, so it is coupled to the +userMassInfo hybrid and cannot migrate standalone. + +### GET /ut/game/fifa17/store/purchasegroup/all?ppInfo=true (empty My-Packs sentinel) +The `mypacks` group carries the synthetic sentinel pack when My Packs is empty: +```json +{"assetId":65534,"displayGroup":{"priority":1,"value":"mypacks"},"id":65534, + "packType":"GOLD","packContentInfo":{"goldQuantity":0,"itemQuantity":0,...}, + "state":"active","unopened":false} +``` +Client renders empty My Packs AS Browse Packs (no crash) — the bug-6c resolver guard. + +### Other captured request lines +`POST /ut/auth`, `GET user/accountinfo`, `GET settings`, `GET phishing/trusteddevice`, +`PUT match/reset`, `GET userMassInfo`, `PUT clientdata/userHubData`, +`PUT /ut/v2/game/fifa17/store/transaction/0`. + +See `openfut-staging/p1p-live-2026-08-15/AB_VERDICT.md` for the full A/B result. diff --git a/docs/evidence/live-captures-2026-08-15/utas-requests.sanitised.txt b/docs/evidence/live-captures-2026-08-15/utas-requests.sanitised.txt new file mode 100644 index 0000000..2a94a34 --- /dev/null +++ b/docs/evidence/live-captures-2026-08-15/utas-requests.sanitised.txt @@ -0,0 +1,157 @@ +POST /openfut/account/sync HTTP/1.1 +Host: 10.10.0.121:8099 +Content-Type: application/json +Content-Length: 131 +Connection: close + +{"personaId":33068179,"personaName":"CAGE","level":1,"experience":0,"experienceMax":1000,"accountFunds":0,"accountFundsCap":100000} + +--- + +GET /ut/game/fifa17/user/accountinfo HTTP/1.1 +Host: 10.10.0.121:8099 +Connection: Close +User-Agent: ProtoHttp 1.3/DS 15.1.2.1.0 (Windows) +Accept: application/json +Content-Type: application/json +Accept-Encoding: gzip +Easw-Session-Data-Nucleus-Id: 33068179 +Accept-Encoding: gzip + + + +--- + +POST /ut/auth HTTP/1.1 +Host: 10.10.0.121:8099 +Content-Length: 380 +Connection: Close +User-Agent: ProtoHttp 1.3/DS 15.1.2.1.0 (Windows) +Accept: application/json +Content-Type: application/json +Hash: + +{"isReadOnly":false,"priorityLevel":6,"sku":"FFA17PCC","nucleusPersonaPlatform":"pc","clientVersion":3,"nuc":33068179,"nucleusPersonaId":33068179,"nucleusPersonaDisplayName":"CAGE","locale":"en-US","regionCode":"US","deviceId":"","macAddress":"","method":"authcode","identification":{"authCode":""}} + +--- + +GET /ut/game/fifa17/settings HTTP/1.1 +Host: 10.10.0.121:8099 +User-Agent: ProtoHttp 1.3/DS 15.1.2.1.0 (Windows) +Accept: application/json +Content-Type: application/json +X-UT-SID: +Accept-Encoding: gzip + +GET /ut/game/fifa17/phishing/trusteddevice?deviceId= HTTP/1.1 +Host: 10.10.0.121:8099 +User-Agent: ProtoHttp 1.3/DS 15.1.2.1.0 (Windows) +Accept: application/json +Content-Type: application/json +X-UT-SID: +Accept-Encoding: gzip + + + +--- + +GET /ut/game/fifa17/phishing/trusteddevice?deviceId= HTTP/1.1 +Host: 10.10.0.121:8099 +User-Agent: ProtoHttp 1.3/DS 15.1.2.1.0 (Windows) +Accept: application/json +Content-Type: application/json +X-UT-SID: +Accept-Encoding: gzip + + + +--- + +PUT /ut/game/fifa17/match/reset HTTP/1.1 +Host: 10.10.0.121:8099 +Content-Length: 0 +User-Agent: ProtoHttp 1.3/DS 15.1.2.1.0 (Windows) +Accept: application/json +Content-Type: application/json +X-UT-SID: + +GET /ut/game/fifa17/userMassInfo HTTP/1.1 +Host: 10.10.0.121:8099 +User-Agent: ProtoHttp 1.3/DS 15.1.2.1.0 (Windows) +Accept: application/json +Content-Type: application/json +X-UT-SID: +Accept-Encoding: gzip + + + +--- + +GET /ut/game/fifa17/userMassInfo HTTP/1.1 +Host: 10.10.0.121:8099 +User-Agent: ProtoHttp 1.3/DS 15.1.2.1.0 (Windows) +Accept: application/json +Content-Type: application/json +X-UT-SID: +Accept-Encoding: gzip + + + +--- + +PUT /ut/v2/game/fifa17/store/transaction/0 HTTP/1.1 +Host: 10.10.0.121:8099 +Content-Length: 29 +User-Agent: ProtoHttp 1.3/DS 15.1.2.1.0 (Windows) +Accept: application/json +Content-Type: application/json +X-UT-SID: + +{"state":"TRANSACTIONCANCEL"}GET /ut/game/fifa17/hub HTTP/1.1 +Host: 10.10.0.121:8099 +User-Agent: ProtoHttp 1.3/DS 15.1.2.1.0 (Windows) +Accept: application/json +Content-Type: application/json +X-UT-SID: +Accept-Encoding: gzip + + + +--- + +PUT /ut/game/fifa17/clientdata/userHubData HTTP/1.1 +Host: 10.10.0.121:8099 +Content-Length: 53 +User-Agent: ProtoHttp 1.3/DS 15.1.2.1.0 (Windows) +Accept: application/json +Content-Type: application/json +X-UT-SID: + +{"entries":[{"key":0,"value":0},{"key":1,"value":1}]}GET /ut/game/fifa17/user/credits HTTP/1.1 +Host: 10.10.0.121:8099 +User-Agent: ProtoHttp 1.3/DS 15.1.2.1.0 (Windows) +Accept: application/json +Content-Type: application/json +X-UT-SID: +Accept-Encoding: gzip + +GET /ut/game/fifa17/store/purchasegroup/all?ppInfo=true HTTP/1.1 +Host: 10.10.0.121:8099 +User-Agent: ProtoHttp 1.3/DS 15.1.2.1.0 (Windows) +Accept: application/json +Content-Type: application/json +X-UT-SID: +Accept-Encoding: gzip + + + +--- + +GET /ut/game/fifa17/store/purchasegroup/all?ppInfo=true HTTP/1.1 +Host: 10.10.0.121:8099 +User-Agent: ProtoHttp 1.3/DS 15.1.2.1.0 (Windows) +Accept: application/json +Content-Type: application/json +X-UT-SID: +Accept-Encoding: gzip + diff --git a/docs/evidence/live-captures-2026-08-15/utas-responses.sanitised.txt b/docs/evidence/live-captures-2026-08-15/utas-responses.sanitised.txt new file mode 100644 index 0000000..4351a6b --- /dev/null +++ b/docs/evidence/live-captures-2026-08-15/utas-responses.sanitised.txt @@ -0,0 +1,127 @@ +HTTP/1.1 200 OK +server: BaseHTTP/0.6 Python/3.11.2 +date: Mon, 17 Aug 2026 03:54:21 GMT +content-type: application/json +Content-Length: 310 + +{"account": {"personaId": 33068179, "personaName": "CAGE", "clubName": "OpenFUT", "clubAbbr": "OFC", "level": 1, "experience": 0, "experienceMax": 1000, "accountFunds": 0, "accountFundsCap": 100000, "profilePath": "accounts/33068179/fifa17_profile.json", "coins": 29826776, "unopenedPacks": 0}, "status": "OK"} + +--- + +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 2 + +{} + +--- + +HTTP/1.1 200 OK +server: BaseHTTP/0.6 Python/3.11.2 +date: Mon, 17 Aug 2026 03:54:46 GMT +content-type: application/json +Content-Length: 132 + +{"protocol": 1, "sid": "", "serverTime": "2026-08-17 03:54:46", "lastOnlineTime": "2026-08-17 03:54:46"} + +--- + +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 14 + +{"configs":[]}HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 61 + +{"changed":false,"exists":true,"locked":false,"trusted":true} + +--- + +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 61 + +{"changed":false,"exists":true,"locked":false,"trusted":true} + +--- + +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 2 + +{}HTTP/1.1 200 OK +server: BaseHTTP/0.6 Python/3.11.2 +date: Mon, 17 Aug 2026 03:54:47 GMT +Content-Type: application/json +Content-Length: 7885 + +{"pileSizeClientData":{"entries":[{"key":2,"value":100},{"key":4,"value":50}]},"settings":{"configs":[]},"squad":{"actives":[],"captain":100000001,"changed":0,"chemistry":49,"custom":"[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,50,40,65,0,65,50,50,1]","formation":"f433","id":0,"kicktakers":[{"dream":false,"id":100000001,"index":0},{"dream":false,"id":100000001,"index":1},{"dream":false,"id":100000001,"index":2},{"dream":false,"id":100000001,"index":3},{"dream":false,"id":100000001,"index":4}],"manager":[{"dream":false,"id":100000427}],"personaId":33068179,"players":[{"index":0,"itemData":{"assetId":200389,"attributeList":[{"index":0,"value":83},{"index":1,"value":90},{"index":2,"value":77},{"index":3,"value":82},{"index":4,"value":50},{"index":5,"value":87}],"cardassetid":200389,"cardsubtypeid":0,"contract":7,"definitionId":200389,"discardValue":1500,"fitness":99,"id":100000003,"itemState":"free","itemType":"player","leagueId":53,"nation":44,"owners":1,"playStyle":250,"preferredPosition":"GK","rareflag":1,"rating":87,"resourceId":200389,"teamid":240,"untradeable":true},"kitNumber":1},{"index":1,"itemData":{"assetId":197445,"attributeList":[{"index":0,"value":86},{"index":1,"value":73},{"index":2,"value":81},{"index":3,"value":83},{"index":4,"value":83},{"index":5,"value":73}],"cardassetid":197445,"cardsubtypeid":0,"contract":7,"definitionId":197445,"discardValue":1500,"fitness":99,"id":100000006,"itemState":"free","itemType":"player","leagueId":19,"nation":4,"owners":1,"playStyle":250,"preferredPosition":"LB","rareflag":1,"rating":87,"resourceId":197445,"teamid":21,"untradeable":true},"kitNumber":4},{"index":2,"itemData":{"assetId":155862,"attributeList":[{"index":0,"value":78},{"index":1,"value":63},{"index":2,"value":70},{"index":3,"value":70},{"index":4,"value":87},{"index":5,"value":83}],"cardassetid":155862,"cardsubtypeid":0,"contract":7,"definitionId":155862,"discardValue":1500,"fitness":99,"id":100000005,"itemState":"free","itemType":"player","leagueId":53,"nation":45,"owners":1,"playStyle":250,"preferredPosition":"CB","rareflag":1,"rating":89,"resourceId":155862,"teamid":243,"untradeable":true},"kitNumber":3},{"index":3,"itemData":{"assetId":182521,"attributeList":[{"index":0,"value":45},{"index":1,"value":80},{"index":2,"value":88},{"index":3,"value":79},{"index":4,"value":69},{"index":5,"value":70}],"cardassetid":182521,"cardsubtypeid":0,"contract":7,"definitionId":182521,"discardValue":1500,"fitness":99,"id":100000008,"itemState":"free","itemType":"player","leagueId":53,"nation":21,"owners":1,"playStyle":250,"preferredPosition":"CM","rareflag":1,"rating":88,"resourceId":182521,"teamid":243,"untradeable":true},"kitNumber":6},{"index":4,"itemData":{"assetId":189332,"attributeList":[{"index":0,"value":93},{"index":1,"value":69},{"index":2,"value":75},{"index":3,"value":83},{"index":4,"value":81},{"index":5,"value":75}],"cardassetid":189332,"cardsubtypeid":0,"contract":7,"definitionId":189332,"discardValue":1500,"fitness":99,"id":100000007,"itemState":"free","itemType":"player","leagueId":53,"nation":45,"owners":1,"playStyle":250,"preferredPosition":"LB","rareflag":1,"rating":86,"resourceId":189332,"teamid":241,"untradeable":true},"kitNumber":5},{"index":5,"itemData":{"assetId":158023,"attributeList":[{"index":0,"value":89},{"index":1,"value":90},{"index":2,"value":86},{"index":3,"value":96},{"index":4,"value":26},{"index":5,"value":61}],"cardassetid":158023,"cardsubtypeid":0,"contract":7,"definitionId":158023,"discardValue":1500,"fitness":99,"id":100000002,"itemState":"free","itemType":"player","leagueId":53,"nation":52,"owners":1,"playStyle":250,"preferredPosition":"RW","rareflag":1,"rating":93,"resourceId":158023,"teamid":241,"untradeable":true},"kitNumber":9},{"index":6,"itemData":{"assetId":1 + +--- + +HTTP/1.1 200 OK +server: BaseHTTP/0.6 Python/3.11.2 +date: Mon, 17 Aug 2026 03:54:47 GMT +Content-Type: application/json +Content-Length: 7885 + +{"pileSizeClientData":{"entries":[{"key":2,"value":100},{"key":4,"value":50}]},"settings":{"configs":[]},"squad":{"actives":[],"captain":100000001,"changed":0,"chemistry":49,"custom":"[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,50,40,65,0,65,50,50,1]","formation":"f433","id":0,"kicktakers":[{"dream":false,"id":100000001,"index":0},{"dream":false,"id":100000001,"index":1},{"dream":false,"id":100000001,"index":2},{"dream":false,"id":100000001,"index":3},{"dream":false,"id":100000001,"index":4}],"manager":[{"dream":false,"id":100000427}],"personaId":33068179,"players":[{"index":0,"itemData":{"assetId":200389,"attributeList":[{"index":0,"value":83},{"index":1,"value":90},{"index":2,"value":77},{"index":3,"value":82},{"index":4,"value":50},{"index":5,"value":87}],"cardassetid":200389,"cardsubtypeid":0,"contract":7,"definitionId":200389,"discardValue":1500,"fitness":99,"id":100000003,"itemState":"free","itemType":"player","leagueId":53,"nation":44,"owners":1,"playStyle":250,"preferredPosition":"GK","rareflag":1,"rating":87,"resourceId":200389,"teamid":240,"untradeable":true},"kitNumber":1},{"index":1,"itemData":{"assetId":197445,"attributeList":[{"index":0,"value":86},{"index":1,"value":73},{"index":2,"value":81},{"index":3,"value":83},{"index":4,"value":83},{"index":5,"value":73}],"cardassetid":197445,"cardsubtypeid":0,"contract":7,"definitionId":197445,"discardValue":1500,"fitness":99,"id":100000006,"itemState":"free","itemType":"player","leagueId":19,"nation":4,"owners":1,"playStyle":250,"preferredPosition":"LB","rareflag":1,"rating":87,"resourceId":197445,"teamid":21,"untradeable":true},"kitNumber":4},{"index":2,"itemData":{"assetId":155862,"attributeList":[{"index":0,"value":78},{"index":1,"value":63},{"index":2,"value":70},{"index":3,"value":70},{"index":4,"value":87},{"index":5,"value":83}],"cardassetid":155862,"cardsubtypeid":0,"contract":7,"definitionId":155862,"discardValue":1500,"fitness":99,"id":100000005,"itemState":"free","itemType":"player","leagueId":53,"nation":45,"owners":1,"playStyle":250,"preferredPosition":"CB","rareflag":1,"rating":89,"resourceId":155862,"teamid":243,"untradeable":true},"kitNumber":3},{"index":3,"itemData":{"assetId":182521,"attributeList":[{"index":0,"value":45},{"index":1,"value":80},{"index":2,"value":88},{"index":3,"value":79},{"index":4,"value":69},{"index":5,"value":70}],"cardassetid":182521,"cardsubtypeid":0,"contract":7,"definitionId":182521,"discardValue":1500,"fitness":99,"id":100000008,"itemState":"free","itemType":"player","leagueId":53,"nation":21,"owners":1,"playStyle":250,"preferredPosition":"CM","rareflag":1,"rating":88,"resourceId":182521,"teamid":243,"untradeable":true},"kitNumber":6},{"index":4,"itemData":{"assetId":189332,"attributeList":[{"index":0,"value":93},{"index":1,"value":69},{"index":2,"value":75},{"index":3,"value":83},{"index":4,"value":81},{"index":5,"value":75}],"cardassetid":189332,"cardsubtypeid":0,"contract":7,"definitionId":189332,"discardValue":1500,"fitness":99,"id":100000007,"itemState":"free","itemType":"player","leagueId":53,"nation":45,"owners":1,"playStyle":250,"preferredPosition":"LB","rareflag":1,"rating":86,"resourceId":189332,"teamid":241,"untradeable":true},"kitNumber":5},{"index":5,"itemData":{"assetId":158023,"attributeList":[{"index":0,"value":89},{"index":1,"value":90},{"index":2,"value":86},{"index":3,"value":96},{"index":4,"value":26},{"index":5,"value":61}],"cardassetid":158023,"cardsubtypeid":0,"contract":7,"definitionId":158023,"discardValue":1500,"fitness":99,"id":100000002,"itemState":"free","itemType":"player","leagueId":53,"nation":52,"owners":1,"playStyle":250,"preferredPosition":"RW","rareflag":1,"rating":93,"resourceId":158023,"teamid":241,"untradeable":true},"kitNumber":9},{"index":6,"itemData":{"assetId":183907,"attributeList":[{"index":0,"value":79},{"index":1,"value":50},{"i + +--- + +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 2 + +{}HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 82 + +{"auctionCount":0,"clubPlayers":1963,"tradePile":{"count":0,"selling":0,"sold":0}} + +--- + +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 82 + +{"auctionCount":0,"clubPlayers":1963,"tradePile":{"count":0,"selling":0,"sold":0}} + +--- + +HTTP/1.1 200 OK +server: BaseHTTP/0.6 Python/3.11.2 +date: Mon, 17 Aug 2026 03:54:53 GMT +content-type: application/json +Content-Length: 2 + +{}HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 134 + +{"credits":29859876,"currencies":[{"finalFunds":29859876,"funds":29859876,"name":"coins"},{"finalFunds":0,"funds":0,"name":"points"}]}HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 2563 + +{"purchase":[{"assetId":1,"currencies":[{"finalFunds":400,"funds":400,"name":"coins"}],"description":"Bronze Pack","displayGroup":{"value":"bronze"},"extPrice":{"finalPrice":{"amount":4,"currency":"mtx"},"originalPrice":{"amount":4,"currency":"mtx"}},"id":1,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":5,"goldQuantity":0,"itemQuantity":5,"rareQuantity":0,"silverQuantity":0},"packType":"BRONZE","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":1,"state":"active","unopened":false},{"assetId":5,"currencies":[{"finalFunds":5000,"funds":5000,"name":"coins"}],"description":"Gold Pack","displayGroup":{"value":"gold"},"extPrice":{"finalPrice":{"amount":50,"currency":"mtx"},"originalPrice":{"amount":50,"currency":"mtx"}},"id":5,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":0,"goldQuantity":7,"itemQuantity":7,"rareQuantity":7,"silverQuantity":0},"packType":"GOLD","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":2,"state":"active","unopened":false},{"assetId":6,"currencies":[{"finalFunds":15000,"funds":15000,"name":"coins"}],"description":"Premium Gold","displayGroup":{"value":"gold"},"extPrice":{"finalPrice":{"amount":150,"currency":"mtx"},"originalPrice":{"amount":150,"currency":"mtx"}},"id":6,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":0,"goldQuantity":11,"itemQuantity":11,"rareQuantity":11,"silverQuantity":0},"packType":"GOLD","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":3,"state":"active","unopened":false},{"assetId":7,"currencies":[{"finalFunds":25000,"funds":25000,"name":"coins"}],"description":"Special Players Pack","displayGroup":{"value":"special"},"extPrice":{"finalPrice":{"amount":250,"currency":"mtx"},"originalPrice":{"amount":250,"currency":"mtx"}},"id":7,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":0,"goldQuantity":11,"itemQuantity":11,"rareQuantity":11,"silverQuantity":0},"packType":"GOLD","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":4,"state":"active","unopened":false},{"assetId":65534,"description":"","displayGroup":{"priority":1,"value":"mypacks"},"id":65534,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":0,"goldQuantity":0,"itemQuantity":0,"rareQuantity":0,"silverQuantity":0},"packType":"GOLD","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":1,"state":"active","unopened":false}],"timestamp":1596326400} + +--- + +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 134 + +{"credits":29859876,"currencies":[{"finalFunds":29859876,"funds":29859876,"name":"coins"},{"finalFunds":0,"funds":0,"name":"points"}]}HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 2563 + +{"purchase":[{"assetId":1,"currencies":[{"finalFunds":400,"funds":400,"name":"coins"}],"description":"Bronze Pack","displayGroup":{"value":"bronze"},"extPrice":{"finalPrice":{"amount":4,"currency":"mtx"},"originalPrice":{"amount":4,"currency":"mtx"}},"id":1,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":5,"goldQuantity":0,"itemQuantity":5,"rareQuantity":0,"silverQuantity":0},"packType":"BRONZE","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":1,"state":"active","unopened":false},{"assetId":5,"currencies":[{"finalFunds":5000,"funds":5000,"name":"coins"}],"description":"Gold Pack","displayGroup":{"value":"gold"},"extPrice":{"finalPrice":{"amount":50,"currency":"mtx"},"originalPrice":{"amount":50,"currency":"mtx"}},"id":5,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":0,"goldQuantity":7,"itemQuantity":7,"rareQuantity":7,"silverQuantity":0},"packType":"GOLD","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":2,"state":"active","unopened":false},{"assetId":6,"currencies":[{"finalFunds":15000,"funds":15000,"name":"coins"}],"description":"Premium Gold","displayGroup":{"value":"gold"},"extPrice":{"finalPrice":{"amount":150,"currency":"mtx"},"originalPrice":{"amount":150,"currency":"mtx"}},"id":6,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":0,"goldQuantity":11,"itemQuantity":11,"rareQuantity":11,"silverQuantity":0},"packType":"GOLD","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":3,"state":"active","unopened":false},{"assetId":7,"currencies":[{"finalFunds":25000,"funds":25000,"name":"coins"}],"description":"Special Players Pack","displayGroup":{"value":"special"},"extPrice":{"finalPrice":{"amount":250,"currency":"mtx"},"originalPrice":{"amount":250,"currency":"mtx"}},"id":7,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":0,"goldQuantity":11,"itemQuantity":11,"rareQuantity":11,"silverQuantity":0},"packType":"GOLD","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":4,"state":"active","unopened":false},{"assetId":65534,"description":"","displayGroup":{"priority":1,"value":"mypacks"},"id":65534,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":0,"goldQuantity":0,"itemQuantity":0,"rareQuantity":0,"silverQuantity":0},"packType":"GOLD","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":1,"state":"active","unopened":false}],"timestamp":1596326400} + +--- + +HTTP/1.1 200 OK +Content-Type: application/json +Content-Length: 2563 + +{"purchase":[{"assetId":1,"currencies":[{"finalFunds":400,"funds":400,"name":"coins"}],"description":"Bronze Pack","displayGroup":{"value":"bronze"},"extPrice":{"finalPrice":{"amount":4,"currency":"mtx"},"originalPrice":{"amount":4,"currency":"mtx"}},"id":1,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":5,"goldQuantity":0,"itemQuantity":5,"rareQuantity":0,"silverQuantity":0},"packType":"BRONZE","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":1,"state":"active","unopened":false},{"assetId":5,"currencies":[{"finalFunds":5000,"funds":5000,"name":"coins"}],"description":"Gold Pack","displayGroup":{"value":"gold"},"extPrice":{"finalPrice":{"amount":50,"currency":"mtx"},"originalPrice":{"amount":50,"currency":"mtx"}},"id":5,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":0,"goldQuantity":7,"itemQuantity":7,"rareQuantity":7,"silverQuantity":0},"packType":"GOLD","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":2,"state":"active","unopened":false},{"assetId":6,"currencies":[{"finalFunds":15000,"funds":15000,"name":"coins"}],"description":"Premium Gold","displayGroup":{"value":"gold"},"extPrice":{"finalPrice":{"amount":150,"currency":"mtx"},"originalPrice":{"amount":150,"currency":"mtx"}},"id":6,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":0,"goldQuantity":11,"itemQuantity":11,"rareQuantity":11,"silverQuantity":0},"packType":"GOLD","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":3,"state":"active","unopened":false},{"assetId":7,"currencies":[{"finalFunds":25000,"funds":25000,"name":"coins"}],"description":"Special Players Pack","displayGroup":{"value":"special"},"extPrice":{"finalPrice":{"amount":250,"currency":"mtx"},"originalPrice":{"amount":250,"currency":"mtx"}},"id":7,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":0,"goldQuantity":11,"itemQuantity":11,"rareQuantity":11,"silverQuantity":0},"packType":"GOLD","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":4,"state":"active","unopened":false},{"assetId":65534,"description":"","displayGroup":{"priority":1,"value":"mypacks"},"id":65534,"isPremium":false,"limitType":"NONE","packContentInfo":{"bronzeQuantity":0,"goldQuantity":0,"itemQuantity":0,"rareQuantity":0,"silverQuantity":0},"packType":"GOLD","purchaseCount":0,"purchaseLimit":0,"quantity":0,"saleType":"promo","sortPriority":1,"state":"active","unopened":false}],"timestamp":1596326400} \ No newline at end of file