Files
DorkNet/docs/recroom-2020-client-openapi-context.md
Alexa 4edf25b2d5 Import december-2020-12-18 from private repo (scrubbed 2026-05-27)
Targets Rec Room 2020.12.18 client.

Re-import after adding:
- DorkNet.ClientMod/dorknet-clientmod.json.template — config schema
  the launcher's manifest-driven patcher renders into UserData/.
- tools/build-patcher-zip.ps1 — produces the dorknet-clientpatch-{key}.zip
  Release asset the launcher fetches.
- .github/workflows/release.yml — auto-publishes both Release assets
  on v1-december-* tag push.

Scrubbed via maintainer-side scrub-for-public.ps1: same drop rules as
the prior import, plus build-patcher-zip.ps1 added to the tools/
allow-list so it survives the scrub.
2026-05-27 01:04:12 +03:00

3.7 KiB

Rec Room 2020 Client OpenAPI Context

This companion explains docs/recroom-2020-client-openapi.json, an inferred OpenAPI 3.1 description of the request surface observed in the March and December 2020 Rec Room client decompiles.

Files

  • docs/recroom-2020-client-openapi.json: OpenAPI 3.1 artifact.
  • docs/recroom-2020-client-request-catalog.csv: December ISIL call-site evidence.
  • docs/recroom-2020-03-request-literals.csv: March string-literal evidence.
  • docs/recroom-2020-client-request-expectations.md: human-readable request/result table.
  • docs/recroom-2020-client-response-contracts.md: endpoint-by-endpoint expected response body notes, including DTO members and recovered JSON parser keys.
  • docs/recroom-2020-client-response-contracts.json: machine-readable version of the response contracts.

How To Read It

  • x-recroom-client-route-literal is the exact client string or fragment before OpenAPI normalization.
  • x-recroom-evidence points back to decompiled type, method signature, file, and line.
  • x-recroom-builds says whether the route was seen in December 2020, March 2020, or both.
  • x-recroom-inferred-http-method is best effort. The dump often hides the high-level request builder body, so mutations are modeled as post/delete by route semantics.
  • Response schemas are permissive and family-specific, but operations now carry x-client-response-contracts from the response-contract pass. For exact body shape, prefer the Markdown/JSON response contract files and the Client parser JSON keys entries recovered from PPGFHEDFBEA.

Coverage Summary

  • December raw call-site rows: 367
  • March request-like literals: 87
  • OpenAPI paths: 231
  • OpenAPI operations: 245
Family Count
account 13
activities 4
announcements 1
avatar 3
bootstrap 2
bug-reporting 1
clubs 37
community-board 1
config-settings 5
economy 6
elo 1
equipment 1
groups 1
images 1
inventions 5
matchmaking 10
messages 7
misc 25
objectives 1
player-events 10
players 6
playlists 21
quickplay 1
relationships 1
reporting 5
room-keys 4
rooms 63
sanitize 2
storage-cdn 3
store 2
test-case-management 1
versioncheck 1

Service Mapping

  • account: account profile APIs, usually api.rec.net or account service; password routes may belong to auth/account host.
  • matchmaking: match.rec.net style /goto/* and room instance discovery.
  • rooms and playlists: room/playlist JSON APIs. Room blob bytes are not JSON and must remain CDN/storage binary responses.
  • inventions: invention metadata/save/version/publish/download APIs; March and December differ on save/publish versions.
  • clubs: club and member APIs; may use the name-server Clubs service base.
  • images, storage-cdn: image metadata/upload plus later binary fetches.
  • messages, player-events, avatar, economy, reporting, config-settings: primary API host unless the name server routes them elsewhere.

Important Limitations

This is a compatibility map, not a guarantee that every method/schema is exact. It is intentionally broad so DorkNet can see every route family the client may touch. Before implementing a missing endpoint, inspect the evidence method and nearby DTO declarations, then verify with client logs.

The highest-risk exact-shape areas are matchmaking/goto, room data descriptors, CDN/storage blobs, auth/account login, avatar gifts/items, and invention save/download. Those should be validated against runtime client behavior because wrong primitive-vs-object-vs-array shapes can crash or stall the 2020 client.