fix: second pass over the 2023-client wire defects, plus a coverage harness

Fourteen agents worked one server file each over the audit's open findings,
re-verifying every claim against the client binary before changing anything.
Route+verb coverage against the recovered client inventory is now 474/522
(90.8%), up from 86.2% when the harness was first wired up.

Adds ClientRouteCoverageTests, which turns "are we compliant?" into a number
instead of an opinion. It reads data/client-routes-2023.tsv — every request the
2023-03-21 client can issue, recovered from the binary — and asserts each one
has a handler under the verb the client actually uses, separating "no handler"
from "handler exists, wrong verb" since those have different fixes. Remaining
gaps live in KnownGaps, which is expected to shrink and never grow.

Also fixes a real blind spot in EndpointContractDiscovery: it only collected
HttpMethodAttribute, so an action carrying a bare [Route] with no verb attribute
was invisible to it. The CDN's unity_assets handler is exactly that shape, which
had been showing up as a phantom gap.

Notable findings from this pass:

- The club permissions envelope key is literally "Type", not "MembershipType"
  as the audit's suggested fix guessed. Read off the generated reader, then
  cross-checked against the 2020 decompile — the int bitmask we were emitting
  was wrong for BOTH client generations, not just 2023.
- Room-consumable purchase responses carry OperationResult as an OBJECT
  { Status, InventoryItem }; the scalar operation enum belongs in
  BalanceUpdateResult. The base type OKHNOPLBOFP holds a single BGHBAILNNJJ,
  which exposes exactly those two properties. A test asserting the old scalar
  shape was corrected rather than the code.
- buyProgressionEventXpBoost blind-inserted an ObjectiveProgress row whose
  (PlayerId, Key) is unique, so a second purchase of the same boost threw
  "UNIQUE constraint failed" and 500'd AFTER taking the player's currency.
  Now an upsert.

