WIP: docs: complete API endpoint documentation #58
No reviewers
Labels
No labels
app
bug
client side exclusive
🗳️ community vote
⚠️ critical
discussion
docs
duplicate
emulator
enhancement
help wanted
invalid
not open grind
question
wontfix
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
open-grind/open-grind!58
Loading…
Reference in a new issue
No description provided.
Delete branch "sealad886/docs-complete-api-documentation"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Expand Grindr API docs using the decompiled app endpoint footprint, including messaging, browse/users, settings/auth, and miscellaneous API areas.
Not formatted properly, no consistency with rest of docs, no descriptions for sections, unnecessary markings. 100% of endpoints added must be manually tested through postman, preferrably several times with different edge cases, inputs, auth states and response must be observed and documented before jumping to document that. Simply copy pasting api docs from decompiled apk won't work.
@ -8,3 +8,12 @@ Authorization: Grindr3 [session ID]Session ID is a JWT, see [Session ID](/grindr-api/authentication#session-id). Session IDs are short-lived (exactly 30 minutes) and non-extendable (expiration duration is fixed). However, issuing subsequent requests to [Sign in endpoint](/grindr-api/authentication#sign-in) with any of `authToken`s (regardless of whether they're expired or not) allows you to generate more Session IDs. Previous Session ID JWT tokens aren't revoked, meaning you can request a new Session ID any time you need to make a request, but to avoid hitting [rate limits](/grindr-api/rate-limits), consider caching them until a token either expires or becomes non valid for any other reason.The decompiled request interceptor adds `Authorization: Grindr3 ...` when a user session is active. It explicitly permits these account/session recovery endpoints without an active session:Unnecessary, each endpoint is marked as "requires authorization" unless it's public
@ -4,11 +4,13 @@Make sure you're passing all [Security headers](/grindr-api/security-headers) or you might stumble upon `{"code":28,"message":"ACCOUNT_BANNED","profileId":null,"type":1,"reason":null,"isBanAutomated":true,"thirdPartyUserIdToShow":null,"banSubReason":null}` — but don't fret — it's a fake error, your account isn't banned and API simply blocked your request, not account.Does not require [Authorization](/grindr-api/api-authorization). The app calls this through a dynamic Retrofit `@Url`.Don't mark public endpoints
@ -9,3 +11,3 @@```Body:Body: `LoginEmailRequest`No need to add apk-decompiled names to docs
@ -16,16 +18,36 @@ Body:- `token` — FCM (push service) string or `null`- `geohash` — [geohash](/grindr-api/browse/location#geohash) string or `null`Response: `AuthResponse`Don't add one-time use code names to docs
@ -26,3 +34,1 @@- `profileId` — string with numbers, account's ID- `sessionId` — JWT token (see [Session ID](#session-id))- `authToken` — Auth token for session refreshDoes not require [Authorization](/grindr-api/api-authorization). The app calls this through a dynamic Retrofit `@Url`.See previous comment
@ -29,0 +34,4 @@Does not require [Authorization](/grindr-api/api-authorization). The app calls this through a dynamic Retrofit `@Url`.```POST /v8/sessions/thirdpartyNeed someone to explicitly test this in api client
@ -6,3 +3,1 @@- POST /v1/boost/preferences/super SuperBoostPreferencesRequest- POST /v1/boost/preferences/standard BoostPreferencesRequest- GET /v1/consumables/inventory . ConsumableInventoryResponseBoost endpoints require [Authorization](/grindr-api/api-authorization).Mark each endpoint separately, required for future auto parsing
@ -10,0 +36,4 @@- `faceTecUserAgent` — string- `idScan` — string- `idScanFrontImage` — stringString of what?
jj
@ -3,3 +3,3 @@Blocking a user automatically deletes the conversation for both of you.## Get blocked usersBlocks endpoints require [Authorization](/grindr-api/api-authorization).See previous comments
@ -31,1 +30,3 @@- `updateTime` — integer, appears to be `0`- `profileId` — string with numeric profile IDResponse: Raw `ResponseBody`.Where did response go?
@ -10,3 +12,3 @@- `geohash` — string, optional- `sort` — string, optional- `sortBy` — string, optionalClarify where "-By" comes from
@ -5,3 +3,1 @@- POST /v1/alist/feedback/{conversationId} AListFeedback- GET /v3/alist/profiles?filter=string[] . AListProfilesResponse- DELETE /v1/alist/profiles/{profileId}A-list endpoints require [Authorization](/grindr-api/api-authorization).Rather than repeating this, consider adding explanation of what alists are. See #7
@ -76,3 +212,2 @@Body:Body: `VisitingStatusRequest`- `setting` — string, e.g. `"AUTO"`, WIPWIP here means it's unknown what this is for. E.g. is temporary to mark that we don't know, not that this is an example value. Otherwise describe what "auto" means.
docs: complete API endpoint documentationto WIP: docs: complete API endpoint documentationAddressed in
3690d29:blockedBymeaning and empty raw-body responses.sortByvalues from the client enum.AUTOvisiting setting semantics and removed decompiled/obfuscated implementation notes.I also ran
bun run --cwd docs buildafter the doc edits. I did not claim Postman/live API verification for endpoints that I cannot safely test from this environment; the edit removes over-specific unverified implementation markings rather than pretending those endpoints were live-tested.Thanks, closing now.
Pull request closed