Last active 1618884604

Life Is Strange stats server investigation

Steven Smith revised this gist 1486727057. Go to revision

1 file changed, 2 insertions

docs.md

@@ -7,6 +7,8 @@
7 7
8 8 In the below documentation, all requests return `{ "d": something }` (except the ones that don't), so everything outside of `something` will be omitted.
9 9
10 + API url: https://lis.os.eidos.com/
11 +
10 12 Necessary headers for each request (may vary, untested):
11 13
12 14 * `Accept: application/json`, otherwise the API returns XML (obviously if you're fine with that you can omit this)

Steven Smith revised this gist 1486432598. Go to revision

1 file changed, 1 insertion, 1 deletion

revlis.md

@@ -38,7 +38,7 @@ First, you'll need a copy of Life Is Strange on Steam. Second, you'll need to ha
38 38
39 39 If only the stats server communications weren't encrypted, would have been a lot easier.
40 40
41 - I'm not sure how initial authentication works, the game sends an OS-AuthTicketData header with a string of characters, maybe each copy of the game has a unique auth ticket. It also requests user location data via an IP info lookup (/game/os\_GetServiceInfo) and sends your friends list in the form of a list of user IDs (/game/SetUserProfileFriends), presumably for the friend stats response (/game/GetFriendsProfileStats) but this currently returns nothing. The main thing I'm interested in is /game/CommunityFactsGetEpisode, which takes a query param of i16\_episode={episode number} and returns json:
41 + I'm not sure how initial authentication works, the game sends an OS-AuthTicketData header with a string of characters, ~~maybe each copy of the game has a unique auth ticket~~ confirmed to be static at least for PC Linux releases. It also requests user location data via an IP info lookup (/game/os\_GetServiceInfo) and sends your friends list in the form of a list of user IDs (/game/SetUserProfileFriends), presumably for the friend stats response (/game/GetFriendsProfileStats) but this currently returns nothing. The main thing I'm interested in is /game/CommunityFactsGetEpisode, which takes a query param of i16\_episode={episode number} and returns json:
42 42
43 43 "d" : {
44 44 "results" : [

Steven Smith revised this gist 1471625717. Go to revision

1 file changed, 1 insertion, 1 deletion

docs.md

@@ -11,7 +11,7 @@ Necessary headers for each request (may vary, untested):
11 11
12 12 * `Accept: application/json`, otherwise the API returns XML (obviously if you're fine with that you can omit this)
13 13 * `OS-AuthProvider: 6`, unsure of the purpose of this
14 - * `OS-AuthTicketData: [string]`, begins with CAEQ on my copy of the game, unsure if variable
14 + * `OS-AuthTicketData: [string]`, begins with CAEQ on my copy of the game, CONFIRMED static between copies of the game (at least PC linux)
15 15 * `OS-AuthTicketSize: 44`, the length of the above string
16 16 * `OS-UID: [string]`, steam user ID, or some other form of identification in standalone versions probably
17 17 * `OS-Platform: steam`, the user's platform, needs more testing to get options

blha303 revised this gist 1470238290. Go to revision

1 file changed, 32 deletions

docs.md

@@ -104,37 +104,5 @@ Making me listen to Obstacles again >_<
104 104 * JSON data, https://gist.github.com/blha303/144499eeb67dface9a83371c17f9513b
105 105 * Returns `0`, maybe means profile isn't updated when the given UID has already completed the given chapter
106 106
107 - ### Other public endpoints
108 -
109 - * `/game/CommunityFactsGetAll`
110 - * Returns all choice stats
111 - * Returns a similar output to CommunityFactsGetEpisode, but with all five episodes
112 -
113 - * `/game/GetSpecialFlag`
114 - * Query param: `i32_episode`, episode number
115 - * Returns `{ "__metadata" : {"uri" : "https://lis.os.eidos.com/game/offlinespecialfeatures(1)", "type" : "game.offlinespecialfeature"}, "i32_episode" : 1, "b_lipsync_active" : false }`
116 -
117 - * `/game/os_GetStatus`
118 - * Returns `{ "__metadata" : {"type" : "game.ClientInfo"}, "Host" : "lis.os.eidos.com", "ClientIP" : "<ip>", "UserAgent" : "OS/5.0.22/linux/official", "ServerTime" : 1470229891040, "ServletVersion" : "3.0.8" }`
119 -
120 - * `/game/os_GetChangeLog`
121 - * Returns the changelog for the LIS backend. I mean, wow.
122 - * Returns https://gist.github.com/blha303/0f53a12d65f8450c4aa522843df922aa
123 -
124 - * `/game/os_GetChangeLogHTML`
125 - * Returns the changelog in HTML
126 - * Returns https://ptpb.pw/MTw-.html
127 -
128 - * `/game/os_GetGeoLocation`
129 - * Returns `"os_GetGeoLocation" : { "__metadata" : {"type" : "game.GeoLocation"}, "s_countryCode" : "US", "s_cityName" : "Beverley Hills", "s_region" : "555", "s_zipCode" : "", "f_latitude" : "0.0f", "f_longitude" : "0.0f", "i32_metroCode" : 0, "i32_areaCode" : 0 }`
130 -
131 - * `/game/Steam_GetUserInfo`
132 - * Probably needs additional authentication.
133 - * `Returns { "__metadata" : {"uri" : "https://lis.os.eidos.com/game/ossteamresponses('76561197994805502')", "type" : "game.ossteamresponse"}, "s_uid" : "76561197994805502", "i32_errorCode" : 403, "s_errorDesc" : "Forbidden", "s_state" : "", "s_country" : "", "s_currency" : "", "s_status" : "" }`
134 -
135 - * `/game/GetUserProfileGameSpecific`
136 - * Returns a user's friends list and the info of their last UpdateUserProfileGameSpecific submission. Possible privacy hole
137 - * Returns https://gist.github.com/blha303/9d4d4429137541be5a8771ac616b4d85
138 -
139 107 Other endpoints: https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-zgenerateddocs-md
140 108

blha303 revised this gist 1470237500. Go to revision

4 files changed, 34 insertions, 31 deletions

docs.md

@@ -2,13 +2,10 @@
2 2
3 3 * [Docs](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-docs-md)
4 4 * [Setting up capture process](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-revlis-md)
5 - * [Investigating what headers were necessary](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-whats-needed-md)
5 + * [Automatically generated API documentation (inaccurate)](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-zgenerateddocs-md)
6 + * [Script to generate API documentation](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-zgeneratedocs-py)
6 7
7 - The server returns `X-Powered-By: Lara Croft` for each response, cool easter egg.
8 -
9 - ### On game start
10 -
11 - The game sends several requests in the opening videos. In the below documentation, all requests have `{ "d": something }`, so everything outside of `something` will be omitted.
8 + In the below documentation, all requests return `{ "d": something }` (except the ones that don't), so everything outside of `something` will be omitted.
12 9
13 10 Necessary headers for each request (may vary, untested):
14 11
@@ -20,6 +17,27 @@ Necessary headers for each request (may vary, untested):
20 17 * `OS-Platform: steam`, the user's platform, needs more testing to get options
21 18 * `OS-System: linux`, ditto
22 19
20 + Optional headers:
21 +
22 + * `DataServiceVersion: 2.0`
23 + * `MaxDataServiceVersion: 2.0`
24 + * `OS-Age: 0`
25 + * `OS-Build: localBuild`
26 + * `OS-GTime: 84`
27 + * `OS-Locale: en,XX,XX,`
28 + * `OS-MAC: xx-xx-xx-xx-xx-xx`
29 + * `OS-OSVersion: 5.0.22.82369`, unsure what this is, it's not kernel version
30 + * `OS-PID: LiS-v1.0.0.397609`
31 + * `OS-Progress: 0.00000000000000000`, lol
32 + * `OS-SID: [uuid]`
33 + * `OS-STime: 5713`
34 + * `OS-XYZ: 135.95315551757812500,-130.51196289062500000,97.04180908203125000`
35 + * `OS-Zone: E0_Menu`, the game seems to send ingame location with every request
36 +
37 + ### On game start
38 +
39 + The game sends several requests in the opening videos.
40 +
23 41 1. `/game/os_Ping`
24 42 * Likely confirming that the service is up
25 43 * Returns `{"os_Ping": 6739}`, different number each time
@@ -118,6 +136,5 @@ Making me listen to Obstacles again >_<
118 136 * Returns a user's friends list and the info of their last UpdateUserProfileGameSpecific submission. Possible privacy hole
119 137 * Returns https://gist.github.com/blha303/9d4d4429137541be5a8771ac616b4d85
120 138
121 - ### Unknown/restricted endpoints
122 -
139 + Other endpoints: https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-zgenerateddocs-md
123 140

revlis.md

@@ -2,7 +2,8 @@
2 2
3 3 * [Docs](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-docs-md)
4 4 * [Setting up capture process](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-revlis-md)
5 - * [Investigating what headers were necessary](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-whats-needed-md)
5 + * [Automatically generated API documentation (inaccurate)](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-zgenerateddocs-md)
6 + * [Script to generate API documentation](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-zgeneratedocs-py)
6 7
7 8 Hello! Today I thought I'd take on the task of reverse engineering the stats screen in Life Is Strange so I could easily request and display the data without needing to start the game. I'm documenting it here for future use, since nobody else seems to have tried this yet.
8 9

whats-needed.md (file deleted)

@@ -1,22 +0,0 @@
1 - ## Contents
2 -
3 - * [Docs](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-docs-md)
4 - * [Setting up capture process](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-revlis-md)
5 - * [Investigating what headers were necessary](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-whats-needed-md)
6 -
7 - Logging tests for what headers are necessary.
8 -
9 - ```
10 - $ curl https://lis.os.eidos.com/game/CommunityFactsGetEpisode?i16_episode=3
11 - {"s_ErrorsCodes":"501","s_ErrorsMessages":"Invalid","s_ErrorsDetails":"Missing mandatory authentication headers: (OS-AuthProvider)."}
12 - $ curl -H "Accept: application/json" -H "OS-AuthProvider: 6" https://lis.os.eidos.com/game/CommunityFactsGetEpisode?i16_episode=3
13 - {"s_ErrorsCodes":"501","s_ErrorsMessages":"Invalid","s_ErrorsDetails":"Missing mandatory authentication headers: (OS-AuthTicketSize, OS-AuthTicketData|OS-AuthTokenData)."}
14 - $ curl -H "Accept: application/json" -H "OS-AuthProvider: 6" -H "OS-AuthTicketData: [redacted]" -H "OS-AuthTicketSize: 44" https://lis.os.eidos.com/game/CommunityFactsGetEpisode?i16_episode=3
15 - {"s_ErrorsCodes":"501","s_ErrorsMessages":"Invalid","s_ErrorsDetails":"No UID header found."}
16 - $ curl -H "Accept: application/json" -H "OS-AuthProvider: 6" -H "OS-AuthTicketData: [redacted]" -H "OS-AuthTicketSize: 44" -H "OS-UID: [redacted]" https://lis.os.eidos.com/game/CommunityFactsGetEpisode?i16_episode=3
17 - {"s_ErrorsCodes":"801","s_ErrorsMessages":"Missing Header","s_ErrorsDetails":"HTTP header OS-Platform is required."}
18 - $ curl -H "Accept: application/json" -H "OS-AuthProvider: 6" -H "OS-AuthTicketData: [redacted]" -H "OS-AuthTicketSize: 44" -H "OS-UID: [redacted]" -H "OS-Platform: steam" https://lis.os.eidos.com/game/CommunityFactsGetEpisode?i16_episode=3
19 - {"s_ErrorsCodes":"800","s_ErrorsMessages":"Invalid Header","s_ErrorsDetails":"Header OS-Platform=steam and header OS-System=null are not compatible. Either neither value or both values must be specified. If both values are specified, they must be compatible with eachother."}
20 - $ curl -H "Accept: application/json" -H "OS-AuthProvider: 6" -H "OS-AuthTicketData: [redacted]" -H "OS-AuthTicketSize: 44" -H "OS-UID: [redacted]" -H "OS-Platform: steam" -H "OS-System: linux" https://lis.os.eidos.com/game/CommunityFactsGetEpisode?i16_episode=3
21 - {"d" : {"results" : [{"__metadata" : {"uri" : "https://lis.os.eidos.com/game/communityfactreturns('AddedNameToVortex')", "type" : "game.communityfactreturn"}, "f_rate" : "0.610894941634241", "i64_totalCount" : 514, "i64_trueCount" : 314, "i16_ep" : 3, "s_factID" : "AddedNameToVortex"}, ...
22 - ```

zGeneratedDocs.md

@@ -1,3 +1,10 @@
1 + ## Contents
2 +
3 + * [Docs](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-docs-md)
4 + * [Setting up capture process](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-revlis-md)
5 + * [Automatically generated API documentation (inaccurate)](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-zgenerateddocs-md)
6 + * [Script to generate API documentation](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-zgeneratedocs-py)
7 +
1 8 These docs aren't entirely accurate. Some things are in the wrong AuthPolicy category, some things say they return nothing when they do return something. But then, since when are any internal docs accurate, right? :P
2 9
3 10

blha303 revised this gist 1470233556. Go to revision

1 file changed, 166 insertions, 860 deletions

zGeneratedDocs.md

@@ -1,9 +1,143 @@
1 - ### Policy.ANY
2 - * `/game/AddMetric`
1 + These docs aren't entirely accurate. Some things are in the wrong AuthPolicy category, some things say they return nothing when they do return something. But then, since when are any internal docs accurate, right? :P
2 +
3 +
4 + ### Policy.OS
5 + * `/game/CalculateCommunityProfileStats`
6 + * Returns Edm.Int32
7 + * `/game/CalculateFriendsProfileStats`
8 + * Returns Edm.Int32
9 + * `/game/UpdateAvailableEpisodeOfferId`
10 + * Query params: `s_region`, Edm.String; `i32_episode`, Edm.Int32
11 + * Returns Edm.String
12 + * `/game/os_GetMonitoring`
13 + * Returns game.ServerStatus
14 + * `/game/os_GetOptions`
15 + * Returns game.Options
16 + * `/game/os_SetOptions`
17 + * Query params: `name`, Edm.String; `value`, Edm.String
18 + * Returns game.Options
19 + * `/game/ClearCache`
20 + * Query params: `s_Name`, Edm.String
21 + * Returns Edm.String
22 + * `/game/os_NotificationExpired`
23 + * Query params: `s_id`, Edm.String; `i32_type`, Edm.Int32; `s_message`, Edm.String; `s_platform`, Edm.String; `s_sender`, Edm.String
3 24 * Returns nothing
4 - * `/game/AddMetrics`
25 + * `/game/DeleteUserProfile`
26 + * Query params: `s_uid`, Edm.String
27 + * Returns Edm.Boolean
28 + * `/game/GetUserProfileGlobal`
29 + * Query params: `s_uid`, Edm.String
30 + * Returns game.userprofile
31 + * `/game/os_GetUserProfileGlobal`
32 + * Query params: `s_uid`, Edm.String
33 + * Returns game.userprofile
34 + * `/game/UpdateUserProfileGlobal`
35 + * Query params: `s_uid`, Edm.String
36 + * POST request
37 + * Returns Edm.Int32
38 + * `/game/os_UpdateUserProfileGlobal`
39 + * Query params: `s_uid`, Edm.String
40 + * POST request
41 + * Returns Edm.Int32
42 + * `/game/GetUserProfilePlatform`
43 + * Query params: `s_uid`, Edm.String
44 + * Returns game.userprofile
45 + * `/game/os_GetUserProfilePlatform`
46 + * Query params: `s_uid`, Edm.String
47 + * Returns game.userprofile
48 + * `/game/UpdateUserProfilePlatform`
49 + * Query params: `s_uid`, Edm.String
50 + * POST request
51 + * Returns Edm.Int32
52 + * `/game/os_UpdateUserProfilePlatform`
53 + * Query params: `s_uid`, Edm.String
54 + * POST request
55 + * Returns Edm.Int32
56 + * `/game/GetUserProfileFranchise`
57 + * Query params: `s_uid`, Edm.String
58 + * Returns game.userprofile
59 + * `/game/os_GetUserProfileFranchise`
60 + * Query params: `s_uid`, Edm.String
61 + * Returns game.userprofile
62 + * `/game/UpdateUserProfileFranchise`
63 + * Query params: `s_uid`, Edm.String
64 + * POST request
65 + * Returns Edm.Int32
66 + * `/game/os_UpdateUserProfileFranchise`
67 + * Query params: `s_uid`, Edm.String
68 + * POST request
69 + * Returns Edm.Int32
70 + * `/game/GetUserProfileGameGeneric`
71 + * Query params: `s_uid`, Edm.String
72 + * Returns game.userprofile
73 + * `/game/os_GetUserProfileGameGeneric`
74 + * Query params: `s_uid`, Edm.String
75 + * Returns game.userprofile
76 + * `/game/UpdateUserProfileGameGeneric`
77 + * Query params: `s_uid`, Edm.String
78 + * POST request
79 + * Returns Edm.Int32
80 + * `/game/os_UpdateUserProfileGameGeneric`
81 + * Query params: `s_uid`, Edm.String
82 + * POST request
83 + * Returns Edm.Int32
84 + * `/game/ValidateSEM`
85 + * Returns Edm.Boolean
86 + * `/game/os_BackupUserProfiles`
87 + * Returns Edm.Int32
88 + * `/game/os_TestCache`
89 + * Query params: `s_cacheName`, Edm.String
90 + * Returns Edm.String
91 +
92 + ### Policy.GAMESEE
93 + * `/game/GetSpecialFlag`
94 + * Query params: `i32_episode`, Edm.Int32
95 + * Returns game.offlinespecialfeature
96 + * `/game/os_SendNotification`
97 + * Query params: `s_sender`, Edm.String; `i32_type`, Edm.Int32; `s_platform`, Edm.String; `i64_lifespan`, Edm.Int64
5 98 * POST request
6 99 * Returns nothing
100 + * `/game/os_TranslatePlatformIds`
101 + * POST request
102 + * Returns Collection(game.PlatformIDInfo)
103 + * `/game/osGetConsumablesInfo`
104 + * Query params: `s_uid`, Edm.String
105 + * Returns Edm.String
106 + * `/game/Steam_GetUserInfo`
107 + * Query params: `s_uid`, Edm.String
108 + * Returns game.ossteamresponse
109 + * `/game/os_GetLastMetrics`
110 + * Query params: `i32_n`, Edm.Int32
111 + * Returns Collection(game.os_metric)
112 + * `/game/os_GetMetric`
113 + * Query params: `s_uuid`, Edm.String
114 + * Returns game.os_metric
115 + * `/game/GetUserProfileGameSpecific`
116 + * Query params: `s_uid`, Edm.String
117 + * Returns game.userprofile
118 + * `/game/os_GetUserProfileGameSpecific`
119 + * Query params: `s_uid`, Edm.String
120 + * Returns game.userprofile
121 + * `/game/GetUserProfileCountry`
122 + * Query params: `s_uid`, Edm.String
123 + * Returns Edm.String
124 + * `/game/os_GetUserProfileCountry`
125 + * Query params: `s_uid`, Edm.String
126 + * Returns Edm.String
127 + * `/game/UpdateSEMinfo`
128 + * Query params: `s_semid`, Edm.String
129 + * POST request
130 + * Returns Edm.Boolean
131 + * `/game/DeleteSEMinfo`
132 + * Query params: `s_semid`, Edm.String
133 + * Returns Edm.Boolean
134 + * `/game/LinkToSEM`
135 + * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
136 + * Returns Edm.Boolean
137 + * `/game/UnlinkFromSEM`
138 + * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
139 + * Returns Edm.Boolean
140 +
7 141 ### Policy.SEE
8 142 * `/game/UpdateInfocastMessages`
9 143 * Query params: `_id`, Edm.String; `s_Type`, Edm.String; `s_DateBegin`, Edm.String; `s_DateEnd`, Edm.String; `i16_episode`, Edm.Int32
@@ -98,6 +232,35 @@
98 232 * `/game/os_CheckABTestConsistency`
99 233 * Query params: `s_abtest`, Edm.String
100 234 * Returns Edm.String
235 +
236 + ### Policy.ANY
237 + * `/game/AddMetric`
238 + * Returns nothing
239 + * `/game/AddMetrics`
240 + * POST request
241 + * Returns nothing
242 +
243 + ### Policy.PUBLIC
244 + * `/game/GetTodaysInfocast`
245 + * Query params: `s_locale`, Edm.String; `i16_episode`, Edm.Int32
246 + * Returns Collection(game.infocast)
247 + * `/game/os_GetStatus`
248 + * Returns game.ClientInfo
249 + * `/game/os_GetServiceInfo`
250 + * Returns nothing
251 + * `/game/os_GetChangeLog`
252 + * Returns nothing
253 + * `/game/os_GetChangeLogHTML`
254 + * Returns nothing
255 + * `/game/os_Ping`
256 + * Returns Edm.Int64
257 + * `/game/SEM_Login`
258 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
259 + * Returns game.SEMSubmit
260 + * `/game/SEM_SubmitEmail`
261 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
262 + * Returns game.SEMSubmit
263 +
101 264 ### Policy.GAME
102 265 * `/game/UpdateUserProfileGameSpecific`
103 266 * Query params: `s_uid`, Edm.String
@@ -187,860 +350,3 @@
187 350 * `/game/PS4_GetFriendList`
188 351 * Query params: `s_uid`, Edm.String
189 352 * Returns Edm.String
190 - ### Policy.GAMESEE
191 - * `/game/GetSpecialFlag`
192 - * Query params: `i32_episode`, Edm.Int32
193 - * Returns game.offlinespecialfeature
194 - * `/game/os_SendNotification`
195 - * Query params: `s_sender`, Edm.String; `i32_type`, Edm.Int32; `s_platform`, Edm.String; `i64_lifespan`, Edm.Int64
196 - * POST request
197 - * Returns nothing
198 - * `/game/os_TranslatePlatformIds`
199 - * POST request
200 - * Returns Collection(game.PlatformIDInfo)
201 - * `/game/osGetConsumablesInfo`
202 - * Query params: `s_uid`, Edm.String
203 - * Returns Edm.String
204 - * `/game/Steam_GetUserInfo`
205 - * Query params: `s_uid`, Edm.String
206 - * Returns game.ossteamresponse
207 - * `/game/os_GetLastMetrics`
208 - * Query params: `i32_n`, Edm.Int32
209 - * Returns Collection(game.os_metric)
210 - * `/game/os_GetMetric`
211 - * Query params: `s_uuid`, Edm.String
212 - * Returns game.os_metric
213 - * `/game/GetUserProfileGameSpecific`
214 - * Query params: `s_uid`, Edm.String
215 - * Returns game.userprofile
216 - * `/game/os_GetUserProfileGameSpecific`
217 - * Query params: `s_uid`, Edm.String
218 - * Returns game.userprofile
219 - * `/game/GetUserProfileCountry`
220 - * Query params: `s_uid`, Edm.String
221 - * Returns Edm.String
222 - * `/game/os_GetUserProfileCountry`
223 - * Query params: `s_uid`, Edm.String
224 - * Returns Edm.String
225 - * `/game/UpdateSEMinfo`
226 - * Query params: `s_semid`, Edm.String
227 - * POST request
228 - * Returns Edm.Boolean
229 - * `/game/DeleteSEMinfo`
230 - * Query params: `s_semid`, Edm.String
231 - * Returns Edm.Boolean
232 - * `/game/LinkToSEM`
233 - * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
234 - * Returns Edm.Boolean
235 - * `/game/UnlinkFromSEM`
236 - * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
237 - * Returns Edm.Boolean
238 - ### Policy.OS
239 - * `/game/CalculateCommunityProfileStats`
240 - * Returns Edm.Int32
241 - * `/game/CalculateFriendsProfileStats`
242 - * Returns Edm.Int32
243 - * `/game/UpdateAvailableEpisodeOfferId`
244 - * Query params: `s_region`, Edm.String; `i32_episode`, Edm.Int32
245 - * Returns Edm.String
246 - * `/game/os_GetMonitoring`
247 - * Returns game.ServerStatus
248 - * `/game/os_GetOptions`
249 - * Returns game.Options
250 - * `/game/os_SetOptions`
251 - * Query params: `name`, Edm.String; `value`, Edm.String
252 - * Returns game.Options
253 - * `/game/ClearCache`
254 - * Query params: `s_Name`, Edm.String
255 - * Returns Edm.String
256 - * `/game/os_NotificationExpired`
257 - * Query params: `s_id`, Edm.String; `i32_type`, Edm.Int32; `s_message`, Edm.String; `s_platform`, Edm.String; `s_sender`, Edm.String
258 - * Returns nothing
259 - * `/game/DeleteUserProfile`
260 - * Query params: `s_uid`, Edm.String
261 - * Returns Edm.Boolean
262 - * `/game/GetUserProfileGlobal`
263 - * Query params: `s_uid`, Edm.String
264 - * Returns game.userprofile
265 - * `/game/os_GetUserProfileGlobal`
266 - * Query params: `s_uid`, Edm.String
267 - * Returns game.userprofile
268 - * `/game/UpdateUserProfileGlobal`
269 - * Query params: `s_uid`, Edm.String
270 - * POST request
271 - * Returns Edm.Int32
272 - * `/game/os_UpdateUserProfileGlobal`
273 - * Query params: `s_uid`, Edm.String
274 - * POST request
275 - * Returns Edm.Int32
276 - * `/game/GetUserProfilePlatform`
277 - * Query params: `s_uid`, Edm.String
278 - * Returns game.userprofile
279 - * `/game/os_GetUserProfilePlatform`
280 - * Query params: `s_uid`, Edm.String
281 - * Returns game.userprofile
282 - * `/game/UpdateUserProfilePlatform`
283 - * Query params: `s_uid`, Edm.String
284 - * POST request
285 - * Returns Edm.Int32
286 - * `/game/os_UpdateUserProfilePlatform`
287 - * Query params: `s_uid`, Edm.String
288 - * POST request
289 - * Returns Edm.Int32
290 - * `/game/GetUserProfileFranchise`
291 - * Query params: `s_uid`, Edm.String
292 - * Returns game.userprofile
293 - * `/game/os_GetUserProfileFranchise`
294 - * Query params: `s_uid`, Edm.String
295 - * Returns game.userprofile
296 - * `/game/UpdateUserProfileFranchise`
297 - * Query params: `s_uid`, Edm.String
298 - * POST request
299 - * Returns Edm.Int32
300 - * `/game/os_UpdateUserProfileFranchise`
301 - * Query params: `s_uid`, Edm.String
302 - * POST request
303 - * Returns Edm.Int32
304 - * `/game/GetUserProfileGameGeneric`
305 - * Query params: `s_uid`, Edm.String
306 - * Returns game.userprofile
307 - * `/game/os_GetUserProfileGameGeneric`
308 - * Query params: `s_uid`, Edm.String
309 - * Returns game.userprofile
310 - * `/game/UpdateUserProfileGameGeneric`
311 - * Query params: `s_uid`, Edm.String
312 - * POST request
313 - * Returns Edm.Int32
314 - * `/game/os_UpdateUserProfileGameGeneric`
315 - * Query params: `s_uid`, Edm.String
316 - * POST request
317 - * Returns Edm.Int32
318 - * `/game/ValidateSEM`
319 - * Returns Edm.Boolean
320 - * `/game/os_BackupUserProfiles`
321 - * Returns Edm.Int32
322 - * `/game/os_TestCache`
323 - * Query params: `s_cacheName`, Edm.String
324 - * Returns Edm.String
325 - ### Policy.PUBLIC
326 - * `/game/GetTodaysInfocast`
327 - * Query params: `s_locale`, Edm.String; `i16_episode`, Edm.Int32
328 - * Returns Collection(game.infocast)
329 - * `/game/os_GetStatus`
330 - * Returns game.ClientInfo
331 - * `/game/os_GetServiceInfo`
332 - * Returns nothing
333 - * `/game/os_GetChangeLog`
334 - * Returns nothing
335 - * `/game/os_GetChangeLogHTML`
336 - * Returns nothing
337 - * `/game/os_Ping`
338 - * Returns Edm.Int64
339 - * `/game/SEM_Login`
340 - * Query params: `s_type`, Edm.String; `s_value`, Edm.String
341 - * Returns game.SEMSubmit
342 - * `/game/SEM_SubmitEmail`
343 - * Query params: `s_type`, Edm.String; `s_value`, Edm.String
344 - * Returns game.SEMSubmit
345 -
346 - ### Policy.GAME
347 - * `/game/UpdateUserProfileGameSpecific`
348 - * Query params: `s_uid`, Edm.String
349 - * POST request
350 - * Returns Edm.Int32
351 - * `/game/SetUserProfileFriends`
352 - * Query params: `s_uid`, Edm.String
353 - * POST request
354 - * Returns Edm.Int32
355 - * `/game/CommunityFactsGetEpisode`
356 - * Query params: `i16_episode`, Edm.Int32
357 - * Returns Collection(game.communityfactreturn)
358 - * `/game/CommunityFactsGetAll`
359 - * Returns Collection(game.communityfactreturn)
360 - * `/game/GetFriendsProfileStats`
361 - * Query params: `s_uid`, Edm.String; `i16_episode`, Edm.Int32
362 - * Returns Collection(game.communityfactreturn)
363 - * `/game/GetSeasonPassOfferIdList`
364 - * Query params: `s_region`, Edm.String
365 - * Returns Collection(game.offerid)
366 - * `/game/SetUserProfileGameSpecific`
367 - * Query params: `s_uid`, Edm.String
368 - * POST request
369 - * Returns Edm.Int32
370 - * `/game/os_GetPlayer`
371 - * Query params: `UID`, Edm.String
372 - * Returns game.os_player
373 - * `/game/os_GetGeoLocation`
374 - * Returns game.GeoLocation
375 - * `/game/SEM_DeleteUser`
376 - * Query params: `s_type`, Edm.String; `s_value`, Edm.String
377 - * Returns game.Result
378 - * `/game/SEM_UnlinkPlayer`
379 - * Query params: `s_type`, Edm.String; `s_value`, Edm.String
380 - * Returns game.Result
381 - * `/game/SEM_GetLinkedAccounts`
382 - * Query params: `s_type`, Edm.String; `s_value`, Edm.String
383 - * Returns Collection(game.SEMLinkedAccount)
384 - * `/game/FB_PostToWall`
385 - * Query params: `s_facebookID`, Edm.String
386 - * POST request
387 - * Returns game.Result
388 - * `/game/FB_PostImageToWall`
389 - * Query params: `s_facebookID`, Edm.String; `s_imageName`, Edm.String; `s_linkName`, Edm.String; `s_linkCaption`, Edm.String; `s_linkDescription`, Edm.String
390 - * POST request
391 - * Returns game.Result
392 - * `/game/osNewTransaction`
393 - * Query params: `s_uid`, Edm.String; `s_offerIds`, Edm.String
394 - * Returns game.txninfo
395 - * `/game/osCreateCustomTransaction`
396 - * Query params: `s_uid`, Edm.String
397 - * POST request
398 - * Returns game.txninfo
399 - * `/game/osFinalizeTransaction`
400 - * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64
401 - * Returns game.txninfo
402 - * `/game/osCancelTransaction`
403 - * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64; `i32_reason`, Edm.Int32
404 - * Returns game.txninfo
405 - * `/game/osPreTransferTransaction`
406 - * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64
407 - * POST request
408 - * Returns game.txninfo
409 - * `/game/osGetIncompleteTransaction`
410 - * Query params: `s_uid`, Edm.String
411 - * Returns Collection(game.txninfo)
412 - * `/game/CreateUserProfile`
413 - * Query params: `s_uid`, Edm.String
414 - * Returns Edm.Boolean
415 - * `/game/os_CreateUserProfile`
416 - * Query params: `s_uid`, Edm.String
417 - * Returns Edm.Int32
418 - * `/game/os_SetUserProfileGameSpecific`
419 - * Query params: `s_uid`, Edm.String
420 - * POST request
421 - * Returns Edm.Int32
422 - * `/game/os_UpdateUserProfileGameSpecific`
423 - * Query params: `s_uid`, Edm.String
424 - * POST request
425 - * Returns Edm.Int32
426 - * `/game/SetUserProfileCountry`
427 - * Query params: `s_uid`, Edm.String; `s_country`, Edm.String
428 - * Returns Edm.Boolean
429 - * `/game/os_SetUserProfileCountry`
430 - * Query params: `s_uid`, Edm.String; `s_country`, Edm.String
431 - * Returns Edm.Boolean
432 - * `/game/PS4_GetFriendList`
433 - * Query params: `s_uid`, Edm.String
434 - * Returns Edm.String
435 -
436 - ### Policy.SEE
437 - * `/game/UpdateInfocastMessages`
438 - * Query params: `_id`, Edm.String; `s_Type`, Edm.String; `s_DateBegin`, Edm.String; `s_DateEnd`, Edm.String; `i16_episode`, Edm.Int32
439 - * POST request
440 - * Returns Edm.Boolean
441 - * `/game/DeleteInfocastMessages`
442 - * Query params: `_id`, Edm.String
443 - * Returns Edm.Boolean
444 - * `/game/GetInfocastMessages`
445 - * Returns Collection(game.infocast)
446 - * `/game/EnableSpecialFlag`
447 - * Query params: `i32_episode`, Edm.Int32; `b_enable`, Edm.Boolean
448 - * POST request
449 - * Returns Edm.Boolean
450 - * `/game/AddInfocastMessages`
451 - * Query params: `s_Type`, Edm.String; `s_DateBegin`, Edm.String; `s_DateEnd`, Edm.String; `i16_episode`, Edm.Int32
452 - * POST request
453 - * Returns Edm.String
454 - * `/game/os_CreateSegment`
455 - * Query params: `s_segment`, Edm.String
456 - * POST request
457 - * Returns Edm.String
458 - * `/game/os_GetSegmentMetadata`
459 - * Query params: `s_segment`, Edm.String
460 - * Returns Edm.String
461 - * `/game/os_GetSegmentList`
462 - * Returns Edm.String
463 - * `/game/os_UpdateSegmentMetadata`
464 - * Query params: `s_segment`, Edm.String
465 - * POST request
466 - * Returns Edm.String
467 - * `/game/os_DeleteSegment`
468 - * Query params: `s_segment`, Edm.String
469 - * Returns Edm.String
470 - * `/game/os_AddPlayersToSegment`
471 - * Query params: `s_segment`, Edm.String
472 - * POST request
473 - * Returns Edm.String
474 - * `/game/os_GetPlayersFromSegment`
475 - * Query params: `s_segment`, Edm.String
476 - * Returns Edm.String
477 - * `/game/os_GetSegmentsFromPlayer`
478 - * Query params: `s_uid`, Edm.String
479 - * Returns Edm.String
480 - * `/game/os_RemovePlayersFromSegment`
481 - * Query params: `s_segment`, Edm.String
482 - * POST request
483 - * Returns Edm.String
484 - * `/game/os_AddUsageLog`
485 - * Query params: `s_segment`, Edm.String; `s_log`, Edm.String
486 - * Returns Edm.String
487 - * `/game/os_GetUsageLogs`
488 - * Query params: `s_segment`, Edm.String
489 - * Returns Edm.String
490 - * `/game/os_CreateABTest`
491 - * Query params: `s_abtest`, Edm.String
492 - * POST request
493 - * Returns Edm.String
494 - * `/game/os_GetABTestMetadata`
495 - * Query params: `s_abtest`, Edm.String
496 - * Returns Edm.String
497 - * `/game/os_GetABTestList`
498 - * Returns Edm.String
499 - * `/game/os_UpdateABTestMetadata`
500 - * Query params: `s_abtest`, Edm.String
501 - * POST request
502 - * Returns Edm.String
503 - * `/game/os_DeleteABTest`
504 - * Query params: `s_abtest`, Edm.String
505 - * Returns Edm.String
506 - * `/game/os_AddUsageLogToABTest`
507 - * Query params: `s_abtest`, Edm.String; `s_log`, Edm.String
508 - * Returns Edm.String
509 - * `/game/os_GetUsageLogsFromABTest`
510 - * Query params: `s_abtest`, Edm.String
511 - * Returns Edm.String
512 - * `/game/os_AddSegmentToABTest`
513 - * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
514 - * Returns Edm.String
515 - * `/game/os_RemoveSegmentFromABTest`
516 - * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
517 - * Returns Edm.String
518 - * `/game/os_SetDefaultABTestSegment`
519 - * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
520 - * Returns Edm.String
521 - * `/game/os_SetDefaultABTestSegmentAsRandom`
522 - * Query params: `s_abtest`, Edm.String
523 - * Returns Edm.String
524 - * `/game/os_GetPlayerSegmentFromABTest`
525 - * Query params: `s_abtest`, Edm.String; `s_uid`, Edm.String
526 - * Returns Edm.String
527 - * `/game/os_CheckABTestConsistency`
528 - * Query params: `s_abtest`, Edm.String
529 - * Returns Edm.String
530 -
531 - ### Policy.OS
532 - * `/game/CalculateCommunityProfileStats`
533 - * Returns Edm.Int32
534 - * `/game/CalculateFriendsProfileStats`
535 - * Returns Edm.Int32
536 - * `/game/UpdateAvailableEpisodeOfferId`
537 - * Query params: `s_region`, Edm.String; `i32_episode`, Edm.Int32
538 - * Returns Edm.String
539 - * `/game/os_GetMonitoring`
540 - * Returns game.ServerStatus
541 - * `/game/os_GetOptions`
542 - * Returns game.Options
543 - * `/game/os_SetOptions`
544 - * Query params: `name`, Edm.String; `value`, Edm.String
545 - * Returns game.Options
546 - * `/game/ClearCache`
547 - * Query params: `s_Name`, Edm.String
548 - * Returns Edm.String
549 - * `/game/os_NotificationExpired`
550 - * Query params: `s_id`, Edm.String; `i32_type`, Edm.Int32; `s_message`, Edm.String; `s_platform`, Edm.String; `s_sender`, Edm.String
551 - * Returns nothing
552 - * `/game/DeleteUserProfile`
553 - * Query params: `s_uid`, Edm.String
554 - * Returns Edm.Boolean
555 - * `/game/GetUserProfileGlobal`
556 - * Query params: `s_uid`, Edm.String
557 - * Returns game.userprofile
558 - * `/game/os_GetUserProfileGlobal`
559 - * Query params: `s_uid`, Edm.String
560 - * Returns game.userprofile
561 - * `/game/UpdateUserProfileGlobal`
562 - * Query params: `s_uid`, Edm.String
563 - * POST request
564 - * Returns Edm.Int32
565 - * `/game/os_UpdateUserProfileGlobal`
566 - * Query params: `s_uid`, Edm.String
567 - * POST request
568 - * Returns Edm.Int32
569 - * `/game/GetUserProfilePlatform`
570 - * Query params: `s_uid`, Edm.String
571 - * Returns game.userprofile
572 - * `/game/os_GetUserProfilePlatform`
573 - * Query params: `s_uid`, Edm.String
574 - * Returns game.userprofile
575 - * `/game/UpdateUserProfilePlatform`
576 - * Query params: `s_uid`, Edm.String
577 - * POST request
578 - * Returns Edm.Int32
579 - * `/game/os_UpdateUserProfilePlatform`
580 - * Query params: `s_uid`, Edm.String
581 - * POST request
582 - * Returns Edm.Int32
583 - * `/game/GetUserProfileFranchise`
584 - * Query params: `s_uid`, Edm.String
585 - * Returns game.userprofile
586 - * `/game/os_GetUserProfileFranchise`
587 - * Query params: `s_uid`, Edm.String
588 - * Returns game.userprofile
589 - * `/game/UpdateUserProfileFranchise`
590 - * Query params: `s_uid`, Edm.String
591 - * POST request
592 - * Returns Edm.Int32
593 - * `/game/os_UpdateUserProfileFranchise`
594 - * Query params: `s_uid`, Edm.String
595 - * POST request
596 - * Returns Edm.Int32
597 - * `/game/GetUserProfileGameGeneric`
598 - * Query params: `s_uid`, Edm.String
599 - * Returns game.userprofile
600 - * `/game/os_GetUserProfileGameGeneric`
601 - * Query params: `s_uid`, Edm.String
602 - * Returns game.userprofile
603 - * `/game/UpdateUserProfileGameGeneric`
604 - * Query params: `s_uid`, Edm.String
605 - * POST request
606 - * Returns Edm.Int32
607 - * `/game/os_UpdateUserProfileGameGeneric`
608 - * Query params: `s_uid`, Edm.String
609 - * POST request
610 - * Returns Edm.Int32
611 - * `/game/ValidateSEM`
612 - * Returns Edm.Boolean
613 - * `/game/os_BackupUserProfiles`
614 - * Returns Edm.Int32
615 - * `/game/os_TestCache`
616 - * Query params: `s_cacheName`, Edm.String
617 - * Returns Edm.String
618 -
619 - ### Policy.PUBLIC
620 - * `/game/GetTodaysInfocast`
621 - * Query params: `s_locale`, Edm.String; `i16_episode`, Edm.Int32
622 - * Returns Collection(game.infocast)
623 - * `/game/os_GetStatus`
624 - * Returns game.ClientInfo
625 - * `/game/os_GetServiceInfo`
626 - * Returns nothing
627 - * `/game/os_GetChangeLog`
628 - * Returns nothing
629 - * `/game/os_GetChangeLogHTML`
630 - * Returns nothing
631 - * `/game/os_Ping`
632 - * Returns Edm.Int64
633 - * `/game/SEM_Login`
634 - * Query params: `s_type`, Edm.String; `s_value`, Edm.String
635 - * Returns game.SEMSubmit
636 - * `/game/SEM_SubmitEmail`
637 - * Query params: `s_type`, Edm.String; `s_value`, Edm.String
638 - * Returns game.SEMSubmit
639 -
640 - ### Policy.ANY
641 - * `/game/AddMetric`
642 - * Returns nothing
643 - * `/game/AddMetrics`
644 - * POST request
645 - * Returns nothing
646 -
647 - ### Policy.GAMESEE
648 - * `/game/GetSpecialFlag`
649 - * Query params: `i32_episode`, Edm.Int32
650 - * Returns game.offlinespecialfeature
651 - * `/game/os_SendNotification`
652 - * Query params: `s_sender`, Edm.String; `i32_type`, Edm.Int32; `s_platform`, Edm.String; `i64_lifespan`, Edm.Int64
653 - * POST request
654 - * Returns nothing
655 - * `/game/os_TranslatePlatformIds`
656 - * POST request
657 - * Returns Collection(game.PlatformIDInfo)
658 - * `/game/osGetConsumablesInfo`
659 - * Query params: `s_uid`, Edm.String
660 - * Returns Edm.String
661 - * `/game/Steam_GetUserInfo`
662 - * Query params: `s_uid`, Edm.String
663 - * Returns game.ossteamresponse
664 - * `/game/os_GetLastMetrics`
665 - * Query params: `i32_n`, Edm.Int32
666 - * Returns Collection(game.os_metric)
667 - * `/game/os_GetMetric`
668 - * Query params: `s_uuid`, Edm.String
669 - * Returns game.os_metric
670 - * `/game/GetUserProfileGameSpecific`
671 - * Query params: `s_uid`, Edm.String
672 - * Returns game.userprofile
673 - * `/game/os_GetUserProfileGameSpecific`
674 - * Query params: `s_uid`, Edm.String
675 - * Returns game.userprofile
676 - * `/game/GetUserProfileCountry`
677 - * Query params: `s_uid`, Edm.String
678 - * Returns Edm.String
679 - * `/game/os_GetUserProfileCountry`
680 - * Query params: `s_uid`, Edm.String
681 - * Returns Edm.String
682 - * `/game/UpdateSEMinfo`
683 - * Query params: `s_semid`, Edm.String
684 - * POST request
685 - * Returns Edm.Boolean
686 - * `/game/DeleteSEMinfo`
687 - * Query params: `s_semid`, Edm.String
688 - * Returns Edm.Boolean
689 - * `/game/LinkToSEM`
690 - * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
691 - * Returns Edm.Boolean
692 - * `/game/UnlinkFromSEM`
693 - * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
694 - * Returns Edm.Boolean
695 - These docs aren't entirely accurate. Some things are in the wrong AuthPolicy category, some things say they return nothing when they do return something. But then, since when are any internal docs accurate, right? :P
696 -
697 -
698 - ### Policy.PUBLIC
699 - * `/game/GetTodaysInfocast`
700 - * Query params: `s_locale`, Edm.String; `i16_episode`, Edm.Int32
701 - * Returns Collection(game.infocast)
702 - * `/game/os_GetStatus`
703 - * Returns game.ClientInfo
704 - * `/game/os_GetServiceInfo`
705 - * Returns nothing
706 - * `/game/os_GetChangeLog`
707 - * Returns nothing
708 - * `/game/os_GetChangeLogHTML`
709 - * Returns nothing
710 - * `/game/os_Ping`
711 - * Returns Edm.Int64
712 - * `/game/SEM_Login`
713 - * Query params: `s_type`, Edm.String; `s_value`, Edm.String
714 - * Returns game.SEMSubmit
715 - * `/game/SEM_SubmitEmail`
716 - * Query params: `s_type`, Edm.String; `s_value`, Edm.String
717 - * Returns game.SEMSubmit
718 -
719 - ### Policy.ANY
720 - * `/game/AddMetric`
721 - * Returns nothing
722 - * `/game/AddMetrics`
723 - * POST request
724 - * Returns nothing
725 -
726 - ### Policy.GAME
727 - * `/game/UpdateUserProfileGameSpecific`
728 - * Query params: `s_uid`, Edm.String
729 - * POST request
730 - * Returns Edm.Int32
731 - * `/game/SetUserProfileFriends`
732 - * Query params: `s_uid`, Edm.String
733 - * POST request
734 - * Returns Edm.Int32
735 - * `/game/CommunityFactsGetEpisode`
736 - * Query params: `i16_episode`, Edm.Int32
737 - * Returns Collection(game.communityfactreturn)
738 - * `/game/CommunityFactsGetAll`
739 - * Returns Collection(game.communityfactreturn)
740 - * `/game/GetFriendsProfileStats`
741 - * Query params: `s_uid`, Edm.String; `i16_episode`, Edm.Int32
742 - * Returns Collection(game.communityfactreturn)
743 - * `/game/GetSeasonPassOfferIdList`
744 - * Query params: `s_region`, Edm.String
745 - * Returns Collection(game.offerid)
746 - * `/game/SetUserProfileGameSpecific`
747 - * Query params: `s_uid`, Edm.String
748 - * POST request
749 - * Returns Edm.Int32
750 - * `/game/os_GetPlayer`
751 - * Query params: `UID`, Edm.String
752 - * Returns game.os_player
753 - * `/game/os_GetGeoLocation`
754 - * Returns game.GeoLocation
755 - * `/game/SEM_DeleteUser`
756 - * Query params: `s_type`, Edm.String; `s_value`, Edm.String
757 - * Returns game.Result
758 - * `/game/SEM_UnlinkPlayer`
759 - * Query params: `s_type`, Edm.String; `s_value`, Edm.String
760 - * Returns game.Result
761 - * `/game/SEM_GetLinkedAccounts`
762 - * Query params: `s_type`, Edm.String; `s_value`, Edm.String
763 - * Returns Collection(game.SEMLinkedAccount)
764 - * `/game/FB_PostToWall`
765 - * Query params: `s_facebookID`, Edm.String
766 - * POST request
767 - * Returns game.Result
768 - * `/game/FB_PostImageToWall`
769 - * Query params: `s_facebookID`, Edm.String; `s_imageName`, Edm.String; `s_linkName`, Edm.String; `s_linkCaption`, Edm.String; `s_linkDescription`, Edm.String
770 - * POST request
771 - * Returns game.Result
772 - * `/game/osNewTransaction`
773 - * Query params: `s_uid`, Edm.String; `s_offerIds`, Edm.String
774 - * Returns game.txninfo
775 - * `/game/osCreateCustomTransaction`
776 - * Query params: `s_uid`, Edm.String
777 - * POST request
778 - * Returns game.txninfo
779 - * `/game/osFinalizeTransaction`
780 - * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64
781 - * Returns game.txninfo
782 - * `/game/osCancelTransaction`
783 - * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64; `i32_reason`, Edm.Int32
784 - * Returns game.txninfo
785 - * `/game/osPreTransferTransaction`
786 - * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64
787 - * POST request
788 - * Returns game.txninfo
789 - * `/game/osGetIncompleteTransaction`
790 - * Query params: `s_uid`, Edm.String
791 - * Returns Collection(game.txninfo)
792 - * `/game/CreateUserProfile`
793 - * Query params: `s_uid`, Edm.String
794 - * Returns Edm.Boolean
795 - * `/game/os_CreateUserProfile`
796 - * Query params: `s_uid`, Edm.String
797 - * Returns Edm.Int32
798 - * `/game/os_SetUserProfileGameSpecific`
799 - * Query params: `s_uid`, Edm.String
800 - * POST request
801 - * Returns Edm.Int32
802 - * `/game/os_UpdateUserProfileGameSpecific`
803 - * Query params: `s_uid`, Edm.String
804 - * POST request
805 - * Returns Edm.Int32
806 - * `/game/SetUserProfileCountry`
807 - * Query params: `s_uid`, Edm.String; `s_country`, Edm.String
808 - * Returns Edm.Boolean
809 - * `/game/os_SetUserProfileCountry`
810 - * Query params: `s_uid`, Edm.String; `s_country`, Edm.String
811 - * Returns Edm.Boolean
812 - * `/game/PS4_GetFriendList`
813 - * Query params: `s_uid`, Edm.String
814 - * Returns Edm.String
815 -
816 - ### Policy.GAMESEE
817 - * `/game/GetSpecialFlag`
818 - * Query params: `i32_episode`, Edm.Int32
819 - * Returns game.offlinespecialfeature
820 - * `/game/os_SendNotification`
821 - * Query params: `s_sender`, Edm.String; `i32_type`, Edm.Int32; `s_platform`, Edm.String; `i64_lifespan`, Edm.Int64
822 - * POST request
823 - * Returns nothing
824 - * `/game/os_TranslatePlatformIds`
825 - * POST request
826 - * Returns Collection(game.PlatformIDInfo)
827 - * `/game/osGetConsumablesInfo`
828 - * Query params: `s_uid`, Edm.String
829 - * Returns Edm.String
830 - * `/game/Steam_GetUserInfo`
831 - * Query params: `s_uid`, Edm.String
832 - * Returns game.ossteamresponse
833 - * `/game/os_GetLastMetrics`
834 - * Query params: `i32_n`, Edm.Int32
835 - * Returns Collection(game.os_metric)
836 - * `/game/os_GetMetric`
837 - * Query params: `s_uuid`, Edm.String
838 - * Returns game.os_metric
839 - * `/game/GetUserProfileGameSpecific`
840 - * Query params: `s_uid`, Edm.String
841 - * Returns game.userprofile
842 - * `/game/os_GetUserProfileGameSpecific`
843 - * Query params: `s_uid`, Edm.String
844 - * Returns game.userprofile
845 - * `/game/GetUserProfileCountry`
846 - * Query params: `s_uid`, Edm.String
847 - * Returns Edm.String
848 - * `/game/os_GetUserProfileCountry`
849 - * Query params: `s_uid`, Edm.String
850 - * Returns Edm.String
851 - * `/game/UpdateSEMinfo`
852 - * Query params: `s_semid`, Edm.String
853 - * POST request
854 - * Returns Edm.Boolean
855 - * `/game/DeleteSEMinfo`
856 - * Query params: `s_semid`, Edm.String
857 - * Returns Edm.Boolean
858 - * `/game/LinkToSEM`
859 - * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
860 - * Returns Edm.Boolean
861 - * `/game/UnlinkFromSEM`
862 - * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
863 - * Returns Edm.Boolean
864 -
865 - ### Policy.OS
866 - * `/game/CalculateCommunityProfileStats`
867 - * Returns Edm.Int32
868 - * `/game/CalculateFriendsProfileStats`
869 - * Returns Edm.Int32
870 - * `/game/UpdateAvailableEpisodeOfferId`
871 - * Query params: `s_region`, Edm.String; `i32_episode`, Edm.Int32
872 - * Returns Edm.String
873 - * `/game/os_GetMonitoring`
874 - * Returns game.ServerStatus
875 - * `/game/os_GetOptions`
876 - * Returns game.Options
877 - * `/game/os_SetOptions`
878 - * Query params: `name`, Edm.String; `value`, Edm.String
879 - * Returns game.Options
880 - * `/game/ClearCache`
881 - * Query params: `s_Name`, Edm.String
882 - * Returns Edm.String
883 - * `/game/os_NotificationExpired`
884 - * Query params: `s_id`, Edm.String; `i32_type`, Edm.Int32; `s_message`, Edm.String; `s_platform`, Edm.String; `s_sender`, Edm.String
885 - * Returns nothing
886 - * `/game/DeleteUserProfile`
887 - * Query params: `s_uid`, Edm.String
888 - * Returns Edm.Boolean
889 - * `/game/GetUserProfileGlobal`
890 - * Query params: `s_uid`, Edm.String
891 - * Returns game.userprofile
892 - * `/game/os_GetUserProfileGlobal`
893 - * Query params: `s_uid`, Edm.String
894 - * Returns game.userprofile
895 - * `/game/UpdateUserProfileGlobal`
896 - * Query params: `s_uid`, Edm.String
897 - * POST request
898 - * Returns Edm.Int32
899 - * `/game/os_UpdateUserProfileGlobal`
900 - * Query params: `s_uid`, Edm.String
901 - * POST request
902 - * Returns Edm.Int32
903 - * `/game/GetUserProfilePlatform`
904 - * Query params: `s_uid`, Edm.String
905 - * Returns game.userprofile
906 - * `/game/os_GetUserProfilePlatform`
907 - * Query params: `s_uid`, Edm.String
908 - * Returns game.userprofile
909 - * `/game/UpdateUserProfilePlatform`
910 - * Query params: `s_uid`, Edm.String
911 - * POST request
912 - * Returns Edm.Int32
913 - * `/game/os_UpdateUserProfilePlatform`
914 - * Query params: `s_uid`, Edm.String
915 - * POST request
916 - * Returns Edm.Int32
917 - * `/game/GetUserProfileFranchise`
918 - * Query params: `s_uid`, Edm.String
919 - * Returns game.userprofile
920 - * `/game/os_GetUserProfileFranchise`
921 - * Query params: `s_uid`, Edm.String
922 - * Returns game.userprofile
923 - * `/game/UpdateUserProfileFranchise`
924 - * Query params: `s_uid`, Edm.String
925 - * POST request
926 - * Returns Edm.Int32
927 - * `/game/os_UpdateUserProfileFranchise`
928 - * Query params: `s_uid`, Edm.String
929 - * POST request
930 - * Returns Edm.Int32
931 - * `/game/GetUserProfileGameGeneric`
932 - * Query params: `s_uid`, Edm.String
933 - * Returns game.userprofile
934 - * `/game/os_GetUserProfileGameGeneric`
935 - * Query params: `s_uid`, Edm.String
936 - * Returns game.userprofile
937 - * `/game/UpdateUserProfileGameGeneric`
938 - * Query params: `s_uid`, Edm.String
939 - * POST request
940 - * Returns Edm.Int32
941 - * `/game/os_UpdateUserProfileGameGeneric`
942 - * Query params: `s_uid`, Edm.String
943 - * POST request
944 - * Returns Edm.Int32
945 - * `/game/ValidateSEM`
946 - * Returns Edm.Boolean
947 - * `/game/os_BackupUserProfiles`
948 - * Returns Edm.Int32
949 - * `/game/os_TestCache`
950 - * Query params: `s_cacheName`, Edm.String
951 - * Returns Edm.String
952 -
953 - ### Policy.SEE
954 - * `/game/UpdateInfocastMessages`
955 - * Query params: `_id`, Edm.String; `s_Type`, Edm.String; `s_DateBegin`, Edm.String; `s_DateEnd`, Edm.String; `i16_episode`, Edm.Int32
956 - * POST request
957 - * Returns Edm.Boolean
958 - * `/game/DeleteInfocastMessages`
959 - * Query params: `_id`, Edm.String
960 - * Returns Edm.Boolean
961 - * `/game/GetInfocastMessages`
962 - * Returns Collection(game.infocast)
963 - * `/game/EnableSpecialFlag`
964 - * Query params: `i32_episode`, Edm.Int32; `b_enable`, Edm.Boolean
965 - * POST request
966 - * Returns Edm.Boolean
967 - * `/game/AddInfocastMessages`
968 - * Query params: `s_Type`, Edm.String; `s_DateBegin`, Edm.String; `s_DateEnd`, Edm.String; `i16_episode`, Edm.Int32
969 - * POST request
970 - * Returns Edm.String
971 - * `/game/os_CreateSegment`
972 - * Query params: `s_segment`, Edm.String
973 - * POST request
974 - * Returns Edm.String
975 - * `/game/os_GetSegmentMetadata`
976 - * Query params: `s_segment`, Edm.String
977 - * Returns Edm.String
978 - * `/game/os_GetSegmentList`
979 - * Returns Edm.String
980 - * `/game/os_UpdateSegmentMetadata`
981 - * Query params: `s_segment`, Edm.String
982 - * POST request
983 - * Returns Edm.String
984 - * `/game/os_DeleteSegment`
985 - * Query params: `s_segment`, Edm.String
986 - * Returns Edm.String
987 - * `/game/os_AddPlayersToSegment`
988 - * Query params: `s_segment`, Edm.String
989 - * POST request
990 - * Returns Edm.String
991 - * `/game/os_GetPlayersFromSegment`
992 - * Query params: `s_segment`, Edm.String
993 - * Returns Edm.String
994 - * `/game/os_GetSegmentsFromPlayer`
995 - * Query params: `s_uid`, Edm.String
996 - * Returns Edm.String
997 - * `/game/os_RemovePlayersFromSegment`
998 - * Query params: `s_segment`, Edm.String
999 - * POST request
1000 - * Returns Edm.String
1001 - * `/game/os_AddUsageLog`
1002 - * Query params: `s_segment`, Edm.String; `s_log`, Edm.String
1003 - * Returns Edm.String
1004 - * `/game/os_GetUsageLogs`
1005 - * Query params: `s_segment`, Edm.String
1006 - * Returns Edm.String
1007 - * `/game/os_CreateABTest`
1008 - * Query params: `s_abtest`, Edm.String
1009 - * POST request
1010 - * Returns Edm.String
1011 - * `/game/os_GetABTestMetadata`
1012 - * Query params: `s_abtest`, Edm.String
1013 - * Returns Edm.String
1014 - * `/game/os_GetABTestList`
1015 - * Returns Edm.String
1016 - * `/game/os_UpdateABTestMetadata`
1017 - * Query params: `s_abtest`, Edm.String
1018 - * POST request
1019 - * Returns Edm.String
1020 - * `/game/os_DeleteABTest`
1021 - * Query params: `s_abtest`, Edm.String
1022 - * Returns Edm.String
1023 - * `/game/os_AddUsageLogToABTest`
1024 - * Query params: `s_abtest`, Edm.String; `s_log`, Edm.String
1025 - * Returns Edm.String
1026 - * `/game/os_GetUsageLogsFromABTest`
1027 - * Query params: `s_abtest`, Edm.String
1028 - * Returns Edm.String
1029 - * `/game/os_AddSegmentToABTest`
1030 - * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
1031 - * Returns Edm.String
1032 - * `/game/os_RemoveSegmentFromABTest`
1033 - * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
1034 - * Returns Edm.String
1035 - * `/game/os_SetDefaultABTestSegment`
1036 - * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
1037 - * Returns Edm.String
1038 - * `/game/os_SetDefaultABTestSegmentAsRandom`
1039 - * Query params: `s_abtest`, Edm.String
1040 - * Returns Edm.String
1041 - * `/game/os_GetPlayerSegmentFromABTest`
1042 - * Query params: `s_abtest`, Edm.String; `s_uid`, Edm.String
1043 - * Returns Edm.String
1044 - * `/game/os_CheckABTestConsistency`
1045 - * Query params: `s_abtest`, Edm.String
1046 - * Returns Edm.String

blha303 revised this gist 1470233483. Go to revision

2 files changed, 353 insertions

zGenerateDocs.py

@@ -25,6 +25,7 @@ def format(func):
25 25 out += " * Returns nothing"
26 26 return out
27 27
28 + print("These docs aren't entirely accurate. Some things are in the wrong AuthPolicy category, some things say they return nothing when they do return something. But then, since when are any internal docs accurate, right? :P\n")
28 29 for authpolicy, functions in funcs.items():
29 30 print("\n### {}".format(authpolicy))
30 31 for f in functions:

zGeneratedDocs.md

@@ -692,3 +692,355 @@
692 692 * `/game/UnlinkFromSEM`
693 693 * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
694 694 * Returns Edm.Boolean
695 + These docs aren't entirely accurate. Some things are in the wrong AuthPolicy category, some things say they return nothing when they do return something. But then, since when are any internal docs accurate, right? :P
696 +
697 +
698 + ### Policy.PUBLIC
699 + * `/game/GetTodaysInfocast`
700 + * Query params: `s_locale`, Edm.String; `i16_episode`, Edm.Int32
701 + * Returns Collection(game.infocast)
702 + * `/game/os_GetStatus`
703 + * Returns game.ClientInfo
704 + * `/game/os_GetServiceInfo`
705 + * Returns nothing
706 + * `/game/os_GetChangeLog`
707 + * Returns nothing
708 + * `/game/os_GetChangeLogHTML`
709 + * Returns nothing
710 + * `/game/os_Ping`
711 + * Returns Edm.Int64
712 + * `/game/SEM_Login`
713 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
714 + * Returns game.SEMSubmit
715 + * `/game/SEM_SubmitEmail`
716 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
717 + * Returns game.SEMSubmit
718 +
719 + ### Policy.ANY
720 + * `/game/AddMetric`
721 + * Returns nothing
722 + * `/game/AddMetrics`
723 + * POST request
724 + * Returns nothing
725 +
726 + ### Policy.GAME
727 + * `/game/UpdateUserProfileGameSpecific`
728 + * Query params: `s_uid`, Edm.String
729 + * POST request
730 + * Returns Edm.Int32
731 + * `/game/SetUserProfileFriends`
732 + * Query params: `s_uid`, Edm.String
733 + * POST request
734 + * Returns Edm.Int32
735 + * `/game/CommunityFactsGetEpisode`
736 + * Query params: `i16_episode`, Edm.Int32
737 + * Returns Collection(game.communityfactreturn)
738 + * `/game/CommunityFactsGetAll`
739 + * Returns Collection(game.communityfactreturn)
740 + * `/game/GetFriendsProfileStats`
741 + * Query params: `s_uid`, Edm.String; `i16_episode`, Edm.Int32
742 + * Returns Collection(game.communityfactreturn)
743 + * `/game/GetSeasonPassOfferIdList`
744 + * Query params: `s_region`, Edm.String
745 + * Returns Collection(game.offerid)
746 + * `/game/SetUserProfileGameSpecific`
747 + * Query params: `s_uid`, Edm.String
748 + * POST request
749 + * Returns Edm.Int32
750 + * `/game/os_GetPlayer`
751 + * Query params: `UID`, Edm.String
752 + * Returns game.os_player
753 + * `/game/os_GetGeoLocation`
754 + * Returns game.GeoLocation
755 + * `/game/SEM_DeleteUser`
756 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
757 + * Returns game.Result
758 + * `/game/SEM_UnlinkPlayer`
759 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
760 + * Returns game.Result
761 + * `/game/SEM_GetLinkedAccounts`
762 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
763 + * Returns Collection(game.SEMLinkedAccount)
764 + * `/game/FB_PostToWall`
765 + * Query params: `s_facebookID`, Edm.String
766 + * POST request
767 + * Returns game.Result
768 + * `/game/FB_PostImageToWall`
769 + * Query params: `s_facebookID`, Edm.String; `s_imageName`, Edm.String; `s_linkName`, Edm.String; `s_linkCaption`, Edm.String; `s_linkDescription`, Edm.String
770 + * POST request
771 + * Returns game.Result
772 + * `/game/osNewTransaction`
773 + * Query params: `s_uid`, Edm.String; `s_offerIds`, Edm.String
774 + * Returns game.txninfo
775 + * `/game/osCreateCustomTransaction`
776 + * Query params: `s_uid`, Edm.String
777 + * POST request
778 + * Returns game.txninfo
779 + * `/game/osFinalizeTransaction`
780 + * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64
781 + * Returns game.txninfo
782 + * `/game/osCancelTransaction`
783 + * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64; `i32_reason`, Edm.Int32
784 + * Returns game.txninfo
785 + * `/game/osPreTransferTransaction`
786 + * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64
787 + * POST request
788 + * Returns game.txninfo
789 + * `/game/osGetIncompleteTransaction`
790 + * Query params: `s_uid`, Edm.String
791 + * Returns Collection(game.txninfo)
792 + * `/game/CreateUserProfile`
793 + * Query params: `s_uid`, Edm.String
794 + * Returns Edm.Boolean
795 + * `/game/os_CreateUserProfile`
796 + * Query params: `s_uid`, Edm.String
797 + * Returns Edm.Int32
798 + * `/game/os_SetUserProfileGameSpecific`
799 + * Query params: `s_uid`, Edm.String
800 + * POST request
801 + * Returns Edm.Int32
802 + * `/game/os_UpdateUserProfileGameSpecific`
803 + * Query params: `s_uid`, Edm.String
804 + * POST request
805 + * Returns Edm.Int32
806 + * `/game/SetUserProfileCountry`
807 + * Query params: `s_uid`, Edm.String; `s_country`, Edm.String
808 + * Returns Edm.Boolean
809 + * `/game/os_SetUserProfileCountry`
810 + * Query params: `s_uid`, Edm.String; `s_country`, Edm.String
811 + * Returns Edm.Boolean
812 + * `/game/PS4_GetFriendList`
813 + * Query params: `s_uid`, Edm.String
814 + * Returns Edm.String
815 +
816 + ### Policy.GAMESEE
817 + * `/game/GetSpecialFlag`
818 + * Query params: `i32_episode`, Edm.Int32
819 + * Returns game.offlinespecialfeature
820 + * `/game/os_SendNotification`
821 + * Query params: `s_sender`, Edm.String; `i32_type`, Edm.Int32; `s_platform`, Edm.String; `i64_lifespan`, Edm.Int64
822 + * POST request
823 + * Returns nothing
824 + * `/game/os_TranslatePlatformIds`
825 + * POST request
826 + * Returns Collection(game.PlatformIDInfo)
827 + * `/game/osGetConsumablesInfo`
828 + * Query params: `s_uid`, Edm.String
829 + * Returns Edm.String
830 + * `/game/Steam_GetUserInfo`
831 + * Query params: `s_uid`, Edm.String
832 + * Returns game.ossteamresponse
833 + * `/game/os_GetLastMetrics`
834 + * Query params: `i32_n`, Edm.Int32
835 + * Returns Collection(game.os_metric)
836 + * `/game/os_GetMetric`
837 + * Query params: `s_uuid`, Edm.String
838 + * Returns game.os_metric
839 + * `/game/GetUserProfileGameSpecific`
840 + * Query params: `s_uid`, Edm.String
841 + * Returns game.userprofile
842 + * `/game/os_GetUserProfileGameSpecific`
843 + * Query params: `s_uid`, Edm.String
844 + * Returns game.userprofile
845 + * `/game/GetUserProfileCountry`
846 + * Query params: `s_uid`, Edm.String
847 + * Returns Edm.String
848 + * `/game/os_GetUserProfileCountry`
849 + * Query params: `s_uid`, Edm.String
850 + * Returns Edm.String
851 + * `/game/UpdateSEMinfo`
852 + * Query params: `s_semid`, Edm.String
853 + * POST request
854 + * Returns Edm.Boolean
855 + * `/game/DeleteSEMinfo`
856 + * Query params: `s_semid`, Edm.String
857 + * Returns Edm.Boolean
858 + * `/game/LinkToSEM`
859 + * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
860 + * Returns Edm.Boolean
861 + * `/game/UnlinkFromSEM`
862 + * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
863 + * Returns Edm.Boolean
864 +
865 + ### Policy.OS
866 + * `/game/CalculateCommunityProfileStats`
867 + * Returns Edm.Int32
868 + * `/game/CalculateFriendsProfileStats`
869 + * Returns Edm.Int32
870 + * `/game/UpdateAvailableEpisodeOfferId`
871 + * Query params: `s_region`, Edm.String; `i32_episode`, Edm.Int32
872 + * Returns Edm.String
873 + * `/game/os_GetMonitoring`
874 + * Returns game.ServerStatus
875 + * `/game/os_GetOptions`
876 + * Returns game.Options
877 + * `/game/os_SetOptions`
878 + * Query params: `name`, Edm.String; `value`, Edm.String
879 + * Returns game.Options
880 + * `/game/ClearCache`
881 + * Query params: `s_Name`, Edm.String
882 + * Returns Edm.String
883 + * `/game/os_NotificationExpired`
884 + * Query params: `s_id`, Edm.String; `i32_type`, Edm.Int32; `s_message`, Edm.String; `s_platform`, Edm.String; `s_sender`, Edm.String
885 + * Returns nothing
886 + * `/game/DeleteUserProfile`
887 + * Query params: `s_uid`, Edm.String
888 + * Returns Edm.Boolean
889 + * `/game/GetUserProfileGlobal`
890 + * Query params: `s_uid`, Edm.String
891 + * Returns game.userprofile
892 + * `/game/os_GetUserProfileGlobal`
893 + * Query params: `s_uid`, Edm.String
894 + * Returns game.userprofile
895 + * `/game/UpdateUserProfileGlobal`
896 + * Query params: `s_uid`, Edm.String
897 + * POST request
898 + * Returns Edm.Int32
899 + * `/game/os_UpdateUserProfileGlobal`
900 + * Query params: `s_uid`, Edm.String
901 + * POST request
902 + * Returns Edm.Int32
903 + * `/game/GetUserProfilePlatform`
904 + * Query params: `s_uid`, Edm.String
905 + * Returns game.userprofile
906 + * `/game/os_GetUserProfilePlatform`
907 + * Query params: `s_uid`, Edm.String
908 + * Returns game.userprofile
909 + * `/game/UpdateUserProfilePlatform`
910 + * Query params: `s_uid`, Edm.String
911 + * POST request
912 + * Returns Edm.Int32
913 + * `/game/os_UpdateUserProfilePlatform`
914 + * Query params: `s_uid`, Edm.String
915 + * POST request
916 + * Returns Edm.Int32
917 + * `/game/GetUserProfileFranchise`
918 + * Query params: `s_uid`, Edm.String
919 + * Returns game.userprofile
920 + * `/game/os_GetUserProfileFranchise`
921 + * Query params: `s_uid`, Edm.String
922 + * Returns game.userprofile
923 + * `/game/UpdateUserProfileFranchise`
924 + * Query params: `s_uid`, Edm.String
925 + * POST request
926 + * Returns Edm.Int32
927 + * `/game/os_UpdateUserProfileFranchise`
928 + * Query params: `s_uid`, Edm.String
929 + * POST request
930 + * Returns Edm.Int32
931 + * `/game/GetUserProfileGameGeneric`
932 + * Query params: `s_uid`, Edm.String
933 + * Returns game.userprofile
934 + * `/game/os_GetUserProfileGameGeneric`
935 + * Query params: `s_uid`, Edm.String
936 + * Returns game.userprofile
937 + * `/game/UpdateUserProfileGameGeneric`
938 + * Query params: `s_uid`, Edm.String
939 + * POST request
940 + * Returns Edm.Int32
941 + * `/game/os_UpdateUserProfileGameGeneric`
942 + * Query params: `s_uid`, Edm.String
943 + * POST request
944 + * Returns Edm.Int32
945 + * `/game/ValidateSEM`
946 + * Returns Edm.Boolean
947 + * `/game/os_BackupUserProfiles`
948 + * Returns Edm.Int32
949 + * `/game/os_TestCache`
950 + * Query params: `s_cacheName`, Edm.String
951 + * Returns Edm.String
952 +
953 + ### Policy.SEE
954 + * `/game/UpdateInfocastMessages`
955 + * Query params: `_id`, Edm.String; `s_Type`, Edm.String; `s_DateBegin`, Edm.String; `s_DateEnd`, Edm.String; `i16_episode`, Edm.Int32
956 + * POST request
957 + * Returns Edm.Boolean
958 + * `/game/DeleteInfocastMessages`
959 + * Query params: `_id`, Edm.String
960 + * Returns Edm.Boolean
961 + * `/game/GetInfocastMessages`
962 + * Returns Collection(game.infocast)
963 + * `/game/EnableSpecialFlag`
964 + * Query params: `i32_episode`, Edm.Int32; `b_enable`, Edm.Boolean
965 + * POST request
966 + * Returns Edm.Boolean
967 + * `/game/AddInfocastMessages`
968 + * Query params: `s_Type`, Edm.String; `s_DateBegin`, Edm.String; `s_DateEnd`, Edm.String; `i16_episode`, Edm.Int32
969 + * POST request
970 + * Returns Edm.String
971 + * `/game/os_CreateSegment`
972 + * Query params: `s_segment`, Edm.String
973 + * POST request
974 + * Returns Edm.String
975 + * `/game/os_GetSegmentMetadata`
976 + * Query params: `s_segment`, Edm.String
977 + * Returns Edm.String
978 + * `/game/os_GetSegmentList`
979 + * Returns Edm.String
980 + * `/game/os_UpdateSegmentMetadata`
981 + * Query params: `s_segment`, Edm.String
982 + * POST request
983 + * Returns Edm.String
984 + * `/game/os_DeleteSegment`
985 + * Query params: `s_segment`, Edm.String
986 + * Returns Edm.String
987 + * `/game/os_AddPlayersToSegment`
988 + * Query params: `s_segment`, Edm.String
989 + * POST request
990 + * Returns Edm.String
991 + * `/game/os_GetPlayersFromSegment`
992 + * Query params: `s_segment`, Edm.String
993 + * Returns Edm.String
994 + * `/game/os_GetSegmentsFromPlayer`
995 + * Query params: `s_uid`, Edm.String
996 + * Returns Edm.String
997 + * `/game/os_RemovePlayersFromSegment`
998 + * Query params: `s_segment`, Edm.String
999 + * POST request
1000 + * Returns Edm.String
1001 + * `/game/os_AddUsageLog`
1002 + * Query params: `s_segment`, Edm.String; `s_log`, Edm.String
1003 + * Returns Edm.String
1004 + * `/game/os_GetUsageLogs`
1005 + * Query params: `s_segment`, Edm.String
1006 + * Returns Edm.String
1007 + * `/game/os_CreateABTest`
1008 + * Query params: `s_abtest`, Edm.String
1009 + * POST request
1010 + * Returns Edm.String
1011 + * `/game/os_GetABTestMetadata`
1012 + * Query params: `s_abtest`, Edm.String
1013 + * Returns Edm.String
1014 + * `/game/os_GetABTestList`
1015 + * Returns Edm.String
1016 + * `/game/os_UpdateABTestMetadata`
1017 + * Query params: `s_abtest`, Edm.String
1018 + * POST request
1019 + * Returns Edm.String
1020 + * `/game/os_DeleteABTest`
1021 + * Query params: `s_abtest`, Edm.String
1022 + * Returns Edm.String
1023 + * `/game/os_AddUsageLogToABTest`
1024 + * Query params: `s_abtest`, Edm.String; `s_log`, Edm.String
1025 + * Returns Edm.String
1026 + * `/game/os_GetUsageLogsFromABTest`
1027 + * Query params: `s_abtest`, Edm.String
1028 + * Returns Edm.String
1029 + * `/game/os_AddSegmentToABTest`
1030 + * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
1031 + * Returns Edm.String
1032 + * `/game/os_RemoveSegmentFromABTest`
1033 + * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
1034 + * Returns Edm.String
1035 + * `/game/os_SetDefaultABTestSegment`
1036 + * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
1037 + * Returns Edm.String
1038 + * `/game/os_SetDefaultABTestSegmentAsRandom`
1039 + * Query params: `s_abtest`, Edm.String
1040 + * Returns Edm.String
1041 + * `/game/os_GetPlayerSegmentFromABTest`
1042 + * Query params: `s_abtest`, Edm.String; `s_uid`, Edm.String
1043 + * Returns Edm.String
1044 + * `/game/os_CheckABTestConsistency`
1045 + * Query params: `s_abtest`, Edm.String
1046 + * Returns Edm.String

blha303 revised this gist 1470233343. Go to revision

2 files changed, 351 insertions, 1 deletion

zGenerateDocs.py

@@ -26,7 +26,7 @@ def format(func):
26 26 return out
27 27
28 28 for authpolicy, functions in funcs.items():
29 - print("### {}".format(authpolicy))
29 + print("\n### {}".format(authpolicy))
30 30 for f in functions:
31 31 try:
32 32 print(format(f))

zGeneratedDocs.md

@@ -342,3 +342,353 @@
342 342 * `/game/SEM_SubmitEmail`
343 343 * Query params: `s_type`, Edm.String; `s_value`, Edm.String
344 344 * Returns game.SEMSubmit
345 +
346 + ### Policy.GAME
347 + * `/game/UpdateUserProfileGameSpecific`
348 + * Query params: `s_uid`, Edm.String
349 + * POST request
350 + * Returns Edm.Int32
351 + * `/game/SetUserProfileFriends`
352 + * Query params: `s_uid`, Edm.String
353 + * POST request
354 + * Returns Edm.Int32
355 + * `/game/CommunityFactsGetEpisode`
356 + * Query params: `i16_episode`, Edm.Int32
357 + * Returns Collection(game.communityfactreturn)
358 + * `/game/CommunityFactsGetAll`
359 + * Returns Collection(game.communityfactreturn)
360 + * `/game/GetFriendsProfileStats`
361 + * Query params: `s_uid`, Edm.String; `i16_episode`, Edm.Int32
362 + * Returns Collection(game.communityfactreturn)
363 + * `/game/GetSeasonPassOfferIdList`
364 + * Query params: `s_region`, Edm.String
365 + * Returns Collection(game.offerid)
366 + * `/game/SetUserProfileGameSpecific`
367 + * Query params: `s_uid`, Edm.String
368 + * POST request
369 + * Returns Edm.Int32
370 + * `/game/os_GetPlayer`
371 + * Query params: `UID`, Edm.String
372 + * Returns game.os_player
373 + * `/game/os_GetGeoLocation`
374 + * Returns game.GeoLocation
375 + * `/game/SEM_DeleteUser`
376 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
377 + * Returns game.Result
378 + * `/game/SEM_UnlinkPlayer`
379 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
380 + * Returns game.Result
381 + * `/game/SEM_GetLinkedAccounts`
382 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
383 + * Returns Collection(game.SEMLinkedAccount)
384 + * `/game/FB_PostToWall`
385 + * Query params: `s_facebookID`, Edm.String
386 + * POST request
387 + * Returns game.Result
388 + * `/game/FB_PostImageToWall`
389 + * Query params: `s_facebookID`, Edm.String; `s_imageName`, Edm.String; `s_linkName`, Edm.String; `s_linkCaption`, Edm.String; `s_linkDescription`, Edm.String
390 + * POST request
391 + * Returns game.Result
392 + * `/game/osNewTransaction`
393 + * Query params: `s_uid`, Edm.String; `s_offerIds`, Edm.String
394 + * Returns game.txninfo
395 + * `/game/osCreateCustomTransaction`
396 + * Query params: `s_uid`, Edm.String
397 + * POST request
398 + * Returns game.txninfo
399 + * `/game/osFinalizeTransaction`
400 + * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64
401 + * Returns game.txninfo
402 + * `/game/osCancelTransaction`
403 + * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64; `i32_reason`, Edm.Int32
404 + * Returns game.txninfo
405 + * `/game/osPreTransferTransaction`
406 + * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64
407 + * POST request
408 + * Returns game.txninfo
409 + * `/game/osGetIncompleteTransaction`
410 + * Query params: `s_uid`, Edm.String
411 + * Returns Collection(game.txninfo)
412 + * `/game/CreateUserProfile`
413 + * Query params: `s_uid`, Edm.String
414 + * Returns Edm.Boolean
415 + * `/game/os_CreateUserProfile`
416 + * Query params: `s_uid`, Edm.String
417 + * Returns Edm.Int32
418 + * `/game/os_SetUserProfileGameSpecific`
419 + * Query params: `s_uid`, Edm.String
420 + * POST request
421 + * Returns Edm.Int32
422 + * `/game/os_UpdateUserProfileGameSpecific`
423 + * Query params: `s_uid`, Edm.String
424 + * POST request
425 + * Returns Edm.Int32
426 + * `/game/SetUserProfileCountry`
427 + * Query params: `s_uid`, Edm.String; `s_country`, Edm.String
428 + * Returns Edm.Boolean
429 + * `/game/os_SetUserProfileCountry`
430 + * Query params: `s_uid`, Edm.String; `s_country`, Edm.String
431 + * Returns Edm.Boolean
432 + * `/game/PS4_GetFriendList`
433 + * Query params: `s_uid`, Edm.String
434 + * Returns Edm.String
435 +
436 + ### Policy.SEE
437 + * `/game/UpdateInfocastMessages`
438 + * Query params: `_id`, Edm.String; `s_Type`, Edm.String; `s_DateBegin`, Edm.String; `s_DateEnd`, Edm.String; `i16_episode`, Edm.Int32
439 + * POST request
440 + * Returns Edm.Boolean
441 + * `/game/DeleteInfocastMessages`
442 + * Query params: `_id`, Edm.String
443 + * Returns Edm.Boolean
444 + * `/game/GetInfocastMessages`
445 + * Returns Collection(game.infocast)
446 + * `/game/EnableSpecialFlag`
447 + * Query params: `i32_episode`, Edm.Int32; `b_enable`, Edm.Boolean
448 + * POST request
449 + * Returns Edm.Boolean
450 + * `/game/AddInfocastMessages`
451 + * Query params: `s_Type`, Edm.String; `s_DateBegin`, Edm.String; `s_DateEnd`, Edm.String; `i16_episode`, Edm.Int32
452 + * POST request
453 + * Returns Edm.String
454 + * `/game/os_CreateSegment`
455 + * Query params: `s_segment`, Edm.String
456 + * POST request
457 + * Returns Edm.String
458 + * `/game/os_GetSegmentMetadata`
459 + * Query params: `s_segment`, Edm.String
460 + * Returns Edm.String
461 + * `/game/os_GetSegmentList`
462 + * Returns Edm.String
463 + * `/game/os_UpdateSegmentMetadata`
464 + * Query params: `s_segment`, Edm.String
465 + * POST request
466 + * Returns Edm.String
467 + * `/game/os_DeleteSegment`
468 + * Query params: `s_segment`, Edm.String
469 + * Returns Edm.String
470 + * `/game/os_AddPlayersToSegment`
471 + * Query params: `s_segment`, Edm.String
472 + * POST request
473 + * Returns Edm.String
474 + * `/game/os_GetPlayersFromSegment`
475 + * Query params: `s_segment`, Edm.String
476 + * Returns Edm.String
477 + * `/game/os_GetSegmentsFromPlayer`
478 + * Query params: `s_uid`, Edm.String
479 + * Returns Edm.String
480 + * `/game/os_RemovePlayersFromSegment`
481 + * Query params: `s_segment`, Edm.String
482 + * POST request
483 + * Returns Edm.String
484 + * `/game/os_AddUsageLog`
485 + * Query params: `s_segment`, Edm.String; `s_log`, Edm.String
486 + * Returns Edm.String
487 + * `/game/os_GetUsageLogs`
488 + * Query params: `s_segment`, Edm.String
489 + * Returns Edm.String
490 + * `/game/os_CreateABTest`
491 + * Query params: `s_abtest`, Edm.String
492 + * POST request
493 + * Returns Edm.String
494 + * `/game/os_GetABTestMetadata`
495 + * Query params: `s_abtest`, Edm.String
496 + * Returns Edm.String
497 + * `/game/os_GetABTestList`
498 + * Returns Edm.String
499 + * `/game/os_UpdateABTestMetadata`
500 + * Query params: `s_abtest`, Edm.String
501 + * POST request
502 + * Returns Edm.String
503 + * `/game/os_DeleteABTest`
504 + * Query params: `s_abtest`, Edm.String
505 + * Returns Edm.String
506 + * `/game/os_AddUsageLogToABTest`
507 + * Query params: `s_abtest`, Edm.String; `s_log`, Edm.String
508 + * Returns Edm.String
509 + * `/game/os_GetUsageLogsFromABTest`
510 + * Query params: `s_abtest`, Edm.String
511 + * Returns Edm.String
512 + * `/game/os_AddSegmentToABTest`
513 + * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
514 + * Returns Edm.String
515 + * `/game/os_RemoveSegmentFromABTest`
516 + * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
517 + * Returns Edm.String
518 + * `/game/os_SetDefaultABTestSegment`
519 + * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
520 + * Returns Edm.String
521 + * `/game/os_SetDefaultABTestSegmentAsRandom`
522 + * Query params: `s_abtest`, Edm.String
523 + * Returns Edm.String
524 + * `/game/os_GetPlayerSegmentFromABTest`
525 + * Query params: `s_abtest`, Edm.String; `s_uid`, Edm.String
526 + * Returns Edm.String
527 + * `/game/os_CheckABTestConsistency`
528 + * Query params: `s_abtest`, Edm.String
529 + * Returns Edm.String
530 +
531 + ### Policy.OS
532 + * `/game/CalculateCommunityProfileStats`
533 + * Returns Edm.Int32
534 + * `/game/CalculateFriendsProfileStats`
535 + * Returns Edm.Int32
536 + * `/game/UpdateAvailableEpisodeOfferId`
537 + * Query params: `s_region`, Edm.String; `i32_episode`, Edm.Int32
538 + * Returns Edm.String
539 + * `/game/os_GetMonitoring`
540 + * Returns game.ServerStatus
541 + * `/game/os_GetOptions`
542 + * Returns game.Options
543 + * `/game/os_SetOptions`
544 + * Query params: `name`, Edm.String; `value`, Edm.String
545 + * Returns game.Options
546 + * `/game/ClearCache`
547 + * Query params: `s_Name`, Edm.String
548 + * Returns Edm.String
549 + * `/game/os_NotificationExpired`
550 + * Query params: `s_id`, Edm.String; `i32_type`, Edm.Int32; `s_message`, Edm.String; `s_platform`, Edm.String; `s_sender`, Edm.String
551 + * Returns nothing
552 + * `/game/DeleteUserProfile`
553 + * Query params: `s_uid`, Edm.String
554 + * Returns Edm.Boolean
555 + * `/game/GetUserProfileGlobal`
556 + * Query params: `s_uid`, Edm.String
557 + * Returns game.userprofile
558 + * `/game/os_GetUserProfileGlobal`
559 + * Query params: `s_uid`, Edm.String
560 + * Returns game.userprofile
561 + * `/game/UpdateUserProfileGlobal`
562 + * Query params: `s_uid`, Edm.String
563 + * POST request
564 + * Returns Edm.Int32
565 + * `/game/os_UpdateUserProfileGlobal`
566 + * Query params: `s_uid`, Edm.String
567 + * POST request
568 + * Returns Edm.Int32
569 + * `/game/GetUserProfilePlatform`
570 + * Query params: `s_uid`, Edm.String
571 + * Returns game.userprofile
572 + * `/game/os_GetUserProfilePlatform`
573 + * Query params: `s_uid`, Edm.String
574 + * Returns game.userprofile
575 + * `/game/UpdateUserProfilePlatform`
576 + * Query params: `s_uid`, Edm.String
577 + * POST request
578 + * Returns Edm.Int32
579 + * `/game/os_UpdateUserProfilePlatform`
580 + * Query params: `s_uid`, Edm.String
581 + * POST request
582 + * Returns Edm.Int32
583 + * `/game/GetUserProfileFranchise`
584 + * Query params: `s_uid`, Edm.String
585 + * Returns game.userprofile
586 + * `/game/os_GetUserProfileFranchise`
587 + * Query params: `s_uid`, Edm.String
588 + * Returns game.userprofile
589 + * `/game/UpdateUserProfileFranchise`
590 + * Query params: `s_uid`, Edm.String
591 + * POST request
592 + * Returns Edm.Int32
593 + * `/game/os_UpdateUserProfileFranchise`
594 + * Query params: `s_uid`, Edm.String
595 + * POST request
596 + * Returns Edm.Int32
597 + * `/game/GetUserProfileGameGeneric`
598 + * Query params: `s_uid`, Edm.String
599 + * Returns game.userprofile
600 + * `/game/os_GetUserProfileGameGeneric`
601 + * Query params: `s_uid`, Edm.String
602 + * Returns game.userprofile
603 + * `/game/UpdateUserProfileGameGeneric`
604 + * Query params: `s_uid`, Edm.String
605 + * POST request
606 + * Returns Edm.Int32
607 + * `/game/os_UpdateUserProfileGameGeneric`
608 + * Query params: `s_uid`, Edm.String
609 + * POST request
610 + * Returns Edm.Int32
611 + * `/game/ValidateSEM`
612 + * Returns Edm.Boolean
613 + * `/game/os_BackupUserProfiles`
614 + * Returns Edm.Int32
615 + * `/game/os_TestCache`
616 + * Query params: `s_cacheName`, Edm.String
617 + * Returns Edm.String
618 +
619 + ### Policy.PUBLIC
620 + * `/game/GetTodaysInfocast`
621 + * Query params: `s_locale`, Edm.String; `i16_episode`, Edm.Int32
622 + * Returns Collection(game.infocast)
623 + * `/game/os_GetStatus`
624 + * Returns game.ClientInfo
625 + * `/game/os_GetServiceInfo`
626 + * Returns nothing
627 + * `/game/os_GetChangeLog`
628 + * Returns nothing
629 + * `/game/os_GetChangeLogHTML`
630 + * Returns nothing
631 + * `/game/os_Ping`
632 + * Returns Edm.Int64
633 + * `/game/SEM_Login`
634 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
635 + * Returns game.SEMSubmit
636 + * `/game/SEM_SubmitEmail`
637 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
638 + * Returns game.SEMSubmit
639 +
640 + ### Policy.ANY
641 + * `/game/AddMetric`
642 + * Returns nothing
643 + * `/game/AddMetrics`
644 + * POST request
645 + * Returns nothing
646 +
647 + ### Policy.GAMESEE
648 + * `/game/GetSpecialFlag`
649 + * Query params: `i32_episode`, Edm.Int32
650 + * Returns game.offlinespecialfeature
651 + * `/game/os_SendNotification`
652 + * Query params: `s_sender`, Edm.String; `i32_type`, Edm.Int32; `s_platform`, Edm.String; `i64_lifespan`, Edm.Int64
653 + * POST request
654 + * Returns nothing
655 + * `/game/os_TranslatePlatformIds`
656 + * POST request
657 + * Returns Collection(game.PlatformIDInfo)
658 + * `/game/osGetConsumablesInfo`
659 + * Query params: `s_uid`, Edm.String
660 + * Returns Edm.String
661 + * `/game/Steam_GetUserInfo`
662 + * Query params: `s_uid`, Edm.String
663 + * Returns game.ossteamresponse
664 + * `/game/os_GetLastMetrics`
665 + * Query params: `i32_n`, Edm.Int32
666 + * Returns Collection(game.os_metric)
667 + * `/game/os_GetMetric`
668 + * Query params: `s_uuid`, Edm.String
669 + * Returns game.os_metric
670 + * `/game/GetUserProfileGameSpecific`
671 + * Query params: `s_uid`, Edm.String
672 + * Returns game.userprofile
673 + * `/game/os_GetUserProfileGameSpecific`
674 + * Query params: `s_uid`, Edm.String
675 + * Returns game.userprofile
676 + * `/game/GetUserProfileCountry`
677 + * Query params: `s_uid`, Edm.String
678 + * Returns Edm.String
679 + * `/game/os_GetUserProfileCountry`
680 + * Query params: `s_uid`, Edm.String
681 + * Returns Edm.String
682 + * `/game/UpdateSEMinfo`
683 + * Query params: `s_semid`, Edm.String
684 + * POST request
685 + * Returns Edm.Boolean
686 + * `/game/DeleteSEMinfo`
687 + * Query params: `s_semid`, Edm.String
688 + * Returns Edm.Boolean
689 + * `/game/LinkToSEM`
690 + * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
691 + * Returns Edm.Boolean
692 + * `/game/UnlinkFromSEM`
693 + * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
694 + * Returns Edm.Boolean

blha303 revised this gist 1470233103. Go to revision

3 files changed, 383 insertions, 1 deletion

docs.md

@@ -86,7 +86,7 @@ Making me listen to Obstacles again >_<
86 86 * JSON data, https://gist.github.com/blha303/144499eeb67dface9a83371c17f9513b
87 87 * Returns `0`, maybe means profile isn't updated when the given UID has already completed the given chapter
88 88
89 - ### Other
89 + ### Other public endpoints
90 90
91 91 * `/game/CommunityFactsGetAll`
92 92 * Returns all choice stats
@@ -118,3 +118,6 @@ Making me listen to Obstacles again >_<
118 118 * Returns a user's friends list and the info of their last UpdateUserProfileGameSpecific submission. Possible privacy hole
119 119 * Returns https://gist.github.com/blha303/9d4d4429137541be5a8771ac616b4d85
120 120
121 + ### Unknown/restricted endpoints
122 +
123 +

zGenerateDocs.py(file created)

@@ -0,0 +1,35 @@
1 + #!/usr/bin/env python3
2 + from json import load
3 +
4 + with open("/tmp/lisserviceinfo.json") as f: # from os_GetServiceInfo
5 + d = load(f)["d"]
6 +
7 + f = d["Metadata"]["Schemas"][0]["EntityContainers"][0]["FunctionImports"]
8 +
9 + funcs = {}
10 + for func in f:
11 + if not func["AuthPolicy"] in funcs:
12 + funcs[func["AuthPolicy"]] = []
13 + funcs[func["AuthPolicy"]].append(func)
14 +
15 + def format(func):
16 + out = "* `/game/{Name}`\n".format(**func)
17 + if "Parameters" in func:
18 + func["params"] = ["`{Name}`, {Type}".format(**p) for p in func["Parameters"]]
19 + out += " * Query params: " + "; ".join(func["params"]) + "\n"
20 + if func["HttpMethod"] != "GET":
21 + out += " * {HttpMethod} request\n".format(**func)
22 + if "ReturnType" in func:
23 + out += " * Returns {ReturnType}".format(**func)
24 + else:
25 + out += " * Returns nothing"
26 + return out
27 +
28 + for authpolicy, functions in funcs.items():
29 + print("### {}".format(authpolicy))
30 + for f in functions:
31 + try:
32 + print(format(f))
33 + except:
34 + print(f)
35 + raise

zGeneratedDocs.md(file created)

@@ -0,0 +1,344 @@
1 + ### Policy.ANY
2 + * `/game/AddMetric`
3 + * Returns nothing
4 + * `/game/AddMetrics`
5 + * POST request
6 + * Returns nothing
7 + ### Policy.SEE
8 + * `/game/UpdateInfocastMessages`
9 + * Query params: `_id`, Edm.String; `s_Type`, Edm.String; `s_DateBegin`, Edm.String; `s_DateEnd`, Edm.String; `i16_episode`, Edm.Int32
10 + * POST request
11 + * Returns Edm.Boolean
12 + * `/game/DeleteInfocastMessages`
13 + * Query params: `_id`, Edm.String
14 + * Returns Edm.Boolean
15 + * `/game/GetInfocastMessages`
16 + * Returns Collection(game.infocast)
17 + * `/game/EnableSpecialFlag`
18 + * Query params: `i32_episode`, Edm.Int32; `b_enable`, Edm.Boolean
19 + * POST request
20 + * Returns Edm.Boolean
21 + * `/game/AddInfocastMessages`
22 + * Query params: `s_Type`, Edm.String; `s_DateBegin`, Edm.String; `s_DateEnd`, Edm.String; `i16_episode`, Edm.Int32
23 + * POST request
24 + * Returns Edm.String
25 + * `/game/os_CreateSegment`
26 + * Query params: `s_segment`, Edm.String
27 + * POST request
28 + * Returns Edm.String
29 + * `/game/os_GetSegmentMetadata`
30 + * Query params: `s_segment`, Edm.String
31 + * Returns Edm.String
32 + * `/game/os_GetSegmentList`
33 + * Returns Edm.String
34 + * `/game/os_UpdateSegmentMetadata`
35 + * Query params: `s_segment`, Edm.String
36 + * POST request
37 + * Returns Edm.String
38 + * `/game/os_DeleteSegment`
39 + * Query params: `s_segment`, Edm.String
40 + * Returns Edm.String
41 + * `/game/os_AddPlayersToSegment`
42 + * Query params: `s_segment`, Edm.String
43 + * POST request
44 + * Returns Edm.String
45 + * `/game/os_GetPlayersFromSegment`
46 + * Query params: `s_segment`, Edm.String
47 + * Returns Edm.String
48 + * `/game/os_GetSegmentsFromPlayer`
49 + * Query params: `s_uid`, Edm.String
50 + * Returns Edm.String
51 + * `/game/os_RemovePlayersFromSegment`
52 + * Query params: `s_segment`, Edm.String
53 + * POST request
54 + * Returns Edm.String
55 + * `/game/os_AddUsageLog`
56 + * Query params: `s_segment`, Edm.String; `s_log`, Edm.String
57 + * Returns Edm.String
58 + * `/game/os_GetUsageLogs`
59 + * Query params: `s_segment`, Edm.String
60 + * Returns Edm.String
61 + * `/game/os_CreateABTest`
62 + * Query params: `s_abtest`, Edm.String
63 + * POST request
64 + * Returns Edm.String
65 + * `/game/os_GetABTestMetadata`
66 + * Query params: `s_abtest`, Edm.String
67 + * Returns Edm.String
68 + * `/game/os_GetABTestList`
69 + * Returns Edm.String
70 + * `/game/os_UpdateABTestMetadata`
71 + * Query params: `s_abtest`, Edm.String
72 + * POST request
73 + * Returns Edm.String
74 + * `/game/os_DeleteABTest`
75 + * Query params: `s_abtest`, Edm.String
76 + * Returns Edm.String
77 + * `/game/os_AddUsageLogToABTest`
78 + * Query params: `s_abtest`, Edm.String; `s_log`, Edm.String
79 + * Returns Edm.String
80 + * `/game/os_GetUsageLogsFromABTest`
81 + * Query params: `s_abtest`, Edm.String
82 + * Returns Edm.String
83 + * `/game/os_AddSegmentToABTest`
84 + * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
85 + * Returns Edm.String
86 + * `/game/os_RemoveSegmentFromABTest`
87 + * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
88 + * Returns Edm.String
89 + * `/game/os_SetDefaultABTestSegment`
90 + * Query params: `s_abtest`, Edm.String; `s_segment`, Edm.String
91 + * Returns Edm.String
92 + * `/game/os_SetDefaultABTestSegmentAsRandom`
93 + * Query params: `s_abtest`, Edm.String
94 + * Returns Edm.String
95 + * `/game/os_GetPlayerSegmentFromABTest`
96 + * Query params: `s_abtest`, Edm.String; `s_uid`, Edm.String
97 + * Returns Edm.String
98 + * `/game/os_CheckABTestConsistency`
99 + * Query params: `s_abtest`, Edm.String
100 + * Returns Edm.String
101 + ### Policy.GAME
102 + * `/game/UpdateUserProfileGameSpecific`
103 + * Query params: `s_uid`, Edm.String
104 + * POST request
105 + * Returns Edm.Int32
106 + * `/game/SetUserProfileFriends`
107 + * Query params: `s_uid`, Edm.String
108 + * POST request
109 + * Returns Edm.Int32
110 + * `/game/CommunityFactsGetEpisode`
111 + * Query params: `i16_episode`, Edm.Int32
112 + * Returns Collection(game.communityfactreturn)
113 + * `/game/CommunityFactsGetAll`
114 + * Returns Collection(game.communityfactreturn)
115 + * `/game/GetFriendsProfileStats`
116 + * Query params: `s_uid`, Edm.String; `i16_episode`, Edm.Int32
117 + * Returns Collection(game.communityfactreturn)
118 + * `/game/GetSeasonPassOfferIdList`
119 + * Query params: `s_region`, Edm.String
120 + * Returns Collection(game.offerid)
121 + * `/game/SetUserProfileGameSpecific`
122 + * Query params: `s_uid`, Edm.String
123 + * POST request
124 + * Returns Edm.Int32
125 + * `/game/os_GetPlayer`
126 + * Query params: `UID`, Edm.String
127 + * Returns game.os_player
128 + * `/game/os_GetGeoLocation`
129 + * Returns game.GeoLocation
130 + * `/game/SEM_DeleteUser`
131 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
132 + * Returns game.Result
133 + * `/game/SEM_UnlinkPlayer`
134 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
135 + * Returns game.Result
136 + * `/game/SEM_GetLinkedAccounts`
137 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
138 + * Returns Collection(game.SEMLinkedAccount)
139 + * `/game/FB_PostToWall`
140 + * Query params: `s_facebookID`, Edm.String
141 + * POST request
142 + * Returns game.Result
143 + * `/game/FB_PostImageToWall`
144 + * Query params: `s_facebookID`, Edm.String; `s_imageName`, Edm.String; `s_linkName`, Edm.String; `s_linkCaption`, Edm.String; `s_linkDescription`, Edm.String
145 + * POST request
146 + * Returns game.Result
147 + * `/game/osNewTransaction`
148 + * Query params: `s_uid`, Edm.String; `s_offerIds`, Edm.String
149 + * Returns game.txninfo
150 + * `/game/osCreateCustomTransaction`
151 + * Query params: `s_uid`, Edm.String
152 + * POST request
153 + * Returns game.txninfo
154 + * `/game/osFinalizeTransaction`
155 + * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64
156 + * Returns game.txninfo
157 + * `/game/osCancelTransaction`
158 + * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64; `i32_reason`, Edm.Int32
159 + * Returns game.txninfo
160 + * `/game/osPreTransferTransaction`
161 + * Query params: `s_uid`, Edm.String; `i64_txnId`, Edm.Int64
162 + * POST request
163 + * Returns game.txninfo
164 + * `/game/osGetIncompleteTransaction`
165 + * Query params: `s_uid`, Edm.String
166 + * Returns Collection(game.txninfo)
167 + * `/game/CreateUserProfile`
168 + * Query params: `s_uid`, Edm.String
169 + * Returns Edm.Boolean
170 + * `/game/os_CreateUserProfile`
171 + * Query params: `s_uid`, Edm.String
172 + * Returns Edm.Int32
173 + * `/game/os_SetUserProfileGameSpecific`
174 + * Query params: `s_uid`, Edm.String
175 + * POST request
176 + * Returns Edm.Int32
177 + * `/game/os_UpdateUserProfileGameSpecific`
178 + * Query params: `s_uid`, Edm.String
179 + * POST request
180 + * Returns Edm.Int32
181 + * `/game/SetUserProfileCountry`
182 + * Query params: `s_uid`, Edm.String; `s_country`, Edm.String
183 + * Returns Edm.Boolean
184 + * `/game/os_SetUserProfileCountry`
185 + * Query params: `s_uid`, Edm.String; `s_country`, Edm.String
186 + * Returns Edm.Boolean
187 + * `/game/PS4_GetFriendList`
188 + * Query params: `s_uid`, Edm.String
189 + * Returns Edm.String
190 + ### Policy.GAMESEE
191 + * `/game/GetSpecialFlag`
192 + * Query params: `i32_episode`, Edm.Int32
193 + * Returns game.offlinespecialfeature
194 + * `/game/os_SendNotification`
195 + * Query params: `s_sender`, Edm.String; `i32_type`, Edm.Int32; `s_platform`, Edm.String; `i64_lifespan`, Edm.Int64
196 + * POST request
197 + * Returns nothing
198 + * `/game/os_TranslatePlatformIds`
199 + * POST request
200 + * Returns Collection(game.PlatformIDInfo)
201 + * `/game/osGetConsumablesInfo`
202 + * Query params: `s_uid`, Edm.String
203 + * Returns Edm.String
204 + * `/game/Steam_GetUserInfo`
205 + * Query params: `s_uid`, Edm.String
206 + * Returns game.ossteamresponse
207 + * `/game/os_GetLastMetrics`
208 + * Query params: `i32_n`, Edm.Int32
209 + * Returns Collection(game.os_metric)
210 + * `/game/os_GetMetric`
211 + * Query params: `s_uuid`, Edm.String
212 + * Returns game.os_metric
213 + * `/game/GetUserProfileGameSpecific`
214 + * Query params: `s_uid`, Edm.String
215 + * Returns game.userprofile
216 + * `/game/os_GetUserProfileGameSpecific`
217 + * Query params: `s_uid`, Edm.String
218 + * Returns game.userprofile
219 + * `/game/GetUserProfileCountry`
220 + * Query params: `s_uid`, Edm.String
221 + * Returns Edm.String
222 + * `/game/os_GetUserProfileCountry`
223 + * Query params: `s_uid`, Edm.String
224 + * Returns Edm.String
225 + * `/game/UpdateSEMinfo`
226 + * Query params: `s_semid`, Edm.String
227 + * POST request
228 + * Returns Edm.Boolean
229 + * `/game/DeleteSEMinfo`
230 + * Query params: `s_semid`, Edm.String
231 + * Returns Edm.Boolean
232 + * `/game/LinkToSEM`
233 + * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
234 + * Returns Edm.Boolean
235 + * `/game/UnlinkFromSEM`
236 + * Query params: `s_semid`, Edm.String; `s_authSystem`, Edm.String; `s_authId`, Edm.String
237 + * Returns Edm.Boolean
238 + ### Policy.OS
239 + * `/game/CalculateCommunityProfileStats`
240 + * Returns Edm.Int32
241 + * `/game/CalculateFriendsProfileStats`
242 + * Returns Edm.Int32
243 + * `/game/UpdateAvailableEpisodeOfferId`
244 + * Query params: `s_region`, Edm.String; `i32_episode`, Edm.Int32
245 + * Returns Edm.String
246 + * `/game/os_GetMonitoring`
247 + * Returns game.ServerStatus
248 + * `/game/os_GetOptions`
249 + * Returns game.Options
250 + * `/game/os_SetOptions`
251 + * Query params: `name`, Edm.String; `value`, Edm.String
252 + * Returns game.Options
253 + * `/game/ClearCache`
254 + * Query params: `s_Name`, Edm.String
255 + * Returns Edm.String
256 + * `/game/os_NotificationExpired`
257 + * Query params: `s_id`, Edm.String; `i32_type`, Edm.Int32; `s_message`, Edm.String; `s_platform`, Edm.String; `s_sender`, Edm.String
258 + * Returns nothing
259 + * `/game/DeleteUserProfile`
260 + * Query params: `s_uid`, Edm.String
261 + * Returns Edm.Boolean
262 + * `/game/GetUserProfileGlobal`
263 + * Query params: `s_uid`, Edm.String
264 + * Returns game.userprofile
265 + * `/game/os_GetUserProfileGlobal`
266 + * Query params: `s_uid`, Edm.String
267 + * Returns game.userprofile
268 + * `/game/UpdateUserProfileGlobal`
269 + * Query params: `s_uid`, Edm.String
270 + * POST request
271 + * Returns Edm.Int32
272 + * `/game/os_UpdateUserProfileGlobal`
273 + * Query params: `s_uid`, Edm.String
274 + * POST request
275 + * Returns Edm.Int32
276 + * `/game/GetUserProfilePlatform`
277 + * Query params: `s_uid`, Edm.String
278 + * Returns game.userprofile
279 + * `/game/os_GetUserProfilePlatform`
280 + * Query params: `s_uid`, Edm.String
281 + * Returns game.userprofile
282 + * `/game/UpdateUserProfilePlatform`
283 + * Query params: `s_uid`, Edm.String
284 + * POST request
285 + * Returns Edm.Int32
286 + * `/game/os_UpdateUserProfilePlatform`
287 + * Query params: `s_uid`, Edm.String
288 + * POST request
289 + * Returns Edm.Int32
290 + * `/game/GetUserProfileFranchise`
291 + * Query params: `s_uid`, Edm.String
292 + * Returns game.userprofile
293 + * `/game/os_GetUserProfileFranchise`
294 + * Query params: `s_uid`, Edm.String
295 + * Returns game.userprofile
296 + * `/game/UpdateUserProfileFranchise`
297 + * Query params: `s_uid`, Edm.String
298 + * POST request
299 + * Returns Edm.Int32
300 + * `/game/os_UpdateUserProfileFranchise`
301 + * Query params: `s_uid`, Edm.String
302 + * POST request
303 + * Returns Edm.Int32
304 + * `/game/GetUserProfileGameGeneric`
305 + * Query params: `s_uid`, Edm.String
306 + * Returns game.userprofile
307 + * `/game/os_GetUserProfileGameGeneric`
308 + * Query params: `s_uid`, Edm.String
309 + * Returns game.userprofile
310 + * `/game/UpdateUserProfileGameGeneric`
311 + * Query params: `s_uid`, Edm.String
312 + * POST request
313 + * Returns Edm.Int32
314 + * `/game/os_UpdateUserProfileGameGeneric`
315 + * Query params: `s_uid`, Edm.String
316 + * POST request
317 + * Returns Edm.Int32
318 + * `/game/ValidateSEM`
319 + * Returns Edm.Boolean
320 + * `/game/os_BackupUserProfiles`
321 + * Returns Edm.Int32
322 + * `/game/os_TestCache`
323 + * Query params: `s_cacheName`, Edm.String
324 + * Returns Edm.String
325 + ### Policy.PUBLIC
326 + * `/game/GetTodaysInfocast`
327 + * Query params: `s_locale`, Edm.String; `i16_episode`, Edm.Int32
328 + * Returns Collection(game.infocast)
329 + * `/game/os_GetStatus`
330 + * Returns game.ClientInfo
331 + * `/game/os_GetServiceInfo`
332 + * Returns nothing
333 + * `/game/os_GetChangeLog`
334 + * Returns nothing
335 + * `/game/os_GetChangeLogHTML`
336 + * Returns nothing
337 + * `/game/os_Ping`
338 + * Returns Edm.Int64
339 + * `/game/SEM_Login`
340 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
341 + * Returns game.SEMSubmit
342 + * `/game/SEM_SubmitEmail`
343 + * Query params: `s_type`, Edm.String; `s_value`, Edm.String
344 + * Returns game.SEMSubmit

blha303 revised this gist 1470231708. Go to revision

3 files changed, 58 insertions, 9 deletions

docs.md

@@ -1,8 +1,14 @@
1 + ## Contents
2 +
3 + * [Docs](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-docs-md)
4 + * [Setting up capture process](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-revlis-md)
5 + * [Investigating what headers were necessary](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-whats-needed-md)
6 +
1 7 The server returns `X-Powered-By: Lara Croft` for each response, cool easter egg.
2 8
3 9 ### On game start
4 10
5 - The game sends several requests in the opening videos. In the below documentation, text in curly braces (\{\}) is shorthand for `{ "d": {"os_Ping": ... } }` where os_Ping is the current endpoint being accessed and ... is the contents of the curly braces.
11 + The game sends several requests in the opening videos. In the below documentation, all requests have `{ "d": something }`, so everything outside of `something` will be omitted.
6 12
7 13 Necessary headers for each request (may vary, untested):
8 14
@@ -16,7 +22,7 @@ Necessary headers for each request (may vary, untested):
16 22
17 23 1. `/game/os_Ping`
18 24 * Likely confirming that the service is up
19 - * Returns `{ 6739 }`, different number each time
25 + * Returns `{"os_Ping": 6739}`, different number each time
20 26
21 27 2. `/game/os_GetServiceInfo`
22 28 * Returns information about the IP address used for connection and a list of metadata and endpoints.
@@ -27,14 +33,14 @@ Necessary headers for each request (may vary, untested):
27 33 4. `/game/SEM_Login`
28 34 * Probably for the Square Enix account login
29 35 * Query params: `s_type` is 'UID' here; `s_value` is my steam user ID, a long string of digits
30 - * Returns `{ "__metadata": { "type": "game.SEMSubmit" }, "b_confirmed": true, "s_SEMID": "string of numbers", "s_email": "email address", "s_facebookID": "probably facebook user identifier", "s_longTermToken": "string of numbers and letters" }`
36 + * Returns `{ "SEM_Login": { "__metadata": { "type": "game.SEMSubmit" }, "b_confirmed": true, "s_SEMID": "string of numbers", "s_email": "email address", "s_facebookID": "probably facebook user identifier", "s_longTermToken": "string of numbers and letters" } }`
31 37
32 38 5. It sends the above request twice, unclear why
33 39
34 40 6. `/game/CreateUserProfile`
35 41 * Square Enix login again? Probably making sure that there's an account for the given steam ID for stats collection even if it isn't linked to a SEM account
36 42 * Query params: `s_uid` is my steam user ID
37 - * Returns `{ true }` and a header `OS-AuthResponse` containing the new `OS-AuthTicketData` to be used for subsequent requests
43 + * Returns `{ "CreateUserProfile": true }` and a header `OS-AuthResponse` containing the new `OS-AuthTicketData` to be used for subsequent requests
38 44
39 45 7. `/game/GetTodaysInfocast`
40 46 * Returns a list of messages to be scrolled at the bottom of the main menu
@@ -45,7 +51,7 @@ Necessary headers for each request (may vary, untested):
45 51 8. `/game/SetUserProfileFriends`
46 52 * Sends list of UIDs for user's friends list
47 53 * POST requests, `["UID", ...]`
48 - * Returns `{ 0 }`, friends service probably disabled
54 + * Returns `{"SetUserProfileFriends": 0 }`, friends service probably disabled
49 55
50 56 9. `/game/GetSeasonPassOfferIdList`
51 57 * No clue what this is for, you'd think it would show information on the episodes but it just returns the same thing five times.
@@ -69,7 +75,7 @@ Necessary headers for each request (may vary, untested):
69 75 2. `/game/GetFriendsProfileStats`
70 76 * Apparently would return the same as `/game/CommunityFactsGetEpisode` with additional info on friend stats, but currently returns nothing
71 77 * Query params: `i16_episode`, the given episode number; `s_uid`, the steam/other user id
72 - * Currently returns `{ "d": {"results": [] } }`
78 + * Currently returns `{"results": [] }`
73 79
74 80 ### On finishing an episode
75 81
@@ -78,6 +84,37 @@ Making me listen to Obstacles again >_<
78 84 1. `/game/UpdateUserProfileGameSpecific`
79 85 * POST request, summarizes choices made. Called when credits start
80 86 * JSON data, https://gist.github.com/blha303/144499eeb67dface9a83371c17f9513b
81 - * Returns `{ 0 }`, maybe means profile isn't updated when the given UID has already completed the given chapter
87 + * Returns `0`, maybe means profile isn't updated when the given UID has already completed the given chapter
88 +
89 + ### Other
90 +
91 + * `/game/CommunityFactsGetAll`
92 + * Returns all choice stats
93 + * Returns a similar output to CommunityFactsGetEpisode, but with all five episodes
94 +
95 + * `/game/GetSpecialFlag`
96 + * Query param: `i32_episode`, episode number
97 + * Returns `{ "__metadata" : {"uri" : "https://lis.os.eidos.com/game/offlinespecialfeatures(1)", "type" : "game.offlinespecialfeature"}, "i32_episode" : 1, "b_lipsync_active" : false }`
98 +
99 + * `/game/os_GetStatus`
100 + * Returns `{ "__metadata" : {"type" : "game.ClientInfo"}, "Host" : "lis.os.eidos.com", "ClientIP" : "<ip>", "UserAgent" : "OS/5.0.22/linux/official", "ServerTime" : 1470229891040, "ServletVersion" : "3.0.8" }`
101 +
102 + * `/game/os_GetChangeLog`
103 + * Returns the changelog for the LIS backend. I mean, wow.
104 + * Returns https://gist.github.com/blha303/0f53a12d65f8450c4aa522843df922aa
105 +
106 + * `/game/os_GetChangeLogHTML`
107 + * Returns the changelog in HTML
108 + * Returns https://ptpb.pw/MTw-.html
109 +
110 + * `/game/os_GetGeoLocation`
111 + * Returns `"os_GetGeoLocation" : { "__metadata" : {"type" : "game.GeoLocation"}, "s_countryCode" : "US", "s_cityName" : "Beverley Hills", "s_region" : "555", "s_zipCode" : "", "f_latitude" : "0.0f", "f_longitude" : "0.0f", "i32_metroCode" : 0, "i32_areaCode" : 0 }`
112 +
113 + * `/game/Steam_GetUserInfo`
114 + * Probably needs additional authentication.
115 + * `Returns { "__metadata" : {"uri" : "https://lis.os.eidos.com/game/ossteamresponses('76561197994805502')", "type" : "game.ossteamresponse"}, "s_uid" : "76561197994805502", "i32_errorCode" : 403, "s_errorDesc" : "Forbidden", "s_state" : "", "s_country" : "", "s_currency" : "", "s_status" : "" }`
116 +
117 + * `/game/GetUserProfileGameSpecific`
118 + * Returns a user's friends list and the info of their last UpdateUserProfileGameSpecific submission. Possible privacy hole
119 + * Returns https://gist.github.com/blha303/9d4d4429137541be5a8771ac616b4d85
82 120
83 - No API requests upon completing an achievement.

revlis.md

@@ -1,3 +1,9 @@
1 + ## Contents
2 +
3 + * [Docs](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-docs-md)
4 + * [Setting up capture process](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-revlis-md)
5 + * [Investigating what headers were necessary](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-whats-needed-md)
6 +
1 7 Hello! Today I thought I'd take on the task of reverse engineering the stats screen in Life Is Strange so I could easily request and display the data without needing to start the game. I'm documenting it here for future use, since nobody else seems to have tried this yet.
2 8
3 9 First, you'll need a copy of Life Is Strange on Steam. Second, you'll need to have it working on Linux. The Linux Steam version of LIS has a startup script that sets the ssl certificate locations, you'll need to modify that to be able to MITM the server connections. The game makes requests to https://lis.os.eidos.com, but doesn't verify the certificate in the game. (requests to Feral Interactive, the company that ported LIS to OSX and Linux, do seem to be verified, but they don't matter much)

whats-needed.md

@@ -1,3 +1,9 @@
1 + ## Contents
2 +
3 + * [Docs](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-docs-md)
4 + * [Setting up capture process](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-revlis-md)
5 + * [Investigating what headers were necessary](https://gist.github.com/blha303/101e0db0bf63ea07b1f55862947c9065#file-whats-needed-md)
6 +
1 7 Logging tests for what headers are necessary.
2 8
3 9 ```
@@ -13,4 +19,4 @@ $ curl -H "Accept: application/json" -H "OS-AuthProvider: 6" -H "OS-AuthTicketDa
13 19 {"s_ErrorsCodes":"800","s_ErrorsMessages":"Invalid Header","s_ErrorsDetails":"Header OS-Platform=steam and header OS-System=null are not compatible. Either neither value or both values must be specified. If both values are specified, they must be compatible with eachother."}
14 20 $ curl -H "Accept: application/json" -H "OS-AuthProvider: 6" -H "OS-AuthTicketData: [redacted]" -H "OS-AuthTicketSize: 44" -H "OS-UID: [redacted]" -H "OS-Platform: steam" -H "OS-System: linux" https://lis.os.eidos.com/game/CommunityFactsGetEpisode?i16_episode=3
15 21 {"d" : {"results" : [{"__metadata" : {"uri" : "https://lis.os.eidos.com/game/communityfactreturns('AddedNameToVortex')", "type" : "game.communityfactreturn"}, "f_rate" : "0.610894941634241", "i64_totalCount" : 514, "i64_trueCount" : 314, "i16_ep" : 3, "s_factID" : "AddedNameToVortex"}, ...
16 - ```
22 + ```
Newer Older