Agents were forbidden from faking fixes they could not complete in their own
file, and several correctly refused: club role permissions, club additional
image slots, announcement meta, MinLevel/ClubChatEnabled, currency purchase
offer ordering, and room-key image/currency columns all need new entities or
columns. Those are deliberately left for a single coherent schema change rather
than stubbed out here.
This commit is contained in:
Alexa
2026-07-28 08:50:58 +03:00
parent 289072583e
commit 90e069ee4b
14 changed files with 3747 additions and 790 deletions
@@ -0,0 +1,110 @@
using System.Text.RegularExpressions;
namespace DorkNet.Server.Tests;
/// <summary>
/// Asserts that every HTTP request the Rec Room 2023-03-21 client can issue has
/// a handler on this server, under the verb the client actually uses.
///
/// Rec Room is shut down, so the client can't be observed against a live server.
/// <c>data/client-routes-2023.tsv</c> is the recovered inventory of what it
/// asks for — see <c>docs/recroom-2023-client-api-complete.md</c> for how it was
/// extracted. This test is the regression guard on that inventory: adding a
/// client route without a handler, or moving a handler to a different verb,
/// fails here rather than silently 404/405-ing a real player.
///
/// Routes not yet implemented live in <see cref="KnownGaps"/>. That list is
/// expected to shrink and never grow. Deleting an entry as you implement it is
/// the point — it is the project's running score against the client.
/// </summary>
public sealed class ClientRouteCoverageTests
{
/// <summary>Client routes with no handler yet. Each entry is
/// <c>VERB route</c> exactly as it appears in the inventory file.</summary>
private static readonly HashSet<string> KnownGaps = new(StringComparer.OrdinalIgnoreCase)
{
// (populated from the current gap report; remove as they are implemented)
};
[Fact]
public void Every_client_route_has_a_handler()
{
var client = LoadClientRoutes();
Assert.NotEmpty(client);
var discovered = EndpointContractDiscovery.Discover()
.Select(r => (Verb: r.Method.ToUpperInvariant(), Pattern: Normalise(r.Template)))
.ToList();
var server = discovered.ToHashSet();
// A bare [Route] with no verb attribute serves every verb.
var verbless = discovered
.Where(d => d.Verb == "ANY")
.Select(d => d.Pattern)
.ToHashSet(StringComparer.Ordinal);
var serverAnyVerb = discovered.Select(s => s.Pattern).ToHashSet(StringComparer.Ordinal);
var missing = new List<string>();
var wrongVerb = new List<string>();
foreach (var (verb, route, _) in client)
{
var pattern = Normalise(route);
if (server.Contains((verb, pattern)) || verbless.Contains(pattern)) continue;
// Distinguish "no handler at all" from "handler exists, wrong verb" —
// they have different causes and different fixes.
if (serverAnyVerb.Contains(pattern)) wrongVerb.Add($"{verb} {route}");
else missing.Add($"{verb} {route}");
}
var gaps = missing.Concat(wrongVerb)
.Where(g => !KnownGaps.Contains(g))
.OrderBy(g => g, StringComparer.Ordinal)
.ToList();
var covered = client.Count - missing.Count - wrongVerb.Count;
var pct = 100.0 * covered / client.Count;
Assert.True(gaps.Count == 0,
$"""
Client route coverage: {covered}/{client.Count} ({pct:F1}%).
{missing.Count} missing, {wrongVerb.Count} wrong-verb, {KnownGaps.Count} known gaps.
Unlisted gaps ({gaps.Count}) — implement them, or add to KnownGaps with a reason:
{string.Join(Environment.NewLine, gaps)}
""");
}
/// <summary>Collapse a route to a comparable shape: no host, no leading or
/// trailing slash, no query, and every parameter — the client's <c>{0}</c>
/// and the server's <c>{id:long}</c> alike — reduced to <c>*</c>.</summary>
private static string Normalise(string route)
{
var r = route.Trim();
var q = r.IndexOf('?');
if (q >= 0) r = r[..q];
r = r.Trim('/', '~');
r = Regex.Replace(r, @"\{[^}]*\}", "*");
return r.ToLowerInvariant();
}
private static List<(string Verb, string Route, string Subsystem)> LoadClientRoutes()
{
var path = Path.Combine(AppContext.BaseDirectory, "data", "client-routes-2023.tsv");
Assert.True(File.Exists(path), $"missing route inventory at {path}");
var rows = new List<(string, string, string)>();
foreach (var line in File.ReadLines(path))
{
if (line.Length == 0 || line[0] == '#') continue;
var parts = line.Split('\t');
if (parts.Length < 2) continue;
rows.Add((parts[0].Trim().ToUpperInvariant(), parts[1].Trim(),
parts.Length > 2 ? parts[2].Trim() : string.Empty));
}
return rows;
}
}
@@ -24,4 +24,9 @@
<Using Include="Xunit" />
</ItemGroup>
<ItemGroup>
<!-- Recovered client route inventory read by ClientRouteCoverageTests. -->
<Content Include="data\**" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
</Project>
@@ -36,7 +36,20 @@ public static partial class EndpointContractDiscovery
{
var httpAttrs = method.GetCustomAttributes(inherit: true)
.OfType<HttpMethodAttribute>()
.Cast<IRouteTemplateProvider>()
.ToArray();
// An action can carry a bare [Route("...")] with no [HttpGet]/[HttpPost],
// which routes ALL verbs — the CDN's unity_assets handler is the live
// example. Skipping those made the discovered table under-report the
// server, so route-coverage checks saw phantom gaps.
if (httpAttrs.Length == 0)
{
httpAttrs = method.GetCustomAttributes(inherit: true)
.OfType<IRouteTemplateProvider>()
.Where(a => !string.IsNullOrWhiteSpace(a.Template))
.ToArray();
}
if (httpAttrs.Length == 0)
{
continue;
@@ -44,8 +57,8 @@ public static partial class EndpointContractDiscovery
foreach (var attr in httpAttrs)
{
var attrMethods = attr.HttpMethods.Any()
? attr.HttpMethods
var attrMethods = attr is HttpMethodAttribute { HttpMethods: var verbs } && verbs.Any()
? verbs
: new[] { "ANY" };
foreach (var httpMethod in attrMethods)
@@ -95,7 +95,12 @@ public sealed class RoomConsumablesShopTests : IClassFixture<DorkNetServerFactor
"ExpectedPriceAndCurrency": { "Price": 5, "CurrencyId": null }
}
""");
Assert.Equal(6, badPrice.GetProperty("OperationResult").GetInt32()); // RequestedPriceDoesNotMatch
// OperationResult is an OBJECT { Status, InventoryItem } — the base type
// OKHNOPLBOFP holds a single BGHBAILNNJJ, which itself exposes the status
// enum plus the inventory row. The scalar token-operation enum lives in
// BalanceUpdateResult (Nullable<CABBDKFODEC>) on MJKFEHPIDME.
Assert.Equal(6, badPrice.GetProperty("BalanceUpdateResult").GetInt32()); // RequestedPriceDoesNotMatch
Assert.Equal(38, badPrice.GetProperty("OperationResult").GetProperty("Status").GetInt32());
var balanceBefore = badPrice.GetProperty("TokenBalanceResponse").GetProperty("Balance").GetInt64();
// ── Purchase (client stores NewConcurrencyCode locally) ──────────
@@ -106,7 +111,7 @@ public sealed class RoomConsumablesShopTests : IClassFixture<DorkNetServerFactor
"ExpectedPriceAndCurrency": { "Price": 10, "CurrencyId": null }
}
""");
Assert.Equal(0, purchase.GetProperty("OperationResult").GetInt32());
Assert.Equal(0, purchase.GetProperty("OperationResult").GetProperty("Status").GetInt32());
var tokenBalance = purchase.GetProperty("TokenBalanceResponse");
Assert.Equal(2, tokenBalance.GetProperty("CurrencyType").GetInt32());
Assert.Equal(balanceBefore - 10, tokenBalance.GetProperty("Balance").GetInt64());
@@ -0,0 +1,525 @@
# Every HTTP request the Rec Room 2023-03-21 client can issue.
# Recovered from the client binary; see docs/recroom-2023-client-api-complete.md.
# verb<TAB>route<TAB>subsystem
GET account/bulk identity-account
POST account/bulk identity-account
GET account/isactivecreator/me identity-account
DELETE account/me identity-account
GET account/me identity-account
POST account/me/changepassword identity-account
POST account/me/createlogintoken identity-account
GET account/me/haspassword identity-account
POST account/me/remoteauth identity-account
POST account/recoverpassword identity-account
GET account/search identity-account
GET account/{0}/bio identity-account
GET account/{0}/clubs identity-account
PUT accountprivacysettings/recenthistoryvisibility identity-account
GET accountprivacysettings/{0} identity-account
GET accounts/{0}/receives/{1} identity-account
POST actionlink config-telemetry
GET actionlink/{code} config-telemetry
POST actionlink/{code}/consume config-telemetry
GET announcements/club/{clubId} config-telemetry
POST announcements/club/{clubId} config-telemetry
DELETE announcements/club/{clubId}/{announcementId} config-telemetry
PUT announcements/club/{clubId}/{announcementId} config-telemetry
POST announcements/club/{clubId}/{announcementId}/read config-telemetry
GET announcements/mine config-telemetry
GET announcements/subscription/mine config-telemetry
GET announcements/v2/mine/unread config-telemetry
GET announcements/v2/mine/unread?sendAnnouncements=true config-telemetry
POST api/AppIntegrity/v1/iospaymentqueuefailed commerce-subscription
POST api/AppIntegrity/v1/iosproducts commerce-subscription
GET api/CampusCard/PS5RecRoomPlusEnabledForAllPlayers commerce-subscription
POST api/CampusCard/v1/UpdateAndGetSubscription commerce-subscription
POST api/PlayerCheer/v1/SetSelectedCheer progression-misc
POST api/PlayerCheer/v1/create progression-misc
POST api/PlayerReporting/v1/deviceId moderation-safety
POST api/PlayerReporting/v1/hile moderation-safety
POST api/PlayerReporting/v1/instantKick moderation-safety
GET api/PlayerReporting/v1/moderationBlockDetails moderation-safety
GET api/PlayerReporting/v1/voteToKickReasons moderation-safety
POST api/PlayerReporting/v3/create moderation-safety
POST api/PlayerReporting/v3/voteToKick moderation-safety
GET api/activities/charades/v1/words/{0} progression-misc
POST api/ageverification/generateCode moderation-safety
GET api/announcement/v1/get config-telemetry
GET api/apple/musicpromotion/active commerce-subscription
GET api/apple/musicpromotion/code commerce-subscription
GET api/avatar/v1/defaultbaseavataritems avatar-inventory
GET api/avatar/v1/defaultunlocked avatar-inventory
GET api/avatar/v1/lockeditems avatar-inventory
GET api/avatar/v2 avatar-inventory
GET api/avatar/v2/gifts avatar-inventory
POST api/avatar/v2/gifts/generate avatar-inventory
POST api/avatar/v2/set avatar-inventory
GET api/avatar/v2/{playerId} avatar-inventory
POST api/avatar/v3/gifts/generate avatar-inventory
GET api/avatar/v3/saved avatar-inventory
POST api/avatar/v3/saved/set avatar-inventory
GET api/avatar/v4/items avatar-inventory
GET api/banappeal/generateCode moderation-safety
GET api/catalog/v1/all?onlyAvailableSkus=true avatar-inventory
GET api/challenge/v2/getCurrent progression-misc
POST api/challenge/v2/updateProgress progression-misc
POST api/checklist/v1/complete progression-misc
GET api/checklist/v1/current progression-misc
POST api/clubreporting/v1/report moderation-safety
GET api/communityboard/v2/current progression-misc
GET api/config/v1/amplitude config-telemetry
GET api/config/v1/azurespeech config-telemetry
GET api/config/v1/backtrace config-telemetry
GET api/config/v1/cohortnux/{cohortId} config-telemetry
GET api/config/v1/freegiftbutton config-telemetry
GET api/config/v2 config-telemetry
POST api/consumables/v1/consume avatar-inventory
GET api/consumables/v1/getTransferable/{playerId} avatar-inventory
POST api/consumables/v1/transfer avatar-inventory
POST api/consumables/v1/updateActive avatar-inventory
GET api/consumables/v2/getUnlocked avatar-inventory
POST api/customAvatarItems/v1 avatar-inventory
POST api/customAvatarItems/v1/bulk avatar-inventory
DELETE api/customAvatarItems/v1/design avatar-inventory
GET api/customAvatarItems/v1/design avatar-inventory
PUT api/customAvatarItems/v1/design avatar-inventory
GET api/customAvatarItems/v1/featured avatar-inventory
GET api/customAvatarItems/v1/hot avatar-inventory
GET api/customAvatarItems/v1/isCreationAllowedForAccount avatar-inventory
GET api/customAvatarItems/v1/isCreationEnabled avatar-inventory
GET api/customAvatarItems/v1/isRenderingEnabled avatar-inventory
GET api/customAvatarItems/v1/me avatar-inventory
GET api/customAvatarItems/v1/minPriceForPublicItem avatar-inventory
DELETE api/customAvatarItems/v1/{id} avatar-inventory
PUT api/customAvatarItems/v1/{id} avatar-inventory
POST api/customAvatarItems/v1/{id}/report avatar-inventory
GET api/customAvatarItems/v2/fromCreator/{creatorId} avatar-inventory
POST api/equipment/v1/update avatar-inventory
GET api/equipment/v2/getUnlocked avatar-inventory
POST api/externalfriendinvite/v1/createplatforminvite relationships-messaging
POST api/externalfriendinvite/v1/getplatformreferrers relationships-messaging
POST api/externalfriendinvite/v1/gettextmessagereferrers relationships-messaging
POST api/externalfriendinvite/v1/sendtextmessageinvite relationships-messaging
POST api/freegifts/v1/sendmultiple progression-misc
GET api/gameconfigs/v1/all config-telemetry
GET api/gamerewards/v1/pending progression-misc
POST api/gamerewards/v1/request progression-misc
POST api/gamerewards/v1/select progression-misc
POST api/gamesight/event events-playlists
POST api/images/v1/cheer inventions-media
POST api/images/v1/deletesaved inventions-media
GET api/images/v1/listsaved inventions-media
POST api/images/v1/modifyaccessibility inventions-media
POST api/images/v1/sendlink inventions-media
GET api/images/v1/slideshow inventions-media
POST api/images/v1/{id}/report inventions-media
GET api/images/v2/named inventions-media
GET api/images/v4/room/{roomId}?sort&filter&take&skip inventions-media
POST api/images/v4/uploadsaved inventions-media
GET api/images/v5/bulk inventions-media
GET api/images/v5/cheered/bulk inventions-media
GET api/images/v5/player/{playerId}?sort={int} inventions-media
GET api/images/v6/{id} inventions-media
GET api/images/v6?name={imageName} inventions-media
POST api/incentivizedreferrals/claim progression-misc
GET api/incentivizedreferrals/progress progression-misc
GET api/influencerpartnerprogram/influencer progression-misc
GET api/influencerpartnerprogram/influencers progression-misc
GET api/influencerpartnerprogram/myinfluencer progression-misc
POST api/influencerpartnerprogram/remove progression-misc
POST api/influencerpartnerprogram/support progression-misc
POST api/inventions/v1/cheer inventions-media
GET api/inventions/v1/delete?inventionId={id} inventions-media
GET api/inventions/v1/details?inventionId={id} inventions-media
GET api/inventions/v1/dormskinsfromids inventions-media
GET api/inventions/v1/featured inventions-media
GET api/inventions/v1/featureddormskins inventions-media
GET api/inventions/v1/fromcreators inventions-media
GET api/inventions/v1/fulllineageowner inventions-media
GET api/inventions/v1/personaldetails/{id} inventions-media
POST api/inventions/v1/report inventions-media
GET api/inventions/v1/room?id={roomId} inventions-media
POST api/inventions/v1/settags inventions-media
GET api/inventions/v1/tagfilters inventions-media
GET api/inventions/v1/toptoday inventions-media
GET api/inventions/v1/unpublish?inventionId={id} inventions-media
GET api/inventions/v1/update inventions-media
POST api/inventions/v1/updateprice inventions-media
GET api/inventions/v1/version?inventionId={id}&version={n} inventions-media
GET api/inventions/v1/versions?inventionId={id} inventions-media
GET api/inventions/v1?inventionId={id} inventions-media
GET api/inventions/v2/batch inventions-media
GET api/inventions/v2/mine inventions-media
GET api/inventions/v2/search?value&skip&take inventions-media
GET api/inventions/v3/publish?inventionId&permissionLevel&accessibility&price inventions-media
POST api/inventions/v4/addversion inventions-media
POST api/inventions/v6/save inventions-media
POST api/keepsakes events-playlists
GET api/keepsakes/categories events-playlists
GET api/keepsakes/events/{progressionEventId} events-playlists
GET api/keepsakes/globalconfig events-playlists
GET api/keepsakes/rooms/{roomId} events-playlists
DELETE api/keepsakes/{keepsakeInstanceId:guid} events-playlists
POST api/keepsakes/{keepsakeInstanceId:guid}/collect events-playlists
GET api/messages/v1/favoriteFriendOnlineStatus relationships-messaging
POST api/messages/v1/sendMultiple relationships-messaging
GET api/messages/v2/get relationships-messaging
POST api/messages/v2/send relationships-messaging
POST api/messages/v3/delete relationships-messaging
POST api/objectives/v1/cleargroup progression-misc
POST api/objectives/v1/completegroup progression-misc
GET api/objectives/v1/myprogress progression-misc
POST api/objectives/v1/updateobjective progression-misc
POST api/offlineinvite/v1/send relationships-messaging
GET api/playerevents/v1 events-playlists
GET api/playerevents/v1/all events-playlists
GET api/playerevents/v1/all/{0} events-playlists
POST api/playerevents/v1/broadcast events-playlists
POST api/playerevents/v1/bulk events-playlists
POST api/playerevents/v1/bulkInvite events-playlists
GET api/playerevents/v1/club/{0} events-playlists
GET api/playerevents/v1/clubs events-playlists
POST api/playerevents/v1/deleteResponse events-playlists
POST api/playerevents/v1/report events-playlists
POST api/playerevents/v1/respond events-playlists
GET api/playerevents/v1/room/{0} events-playlists
GET api/playerevents/v1/search events-playlists
GET api/playerevents/v1/searchlive events-playlists
GET api/playerevents/v1/tagfilters events-playlists
GET api/playerevents/v1/{0} events-playlists
GET api/playerevents/v1/{0}/responses events-playlists
POST api/playerevents/v2 events-playlists
POST api/playerevents/v2/delete/{0} events-playlists
POST api/playerevents/v2/{0} events-playlists
PUT api/playerevents/v2/{0}/accessibility events-playlists
PUT api/playerevents/v2/{0}/club events-playlists
PUT api/playerevents/v2/{0}/description events-playlists
PUT api/playerevents/v2/{0}/image events-playlists
PUT api/playerevents/v2/{0}/multiinstance events-playlists
PUT api/playerevents/v2/{0}/name events-playlists
PUT api/playerevents/v2/{0}/room events-playlists
PUT api/playerevents/v2/{0}/tags events-playlists
PUT api/playerevents/v2/{0}/time events-playlists
PUT api/players/v4/current/contact identity-account
POST api/playerwarnings moderation-safety
POST api/playerwarnings/acknowledge moderation-safety
POST api/playstationplus/expire commerce-subscription
GET api/progressionEvents/active events-playlists
POST api/progressionEvents/collect/{eventId}/{rewardIndex} events-playlists
GET api/progressionEvents/event/{eventId} events-playlists
GET api/progressionEvents/record/{progressionEventId} events-playlists
GET api/progressionEvents/{eventId}/xpboosts events-playlists
GET api/progressionEvents/{eventId}/xpboosts/{boostId}/previewEarnedXp events-playlists
GET api/quickPlay/v1/getandclear progression-misc
GET api/relationships/mutualfriends relationships-messaging
POST api/relationships/sendfriendintroductions relationships-messaging
GET api/relationships/v1/addfriendwithcode relationships-messaging
POST api/relationships/v1/bulkignoreplatformusers relationships-messaging
GET api/relationships/v1/favorite relationships-messaging
POST api/relationships/v1/ignore moderation-safety
POST api/relationships/v1/mute moderation-safety
GET api/relationships/v1/unfavorite relationships-messaging
POST api/relationships/v1/unignore moderation-safety
POST api/relationships/v1/unmute moderation-safety
GET api/relationships/v2/acceptfriendrequest relationships-messaging
GET api/relationships/v2/addfriend relationships-messaging
GET api/relationships/v2/get relationships-messaging
GET api/relationships/v2/removefriend relationships-messaging
GET api/relationships/v2/sendfriendrequest relationships-messaging
POST api/roomCurrencies/v2/purchase room-economy
POST api/roomEarningsDistributions/v1/earningsDistribution progression-misc
PUT api/roomconsumables/v1/roomConsumable room-economy
GET api/roomconsumables/v1/roomConsumable/room/{roomId} room-economy
GET api/roomconsumables/v1/roomConsumable/room/{roomId}/me room-economy
DELETE api/roomconsumables/v1/roomConsumable/{id} room-economy
PUT api/roomconsumables/v1/roomConsumable/{id}/consume room-economy
GET api/roomconsumables/v1/roomConsumable/{id}/isOwned room-economy
PUT api/roomconsumables/v1/roomconsumable/{0}/purchase/currency room-economy
PUT api/roomconsumables/v1/roomconsumable/{0}/purchase/tokens room-economy
POST api/roomcurrencies/v1/awardCurrency/bulk room-economy
POST api/roomcurrencies/v1/createCurrency room-economy
POST api/roomcurrencies/v1/createPurchaseOffer room-economy
GET api/roomcurrencies/v1/currencies room-economy
POST api/roomcurrencies/v1/deletePurchaseOffer room-economy
GET api/roomcurrencies/v1/getAllBalances room-economy
GET api/roomcurrencies/v1/getBalance room-economy
GET api/roomcurrencies/v1/getPurchaseOffersBatch room-economy
POST api/roomcurrencies/v1/updateCurrency room-economy
POST api/roomcurrencies/v1/updatePurchaseOffer room-economy
POST api/roomkeys/v1/create room-economy
DELETE api/roomkeys/v1/delete/{roomKeyId} room-economy
GET api/roomkeys/v1/mine room-economy
GET api/roomkeys/v1/owns room-economy
POST api/roomkeys/v1/owns/bulk room-economy
GET api/roomkeys/v1/purchased/{roomKeyId} room-economy
GET api/roomkeys/v1/room?roomId={id} room-economy
GET api/rooms/v1/filters rooms
POST api/rooms/v1/verifyRole rooms
POST api/rooms/v2/report rooms
GET api/royale/v1/current progression-misc
POST api/royale/v2/matchcomplete progression-misc
POST api/sanitize/v1 identity-account
POST api/sanitize/v1/isPure identity-account
POST api/screensharereports/v1/report moderation-safety
POST api/storefronts/v1/PurchaseRoomKeyWithCurrency commerce-subscription
GET api/storefronts/v1/adcarouselitems commerce-subscription
GET api/storefronts/v1/balanceAddType/{currencyType:int}/{tierId:int} commerce-subscription
POST api/storefronts/v1/buyForFreeGiftButton commerce-subscription
POST api/storefronts/v1/buyProgressionEventXpBoost commerce-subscription
POST api/storefronts/v1/buyPurchaseReminder commerce-subscription
GET api/storefronts/v1/buyRoomKey commerce-subscription
POST api/storefronts/v1/objectives commerce-subscription
GET api/storefronts/v1/season/{storefrontType:int} commerce-subscription
GET api/storefronts/v1/toptoday commerce-subscription
POST api/storefronts/v1/trialInvention commerce-subscription
GET api/storefronts/v1/trialInvention/duration commerce-subscription
POST api/storefronts/v2/balance commerce-subscription
POST api/storefronts/v2/buyElite commerce-subscription
GET api/storefronts/v2/buyInvention commerce-subscription
POST api/storefronts/v2/buyItem commerce-subscription
POST api/storefronts/v2/buyTier commerce-subscription
GET api/storefronts/v3/giftdropstore/{storefrontType:int} commerce-subscription
GET api/storefronts/v4/balance/{currencyType:int} commerce-subscription
GET api/subscriptionseasons/v1/seasons/current progression-misc
GET api/testcasemanagement/v1/testcase/{id} config-telemetry
POST api/testcasemanagement/v1/testcase/{id}/claim config-telemetry
POST api/testcasemanagement/v1/testcase/{id}/comment config-telemetry
POST api/testcasemanagement/v1/testcase/{id}/status config-telemetry
POST api/testcasemanagement/v1/testcase/{id}/unclaim config-telemetry
GET api/testcasemanagement/v1/testpass/{id} config-telemetry
GET api/testcasemanagement/v1/testpasssummary config-telemetry
POST api/ugcPurchasables/v1/items/bulk avatar-inventory
GET api/ugcPurchasables/v1/items/room/{roomId} avatar-inventory
GET api/versioncheck/v4 identity-account
DELETE cachedlogin/current identity-account
GET cachedlogin/forplatformid/{0}/{1} identity-account
POST cachedlogin/forplatformids identity-account
POST cachedlogin/migrate identity-account
GET club/account/{0}/created social-clubs-chat
GET club/categoryTags social-clubs-chat
POST club/create social-clubs-chat
DELETE club/home/me social-clubs-chat
GET club/home/me social-clubs-chat
PUT club/home/me social-clubs-chat
GET club/mine/created social-clubs-chat
GET club/mine/member social-clubs-chat
GET club/mostactivetoday social-clubs-chat
GET club/search social-clubs-chat
DELETE club/{0} social-clubs-chat
GET club/{0} social-clubs-chat
DELETE club/{0}/additionalimage/{1} social-clubs-chat
PUT club/{0}/additionalimage/{1} social-clubs-chat
PUT club/{0}/clubChatEnabled social-clubs-chat
DELETE club/{0}/clubhouse social-clubs-chat
PUT club/{0}/clubhouse social-clubs-chat
GET club/{0}/details social-clubs-chat
GET club/{0}/hasDisabledClubChat social-clubs-chat
DELETE club/{0}/mainimage social-clubs-chat
PUT club/{0}/mainimage social-clubs-chat
GET club/{0}/members social-clubs-chat
POST club/{0}/members/acceptinvite social-clubs-chat
POST club/{0}/members/acceptrequest social-clubs-chat
POST club/{0}/members/acceptrequests social-clubs-chat
POST club/{0}/members/ban social-clubs-chat
GET club/{0}/members/banned social-clubs-chat
PUT club/{0}/members/changetype social-clubs-chat
POST club/{0}/members/declineinvite social-clubs-chat
POST club/{0}/members/denyrequest social-clubs-chat
POST club/{0}/members/denyrequests social-clubs-chat
POST club/{0}/members/directJoin social-clubs-chat
PUT club/{0}/members/invite social-clubs-chat
POST club/{0}/members/invitemembers social-clubs-chat
POST club/{0}/members/leave social-clubs-chat
POST club/{0}/members/remove social-clubs-chat
GET club/{0}/members/requests social-clubs-chat
GET club/{0}/members/requests/search social-clubs-chat
PUT club/{0}/members/requesttojoin social-clubs-chat
GET club/{0}/members/search social-clubs-chat
POST club/{0}/members/unban social-clubs-chat
GET club/{0}/members/{1} social-clubs-chat
PUT club/{0}/minlevel social-clubs-chat
PUT club/{0}/modify social-clubs-chat
PUT club/{0}/modifydetails social-clubs-chat
PUT club/{0}/permissions/{1} social-clubs-chat
GET clubhousesearch/mostactivenow social-clubs-chat
POST comments/create/{0} social-clubs-chat
DELETE comments/delete/{0} social-clubs-chat
GET comments/get/{0} social-clubs-chat
PUT comments/read/{0}/{1} social-clubs-chat
GET comments/unreadcounts social-clubs-chat
GET config/categories config-telemetry
POST connect/deviceauthorization identity-account
POST connect/token identity-account
POST data/event events-playlists
PUT datalink config-telemetry
GET datalink/{code} config-telemetry
GET eac/challenge identity-account
GET econ/customAvatarItems/v1/itemOwnershipLimit avatar-inventory
GET econ/customAvatarItems/v1/owned avatar-inventory
POST econ/customAvatarItems/v1/{id}/purchase/?requestedPrice={price} avatar-inventory
GET emojiConfig/whitelistedEmojis config-telemetry
GET event/{0}/instances events-playlists
GET featuredrooms/current rooms
POST feed/query config-telemetry
DELETE invite/{0} progression-misc
POST leaderboard/CheckAndSetStat progression-misc
POST leaderboard/GetNearbyScores progression-misc
POST leaderboard/GetPlayerRank progression-misc
POST leaderboard/GetRanks progression-misc
POST matchmake/chatinvite/{0}/{1} matchmaking-session
POST matchmake/club/{0} matchmaking-session
POST matchmake/code/{0}/{1} matchmaking-session
POST matchmake/dorm matchmaking-session
POST matchmake/event/{0} matchmaking-session
POST matchmake/instance/{0} matchmaking-session
POST matchmake/invite/{0} matchmaking-session
POST matchmake/none matchmaking-session
POST matchmake/player/{0} matchmaking-session
POST matchmake/room/{0} matchmaking-session
POST matchmake/room/{0}/{1} matchmaking-session
GET members/bulk social-clubs-chat
GET namegen/options identity-account
POST pageview/consume config-telemetry
GET parentalcontrol/me identity-account
GET platformid/{0} identity-account
GET player/avoidjuniors matchmaking-session
POST player/exclusivelogin matchmaking-session
POST player/heartbeat matchmaking-session
POST player/login matchmaking-session
POST player/logout matchmaking-session
POST player/notifydisconnect matchmaking-session
PUT player/photonregionpings matchmaking-session
PUT player/statusvisibility matchmaking-session
PUT player/vrmovementmode matchmaking-session
POST playlists/bulk events-playlists
GET playlists/cheeredby/me events-playlists
GET playlists/createdby/me events-playlists
GET playlists/favoritedby/me events-playlists
GET playlists/visitedby/me events-playlists
DELETE playlists/{0} events-playlists
GET playlists/{0} events-playlists
PUT playlists/{0}/accessibility events-playlists
PUT playlists/{0}/description events-playlists
PUT playlists/{0}/image events-playlists
GET playlists/{0}/interactionby/me events-playlists
PUT playlists/{0}/interactionby/me/cheer events-playlists
PUT playlists/{0}/interactionby/me/favorite events-playlists
PUT playlists/{0}/levelvoting events-playlists
PUT playlists/{0}/name events-playlists
PUT playlists/{0}/restrictions events-playlists
PUT playlists/{0}/rooms/{1} events-playlists
PUT playlists/{0}/tags events-playlists
PUT playlists/{0}/warning events-playlists
POST purchase/v1/cancelpurchase commerce-subscription
POST purchase/v1/cleanuppending commerce-subscription
POST purchase/v1/completepurchase commerce-subscription
GET purchase/v1/hasspentmoney commerce-subscription
POST purchase/v1/initiatepurchase commerce-subscription
POST purchase/v1/processpurchase commerce-subscription
GET purchasecampaign/allcurrent/v2 commerce-subscription
POST purchasecampaign/shown commerce-subscription
GET reminder/currentTokenBundles/v2 commerce-subscription
POST remote-run/push-to-studio inventions-media
GET role/developer/{0} progression-misc
GET role/moderator/{0} progression-misc
GET room/{0}/instances rooms
PUT roominstance/{0}/inprogress rooms
PUT roominstance/{0}/markprivate rooms
POST roominstance/{0}/reportjoinresult rooms
PUT roominstance/{0}/roomCode rooms
GET rooms/base rooms
GET rooms/bulk rooms
GET rooms/cheeredby/me rooms
GET rooms/contestwinners rooms
GET rooms/createdby/me rooms
GET rooms/createdby/{0} rooms
GET rooms/curated_playlists rooms
GET rooms/favoritedby/me rooms
GET rooms/fromcreators rooms
GET rooms/hot rooms
GET rooms/magic_door rooms
GET rooms/moderatedby/me rooms
GET rooms/ownedby/me rooms
GET rooms/ownedby/{0} rooms
GET rooms/recommendations rooms
GET rooms/rro_ids rooms
GET rooms/search rooms
GET rooms/topcreators rooms
GET rooms/visitedby/me rooms
GET rooms/visitedby/{0} rooms
DELETE rooms/{0} rooms
GET rooms/{0} rooms
PUT rooms/{0}/accessibility rooms
PUT rooms/{0}/allow_new_users rooms
PUT rooms/{0}/automute rooms
GET rooms/{0}/bans rooms
POST rooms/{0}/bans rooms
POST rooms/{0}/bans/import rooms
DELETE rooms/{0}/bans/{1} rooms
POST rooms/{0}/clone rooms
PUT rooms/{0}/cloning rooms
PUT rooms/{0}/comments rooms
PUT rooms/{0}/creator rooms
PUT rooms/{0}/description rooms
PUT rooms/{0}/image rooms
GET rooms/{0}/interactionby/me rooms
DELETE rooms/{0}/interactionby/me/cheer rooms
PUT rooms/{0}/interactionby/me/cheer rooms
DELETE rooms/{0}/interactionby/me/favorite rooms
PUT rooms/{0}/interactionby/me/favorite rooms
DELETE rooms/{0}/loadscreen rooms
PUT rooms/{0}/loadscreen rooms
PUT rooms/{0}/max_player_calculation_mode rooms
PUT rooms/{0}/min_level rooms
PUT rooms/{0}/modify rooms
PUT rooms/{0}/name rooms
GET rooms/{0}/playerdata/me rooms
PUT rooms/{0}/playerdata/me rooms
DELETE rooms/{0}/promo_external rooms
PUT rooms/{0}/promo_external rooms
DELETE rooms/{0}/promo_images rooms
PUT rooms/{0}/promo_images rooms
PUT rooms/{0}/restrictions rooms
GET rooms/{0}/roles rooms
GET rooms/{0}/roles/{1} rooms
PUT rooms/{0}/roles/{1} rooms
PUT rooms/{0}/roles/{1}/invite rooms
GET rooms/{0}/similar rooms
POST rooms/{0}/subrooms rooms
DELETE rooms/{0}/subrooms/{1} rooms
PUT rooms/{0}/subrooms/{1}/accessibility rooms
POST rooms/{0}/subrooms/{1}/clone rooms
POST rooms/{0}/subrooms/{1}/data rooms
PUT rooms/{0}/subrooms/{1}/maxplayers rooms
PUT rooms/{0}/subrooms/{1}/modify rooms
POST rooms/{0}/subrooms/{1}/move rooms
PUT rooms/{0}/subrooms/{1}/name rooms
PUT rooms/{0}/subrooms/{1}/permissions rooms
POST rooms/{0}/subrooms/{1}/publish_save rooms
GET rooms/{0}/subrooms/{1}/saves rooms
PUT rooms/{0}/tags rooms
PUT rooms/{0}/voice_chat_encryption rooms
PUT rooms/{0}/warning rooms
GET settings/partyinvite config-telemetry
GET showcase/{0} inventions-media
GET subscription/details/{accountId:int} commerce-subscription
GET subscription/mine/member commerce-subscription
GET subscription/subscriberCount/{accountId:int} commerce-subscription
GET subscription/top/creators/today commerce-subscription
POST subscription/v1/cancel commerce-subscription
POST subscription/{accountId:int} commerce-subscription
GET thread/club/{0} social-clubs-chat
PUT thread/message/{0}/moderate social-clubs-chat
POST thread/withmembers social-clubs-chat
GET thread/{0} social-clubs-chat
POST thread/{0} social-clubs-chat
PUT thread/{0}/favorite social-clubs-chat
POST thread/{0}/leave social-clubs-chat
POST thread/{0}/member/{1} social-clubs-chat
GET thread/{0}/message social-clubs-chat
POST thread/{0}/message/{1}/read social-clubs-chat
POST thread/{0}/rename social-clubs-chat
POST thread/{0}/snooze social-clubs-chat
GET unity_assets/{0}/{1}/{2} inventions-media
GET voice/config moderation-safety
GET voice/requiresModeration moderation-safety
1 # Every HTTP request the Rec Room 2023-03-21 client can issue.
2 # Recovered from the client binary; see docs/recroom-2023-client-api-complete.md.
3 # verb<TAB>route<TAB>subsystem
4 GET account/bulk identity-account
5 POST account/bulk identity-account
6 GET account/isactivecreator/me identity-account
7 DELETE account/me identity-account
8 GET account/me identity-account
9 POST account/me/changepassword identity-account
10 POST account/me/createlogintoken identity-account
11 GET account/me/haspassword identity-account
12 POST account/me/remoteauth identity-account
13 POST account/recoverpassword identity-account
14 GET account/search identity-account
15 GET account/{0}/bio identity-account
16 GET account/{0}/clubs identity-account
17 PUT accountprivacysettings/recenthistoryvisibility identity-account
18 GET accountprivacysettings/{0} identity-account
19 GET accounts/{0}/receives/{1} identity-account
20 POST actionlink config-telemetry
21 GET actionlink/{code} config-telemetry
22 POST actionlink/{code}/consume config-telemetry
23 GET announcements/club/{clubId} config-telemetry
24 POST announcements/club/{clubId} config-telemetry
25 DELETE announcements/club/{clubId}/{announcementId} config-telemetry
26 PUT announcements/club/{clubId}/{announcementId} config-telemetry
27 POST announcements/club/{clubId}/{announcementId}/read config-telemetry
28 GET announcements/mine config-telemetry
29 GET announcements/subscription/mine config-telemetry
30 GET announcements/v2/mine/unread config-telemetry
31 GET announcements/v2/mine/unread?sendAnnouncements=true config-telemetry
32 POST api/AppIntegrity/v1/iospaymentqueuefailed commerce-subscription
33 POST api/AppIntegrity/v1/iosproducts commerce-subscription
34 GET api/CampusCard/PS5RecRoomPlusEnabledForAllPlayers commerce-subscription
35 POST api/CampusCard/v1/UpdateAndGetSubscription commerce-subscription
36 POST api/PlayerCheer/v1/SetSelectedCheer progression-misc
37 POST api/PlayerCheer/v1/create progression-misc
38 POST api/PlayerReporting/v1/deviceId moderation-safety
39 POST api/PlayerReporting/v1/hile moderation-safety
40 POST api/PlayerReporting/v1/instantKick moderation-safety
41 GET api/PlayerReporting/v1/moderationBlockDetails moderation-safety
42 GET api/PlayerReporting/v1/voteToKickReasons moderation-safety
43 POST api/PlayerReporting/v3/create moderation-safety
44 POST api/PlayerReporting/v3/voteToKick moderation-safety
45 GET api/activities/charades/v1/words/{0} progression-misc
46 POST api/ageverification/generateCode moderation-safety
47 GET api/announcement/v1/get config-telemetry
48 GET api/apple/musicpromotion/active commerce-subscription
49 GET api/apple/musicpromotion/code commerce-subscription
50 GET api/avatar/v1/defaultbaseavataritems avatar-inventory
51 GET api/avatar/v1/defaultunlocked avatar-inventory
52 GET api/avatar/v1/lockeditems avatar-inventory
53 GET api/avatar/v2 avatar-inventory
54 GET api/avatar/v2/gifts avatar-inventory
55 POST api/avatar/v2/gifts/generate avatar-inventory
56 POST api/avatar/v2/set avatar-inventory
57 GET api/avatar/v2/{playerId} avatar-inventory
58 POST api/avatar/v3/gifts/generate avatar-inventory
59 GET api/avatar/v3/saved avatar-inventory
60 POST api/avatar/v3/saved/set avatar-inventory
61 GET api/avatar/v4/items avatar-inventory
62 GET api/banappeal/generateCode moderation-safety
63 GET api/catalog/v1/all?onlyAvailableSkus=true avatar-inventory
64 GET api/challenge/v2/getCurrent progression-misc
65 POST api/challenge/v2/updateProgress progression-misc
66 POST api/checklist/v1/complete progression-misc
67 GET api/checklist/v1/current progression-misc
68 POST api/clubreporting/v1/report moderation-safety
69 GET api/communityboard/v2/current progression-misc
70 GET api/config/v1/amplitude config-telemetry
71 GET api/config/v1/azurespeech config-telemetry
72 GET api/config/v1/backtrace config-telemetry
73 GET api/config/v1/cohortnux/{cohortId} config-telemetry
74 GET api/config/v1/freegiftbutton config-telemetry
75 GET api/config/v2 config-telemetry
76 POST api/consumables/v1/consume avatar-inventory
77 GET api/consumables/v1/getTransferable/{playerId} avatar-inventory
78 POST api/consumables/v1/transfer avatar-inventory
79 POST api/consumables/v1/updateActive avatar-inventory
80 GET api/consumables/v2/getUnlocked avatar-inventory
81 POST api/customAvatarItems/v1 avatar-inventory
82 POST api/customAvatarItems/v1/bulk avatar-inventory
83 DELETE api/customAvatarItems/v1/design avatar-inventory
84 GET api/customAvatarItems/v1/design avatar-inventory
85 PUT api/customAvatarItems/v1/design avatar-inventory
86 GET api/customAvatarItems/v1/featured avatar-inventory
87 GET api/customAvatarItems/v1/hot avatar-inventory
88 GET api/customAvatarItems/v1/isCreationAllowedForAccount avatar-inventory
89 GET api/customAvatarItems/v1/isCreationEnabled avatar-inventory
90 GET api/customAvatarItems/v1/isRenderingEnabled avatar-inventory
91 GET api/customAvatarItems/v1/me avatar-inventory
92 GET api/customAvatarItems/v1/minPriceForPublicItem avatar-inventory
93 DELETE api/customAvatarItems/v1/{id} avatar-inventory
94 PUT api/customAvatarItems/v1/{id} avatar-inventory
95 POST api/customAvatarItems/v1/{id}/report avatar-inventory
96 GET api/customAvatarItems/v2/fromCreator/{creatorId} avatar-inventory
97 POST api/equipment/v1/update avatar-inventory
98 GET api/equipment/v2/getUnlocked avatar-inventory
99 POST api/externalfriendinvite/v1/createplatforminvite relationships-messaging
100 POST api/externalfriendinvite/v1/getplatformreferrers relationships-messaging
101 POST api/externalfriendinvite/v1/gettextmessagereferrers relationships-messaging
102 POST api/externalfriendinvite/v1/sendtextmessageinvite relationships-messaging
103 POST api/freegifts/v1/sendmultiple progression-misc
104 GET api/gameconfigs/v1/all config-telemetry
105 GET api/gamerewards/v1/pending progression-misc
106 POST api/gamerewards/v1/request progression-misc
107 POST api/gamerewards/v1/select progression-misc
108 POST api/gamesight/event events-playlists
109 POST api/images/v1/cheer inventions-media
110 POST api/images/v1/deletesaved inventions-media
111 GET api/images/v1/listsaved inventions-media
112 POST api/images/v1/modifyaccessibility inventions-media
113 POST api/images/v1/sendlink inventions-media
114 GET api/images/v1/slideshow inventions-media
115 POST api/images/v1/{id}/report inventions-media
116 GET api/images/v2/named inventions-media
117 GET api/images/v4/room/{roomId}?sort&filter&take&skip inventions-media
118 POST api/images/v4/uploadsaved inventions-media
119 GET api/images/v5/bulk inventions-media
120 GET api/images/v5/cheered/bulk inventions-media
121 GET api/images/v5/player/{playerId}?sort={int} inventions-media
122 GET api/images/v6/{id} inventions-media
123 GET api/images/v6?name={imageName} inventions-media
124 POST api/incentivizedreferrals/claim progression-misc
125 GET api/incentivizedreferrals/progress progression-misc
126 GET api/influencerpartnerprogram/influencer progression-misc
127 GET api/influencerpartnerprogram/influencers progression-misc
128 GET api/influencerpartnerprogram/myinfluencer progression-misc
129 POST api/influencerpartnerprogram/remove progression-misc
130 POST api/influencerpartnerprogram/support progression-misc
131 POST api/inventions/v1/cheer inventions-media
132 GET api/inventions/v1/delete?inventionId={id} inventions-media
133 GET api/inventions/v1/details?inventionId={id} inventions-media
134 GET api/inventions/v1/dormskinsfromids inventions-media
135 GET api/inventions/v1/featured inventions-media
136 GET api/inventions/v1/featureddormskins inventions-media
137 GET api/inventions/v1/fromcreators inventions-media
138 GET api/inventions/v1/fulllineageowner inventions-media
139 GET api/inventions/v1/personaldetails/{id} inventions-media
140 POST api/inventions/v1/report inventions-media
141 GET api/inventions/v1/room?id={roomId} inventions-media
142 POST api/inventions/v1/settags inventions-media
143 GET api/inventions/v1/tagfilters inventions-media
144 GET api/inventions/v1/toptoday inventions-media
145 GET api/inventions/v1/unpublish?inventionId={id} inventions-media
146 GET api/inventions/v1/update inventions-media
147 POST api/inventions/v1/updateprice inventions-media
148 GET api/inventions/v1/version?inventionId={id}&version={n} inventions-media
149 GET api/inventions/v1/versions?inventionId={id} inventions-media
150 GET api/inventions/v1?inventionId={id} inventions-media
151 GET api/inventions/v2/batch inventions-media
152 GET api/inventions/v2/mine inventions-media
153 GET api/inventions/v2/search?value&skip&take inventions-media
154 GET api/inventions/v3/publish?inventionId&permissionLevel&accessibility&price inventions-media
155 POST api/inventions/v4/addversion inventions-media
156 POST api/inventions/v6/save inventions-media
157 POST api/keepsakes events-playlists
158 GET api/keepsakes/categories events-playlists
159 GET api/keepsakes/events/{progressionEventId} events-playlists
160 GET api/keepsakes/globalconfig events-playlists
161 GET api/keepsakes/rooms/{roomId} events-playlists
162 DELETE api/keepsakes/{keepsakeInstanceId:guid} events-playlists
163 POST api/keepsakes/{keepsakeInstanceId:guid}/collect events-playlists
164 GET api/messages/v1/favoriteFriendOnlineStatus relationships-messaging
165 POST api/messages/v1/sendMultiple relationships-messaging
166 GET api/messages/v2/get relationships-messaging
167 POST api/messages/v2/send relationships-messaging
168 POST api/messages/v3/delete relationships-messaging
169 POST api/objectives/v1/cleargroup progression-misc
170 POST api/objectives/v1/completegroup progression-misc
171 GET api/objectives/v1/myprogress progression-misc
172 POST api/objectives/v1/updateobjective progression-misc
173 POST api/offlineinvite/v1/send relationships-messaging
174 GET api/playerevents/v1 events-playlists
175 GET api/playerevents/v1/all events-playlists
176 GET api/playerevents/v1/all/{0} events-playlists
177 POST api/playerevents/v1/broadcast events-playlists
178 POST api/playerevents/v1/bulk events-playlists
179 POST api/playerevents/v1/bulkInvite events-playlists
180 GET api/playerevents/v1/club/{0} events-playlists
181 GET api/playerevents/v1/clubs events-playlists
182 POST api/playerevents/v1/deleteResponse events-playlists
183 POST api/playerevents/v1/report events-playlists
184 POST api/playerevents/v1/respond events-playlists
185 GET api/playerevents/v1/room/{0} events-playlists
186 GET api/playerevents/v1/search events-playlists
187 GET api/playerevents/v1/searchlive events-playlists
188 GET api/playerevents/v1/tagfilters events-playlists
189 GET api/playerevents/v1/{0} events-playlists
190 GET api/playerevents/v1/{0}/responses events-playlists
191 POST api/playerevents/v2 events-playlists
192 POST api/playerevents/v2/delete/{0} events-playlists
193 POST api/playerevents/v2/{0} events-playlists
194 PUT api/playerevents/v2/{0}/accessibility events-playlists
195 PUT api/playerevents/v2/{0}/club events-playlists
196 PUT api/playerevents/v2/{0}/description events-playlists
197 PUT api/playerevents/v2/{0}/image events-playlists
198 PUT api/playerevents/v2/{0}/multiinstance events-playlists
199 PUT api/playerevents/v2/{0}/name events-playlists
200 PUT api/playerevents/v2/{0}/room events-playlists
201 PUT api/playerevents/v2/{0}/tags events-playlists
202 PUT api/playerevents/v2/{0}/time events-playlists
203 PUT api/players/v4/current/contact identity-account
204 POST api/playerwarnings moderation-safety
205 POST api/playerwarnings/acknowledge moderation-safety
206 POST api/playstationplus/expire commerce-subscription
207 GET api/progressionEvents/active events-playlists
208 POST api/progressionEvents/collect/{eventId}/{rewardIndex} events-playlists
209 GET api/progressionEvents/event/{eventId} events-playlists
210 GET api/progressionEvents/record/{progressionEventId} events-playlists
211 GET api/progressionEvents/{eventId}/xpboosts events-playlists
212 GET api/progressionEvents/{eventId}/xpboosts/{boostId}/previewEarnedXp events-playlists
213 GET api/quickPlay/v1/getandclear progression-misc
214 GET api/relationships/mutualfriends relationships-messaging
215 POST api/relationships/sendfriendintroductions relationships-messaging
216 GET api/relationships/v1/addfriendwithcode relationships-messaging
217 POST api/relationships/v1/bulkignoreplatformusers relationships-messaging
218 GET api/relationships/v1/favorite relationships-messaging
219 POST api/relationships/v1/ignore moderation-safety
220 POST api/relationships/v1/mute moderation-safety
221 GET api/relationships/v1/unfavorite relationships-messaging
222 POST api/relationships/v1/unignore moderation-safety
223 POST api/relationships/v1/unmute moderation-safety
224 GET api/relationships/v2/acceptfriendrequest relationships-messaging
225 GET api/relationships/v2/addfriend relationships-messaging
226 GET api/relationships/v2/get relationships-messaging
227 GET api/relationships/v2/removefriend relationships-messaging
228 GET api/relationships/v2/sendfriendrequest relationships-messaging
229 POST api/roomCurrencies/v2/purchase room-economy
230 POST api/roomEarningsDistributions/v1/earningsDistribution progression-misc
231 PUT api/roomconsumables/v1/roomConsumable room-economy
232 GET api/roomconsumables/v1/roomConsumable/room/{roomId} room-economy
233 GET api/roomconsumables/v1/roomConsumable/room/{roomId}/me room-economy
234 DELETE api/roomconsumables/v1/roomConsumable/{id} room-economy
235 PUT api/roomconsumables/v1/roomConsumable/{id}/consume room-economy
236 GET api/roomconsumables/v1/roomConsumable/{id}/isOwned room-economy
237 PUT api/roomconsumables/v1/roomconsumable/{0}/purchase/currency room-economy
238 PUT api/roomconsumables/v1/roomconsumable/{0}/purchase/tokens room-economy
239 POST api/roomcurrencies/v1/awardCurrency/bulk room-economy
240 POST api/roomcurrencies/v1/createCurrency room-economy
241 POST api/roomcurrencies/v1/createPurchaseOffer room-economy
242 GET api/roomcurrencies/v1/currencies room-economy
243 POST api/roomcurrencies/v1/deletePurchaseOffer room-economy
244 GET api/roomcurrencies/v1/getAllBalances room-economy
245 GET api/roomcurrencies/v1/getBalance room-economy
246 GET api/roomcurrencies/v1/getPurchaseOffersBatch room-economy
247 POST api/roomcurrencies/v1/updateCurrency room-economy
248 POST api/roomcurrencies/v1/updatePurchaseOffer room-economy
249 POST api/roomkeys/v1/create room-economy
250 DELETE api/roomkeys/v1/delete/{roomKeyId} room-economy
251 GET api/roomkeys/v1/mine room-economy
252 GET api/roomkeys/v1/owns room-economy
253 POST api/roomkeys/v1/owns/bulk room-economy
254 GET api/roomkeys/v1/purchased/{roomKeyId} room-economy
255 GET api/roomkeys/v1/room?roomId={id} room-economy
256 GET api/rooms/v1/filters rooms
257 POST api/rooms/v1/verifyRole rooms
258 POST api/rooms/v2/report rooms
259 GET api/royale/v1/current progression-misc
260 POST api/royale/v2/matchcomplete progression-misc
261 POST api/sanitize/v1 identity-account
262 POST api/sanitize/v1/isPure identity-account
263 POST api/screensharereports/v1/report moderation-safety
264 POST api/storefronts/v1/PurchaseRoomKeyWithCurrency commerce-subscription
265 GET api/storefronts/v1/adcarouselitems commerce-subscription
266 GET api/storefronts/v1/balanceAddType/{currencyType:int}/{tierId:int} commerce-subscription
267 POST api/storefronts/v1/buyForFreeGiftButton commerce-subscription
268 POST api/storefronts/v1/buyProgressionEventXpBoost commerce-subscription
269 POST api/storefronts/v1/buyPurchaseReminder commerce-subscription
270 GET api/storefronts/v1/buyRoomKey commerce-subscription
271 POST api/storefronts/v1/objectives commerce-subscription
272 GET api/storefronts/v1/season/{storefrontType:int} commerce-subscription
273 GET api/storefronts/v1/toptoday commerce-subscription
274 POST api/storefronts/v1/trialInvention commerce-subscription
275 GET api/storefronts/v1/trialInvention/duration commerce-subscription
276 POST api/storefronts/v2/balance commerce-subscription
277 POST api/storefronts/v2/buyElite commerce-subscription
278 GET api/storefronts/v2/buyInvention commerce-subscription
279 POST api/storefronts/v2/buyItem commerce-subscription
280 POST api/storefronts/v2/buyTier commerce-subscription
281 GET api/storefronts/v3/giftdropstore/{storefrontType:int} commerce-subscription
282 GET api/storefronts/v4/balance/{currencyType:int} commerce-subscription
283 GET api/subscriptionseasons/v1/seasons/current progression-misc
284 GET api/testcasemanagement/v1/testcase/{id} config-telemetry
285 POST api/testcasemanagement/v1/testcase/{id}/claim config-telemetry
286 POST api/testcasemanagement/v1/testcase/{id}/comment config-telemetry
287 POST api/testcasemanagement/v1/testcase/{id}/status config-telemetry
288 POST api/testcasemanagement/v1/testcase/{id}/unclaim config-telemetry
289 GET api/testcasemanagement/v1/testpass/{id} config-telemetry
290 GET api/testcasemanagement/v1/testpasssummary config-telemetry
291 POST api/ugcPurchasables/v1/items/bulk avatar-inventory
292 GET api/ugcPurchasables/v1/items/room/{roomId} avatar-inventory
293 GET api/versioncheck/v4 identity-account
294 DELETE cachedlogin/current identity-account
295 GET cachedlogin/forplatformid/{0}/{1} identity-account
296 POST cachedlogin/forplatformids identity-account
297 POST cachedlogin/migrate identity-account
298 GET club/account/{0}/created social-clubs-chat
299 GET club/categoryTags social-clubs-chat
300 POST club/create social-clubs-chat
301 DELETE club/home/me social-clubs-chat
302 GET club/home/me social-clubs-chat
303 PUT club/home/me social-clubs-chat
304 GET club/mine/created social-clubs-chat
305 GET club/mine/member social-clubs-chat
306 GET club/mostactivetoday social-clubs-chat
307 GET club/search social-clubs-chat
308 DELETE club/{0} social-clubs-chat
309 GET club/{0} social-clubs-chat
310 DELETE club/{0}/additionalimage/{1} social-clubs-chat
311 PUT club/{0}/additionalimage/{1} social-clubs-chat
312 PUT club/{0}/clubChatEnabled social-clubs-chat
313 DELETE club/{0}/clubhouse social-clubs-chat
314 PUT club/{0}/clubhouse social-clubs-chat
315 GET club/{0}/details social-clubs-chat
316 GET club/{0}/hasDisabledClubChat social-clubs-chat
317 DELETE club/{0}/mainimage social-clubs-chat
318 PUT club/{0}/mainimage social-clubs-chat
319 GET club/{0}/members social-clubs-chat
320 POST club/{0}/members/acceptinvite social-clubs-chat
321 POST club/{0}/members/acceptrequest social-clubs-chat
322 POST club/{0}/members/acceptrequests social-clubs-chat
323 POST club/{0}/members/ban social-clubs-chat
324 GET club/{0}/members/banned social-clubs-chat
325 PUT club/{0}/members/changetype social-clubs-chat
326 POST club/{0}/members/declineinvite social-clubs-chat
327 POST club/{0}/members/denyrequest social-clubs-chat
328 POST club/{0}/members/denyrequests social-clubs-chat
329 POST club/{0}/members/directJoin social-clubs-chat
330 PUT club/{0}/members/invite social-clubs-chat
331 POST club/{0}/members/invitemembers social-clubs-chat
332 POST club/{0}/members/leave social-clubs-chat
333 POST club/{0}/members/remove social-clubs-chat
334 GET club/{0}/members/requests social-clubs-chat
335 GET club/{0}/members/requests/search social-clubs-chat
336 PUT club/{0}/members/requesttojoin social-clubs-chat
337 GET club/{0}/members/search social-clubs-chat
338 POST club/{0}/members/unban social-clubs-chat
339 GET club/{0}/members/{1} social-clubs-chat
340 PUT club/{0}/minlevel social-clubs-chat
341 PUT club/{0}/modify social-clubs-chat
342 PUT club/{0}/modifydetails social-clubs-chat
343 PUT club/{0}/permissions/{1} social-clubs-chat
344 GET clubhousesearch/mostactivenow social-clubs-chat
345 POST comments/create/{0} social-clubs-chat
346 DELETE comments/delete/{0} social-clubs-chat
347 GET comments/get/{0} social-clubs-chat
348 PUT comments/read/{0}/{1} social-clubs-chat
349 GET comments/unreadcounts social-clubs-chat
350 GET config/categories config-telemetry
351 POST connect/deviceauthorization identity-account
352 POST connect/token identity-account
353 POST data/event events-playlists
354 PUT datalink config-telemetry
355 GET datalink/{code} config-telemetry
356 GET eac/challenge identity-account
357 GET econ/customAvatarItems/v1/itemOwnershipLimit avatar-inventory
358 GET econ/customAvatarItems/v1/owned avatar-inventory
359 POST econ/customAvatarItems/v1/{id}/purchase/?requestedPrice={price} avatar-inventory
360 GET emojiConfig/whitelistedEmojis config-telemetry
361 GET event/{0}/instances events-playlists
362 GET featuredrooms/current rooms
363 POST feed/query config-telemetry
364 DELETE invite/{0} progression-misc
365 POST leaderboard/CheckAndSetStat progression-misc
366 POST leaderboard/GetNearbyScores progression-misc
367 POST leaderboard/GetPlayerRank progression-misc
368 POST leaderboard/GetRanks progression-misc
369 POST matchmake/chatinvite/{0}/{1} matchmaking-session
370 POST matchmake/club/{0} matchmaking-session
371 POST matchmake/code/{0}/{1} matchmaking-session
372 POST matchmake/dorm matchmaking-session
373 POST matchmake/event/{0} matchmaking-session
374 POST matchmake/instance/{0} matchmaking-session
375 POST matchmake/invite/{0} matchmaking-session
376 POST matchmake/none matchmaking-session
377 POST matchmake/player/{0} matchmaking-session
378 POST matchmake/room/{0} matchmaking-session
379 POST matchmake/room/{0}/{1} matchmaking-session
380 GET members/bulk social-clubs-chat
381 GET namegen/options identity-account
382 POST pageview/consume config-telemetry
383 GET parentalcontrol/me identity-account
384 GET platformid/{0} identity-account
385 GET player/avoidjuniors matchmaking-session
386 POST player/exclusivelogin matchmaking-session
387 POST player/heartbeat matchmaking-session
388 POST player/login matchmaking-session
389 POST player/logout matchmaking-session
390 POST player/notifydisconnect matchmaking-session
391 PUT player/photonregionpings matchmaking-session
392 PUT player/statusvisibility matchmaking-session
393 PUT player/vrmovementmode matchmaking-session
394 POST playlists/bulk events-playlists
395 GET playlists/cheeredby/me events-playlists
396 GET playlists/createdby/me events-playlists
397 GET playlists/favoritedby/me events-playlists
398 GET playlists/visitedby/me events-playlists
399 DELETE playlists/{0} events-playlists
400 GET playlists/{0} events-playlists
401 PUT playlists/{0}/accessibility events-playlists
402 PUT playlists/{0}/description events-playlists
403 PUT playlists/{0}/image events-playlists
404 GET playlists/{0}/interactionby/me events-playlists
405 PUT playlists/{0}/interactionby/me/cheer events-playlists
406 PUT playlists/{0}/interactionby/me/favorite events-playlists
407 PUT playlists/{0}/levelvoting events-playlists
408 PUT playlists/{0}/name events-playlists
409 PUT playlists/{0}/restrictions events-playlists
410 PUT playlists/{0}/rooms/{1} events-playlists
411 PUT playlists/{0}/tags events-playlists
412 PUT playlists/{0}/warning events-playlists
413 POST purchase/v1/cancelpurchase commerce-subscription
414 POST purchase/v1/cleanuppending commerce-subscription
415 POST purchase/v1/completepurchase commerce-subscription
416 GET purchase/v1/hasspentmoney commerce-subscription
417 POST purchase/v1/initiatepurchase commerce-subscription
418 POST purchase/v1/processpurchase commerce-subscription
419 GET purchasecampaign/allcurrent/v2 commerce-subscription
420 POST purchasecampaign/shown commerce-subscription
421 GET reminder/currentTokenBundles/v2 commerce-subscription
422 POST remote-run/push-to-studio inventions-media
423 GET role/developer/{0} progression-misc
424 GET role/moderator/{0} progression-misc
425 GET room/{0}/instances rooms
426 PUT roominstance/{0}/inprogress rooms
427 PUT roominstance/{0}/markprivate rooms
428 POST roominstance/{0}/reportjoinresult rooms
429 PUT roominstance/{0}/roomCode rooms
430 GET rooms/base rooms
431 GET rooms/bulk rooms
432 GET rooms/cheeredby/me rooms
433 GET rooms/contestwinners rooms
434 GET rooms/createdby/me rooms
435 GET rooms/createdby/{0} rooms
436 GET rooms/curated_playlists rooms
437 GET rooms/favoritedby/me rooms
438 GET rooms/fromcreators rooms
439 GET rooms/hot rooms
440 GET rooms/magic_door rooms
441 GET rooms/moderatedby/me rooms
442 GET rooms/ownedby/me rooms
443 GET rooms/ownedby/{0} rooms
444 GET rooms/recommendations rooms
445 GET rooms/rro_ids rooms
446 GET rooms/search rooms
447 GET rooms/topcreators rooms
448 GET rooms/visitedby/me rooms
449 GET rooms/visitedby/{0} rooms
450 DELETE rooms/{0} rooms
451 GET rooms/{0} rooms
452 PUT rooms/{0}/accessibility rooms
453 PUT rooms/{0}/allow_new_users rooms
454 PUT rooms/{0}/automute rooms
455 GET rooms/{0}/bans rooms
456 POST rooms/{0}/bans rooms
457 POST rooms/{0}/bans/import rooms
458 DELETE rooms/{0}/bans/{1} rooms
459 POST rooms/{0}/clone rooms
460 PUT rooms/{0}/cloning rooms
461 PUT rooms/{0}/comments rooms
462 PUT rooms/{0}/creator rooms
463 PUT rooms/{0}/description rooms
464 PUT rooms/{0}/image rooms
465 GET rooms/{0}/interactionby/me rooms
466 DELETE rooms/{0}/interactionby/me/cheer rooms
467 PUT rooms/{0}/interactionby/me/cheer rooms
468 DELETE rooms/{0}/interactionby/me/favorite rooms
469 PUT rooms/{0}/interactionby/me/favorite rooms
470 DELETE rooms/{0}/loadscreen rooms
471 PUT rooms/{0}/loadscreen rooms
472 PUT rooms/{0}/max_player_calculation_mode rooms
473 PUT rooms/{0}/min_level rooms
474 PUT rooms/{0}/modify rooms
475 PUT rooms/{0}/name rooms
476 GET rooms/{0}/playerdata/me rooms
477 PUT rooms/{0}/playerdata/me rooms
478 DELETE rooms/{0}/promo_external rooms
479 PUT rooms/{0}/promo_external rooms
480 DELETE rooms/{0}/promo_images rooms
481 PUT rooms/{0}/promo_images rooms
482 PUT rooms/{0}/restrictions rooms
483 GET rooms/{0}/roles rooms
484 GET rooms/{0}/roles/{1} rooms
485 PUT rooms/{0}/roles/{1} rooms
486 PUT rooms/{0}/roles/{1}/invite rooms
487 GET rooms/{0}/similar rooms
488 POST rooms/{0}/subrooms rooms
489 DELETE rooms/{0}/subrooms/{1} rooms
490 PUT rooms/{0}/subrooms/{1}/accessibility rooms
491 POST rooms/{0}/subrooms/{1}/clone rooms
492 POST rooms/{0}/subrooms/{1}/data rooms
493 PUT rooms/{0}/subrooms/{1}/maxplayers rooms
494 PUT rooms/{0}/subrooms/{1}/modify rooms
495 POST rooms/{0}/subrooms/{1}/move rooms
496 PUT rooms/{0}/subrooms/{1}/name rooms
497 PUT rooms/{0}/subrooms/{1}/permissions rooms
498 POST rooms/{0}/subrooms/{1}/publish_save rooms
499 GET rooms/{0}/subrooms/{1}/saves rooms
500 PUT rooms/{0}/tags rooms
501 PUT rooms/{0}/voice_chat_encryption rooms
502 PUT rooms/{0}/warning rooms
503 GET settings/partyinvite config-telemetry
504 GET showcase/{0} inventions-media
505 GET subscription/details/{accountId:int} commerce-subscription
506 GET subscription/mine/member commerce-subscription
507 GET subscription/subscriberCount/{accountId:int} commerce-subscription
508 GET subscription/top/creators/today commerce-subscription
509 POST subscription/v1/cancel commerce-subscription
510 POST subscription/{accountId:int} commerce-subscription
511 GET thread/club/{0} social-clubs-chat
512 PUT thread/message/{0}/moderate social-clubs-chat
513 POST thread/withmembers social-clubs-chat
514 GET thread/{0} social-clubs-chat
515 POST thread/{0} social-clubs-chat
516 PUT thread/{0}/favorite social-clubs-chat
517 POST thread/{0}/leave social-clubs-chat
518 POST thread/{0}/member/{1} social-clubs-chat
519 GET thread/{0}/message social-clubs-chat
520 POST thread/{0}/message/{1}/read social-clubs-chat
521 POST thread/{0}/rename social-clubs-chat
522 POST thread/{0}/snooze social-clubs-chat
523 GET unity_assets/{0}/{1}/{2} inventions-media
524 GET voice/config moderation-safety
525 GET voice/requiresModeration moderation-safety