Files
rr3-server/SERVER-ENDPOINTS-ANALYSIS.md
Daniel Elliott a6167c8249 Complete Records/Leaderboards + Time Trials systems (100%)
RECORDS & LEADERBOARDS (5/5 endpoints - 100%):
- Created LeaderboardsController with 5 endpoints
- GET /synergy/leaderboards/timetrials/{trialId}
- GET /synergy/leaderboards/career/{series}/{event}
- GET /synergy/leaderboards/global/top100
- GET /synergy/leaderboards/player/{synergyId}/records
- GET /synergy/leaderboards/compare/{synergyId1}/{synergyId2}

Added LeaderboardEntry and PersonalRecord models and database tables.
Migration applied: AddLeaderboardsAndRecords

Updated RewardsController.SubmitTimeTrial to track personal bests,
update leaderboards, and award 50 gold bonus for improvements.

Updated ProgressionController.CompleteCareerEvent similarly for
career event personal records.

TIME TRIALS (6/6 endpoints - 100%):
- GET /synergy/rewards/timetrials - List with time remaining
- GET /synergy/rewards/timetrials/{id} - Details with stats
- POST /synergy/rewards/timetrials/{id}/submit - Submit with PB tracking
- GET /synergy/rewards/timetrials/player/{synergyId}/results - History
- POST /synergy/rewards/timetrials/{id}/claim - Claim bonuses
- GET /synergy/leaderboards/timetrials/{id} - Leaderboards (above)

Added navigation properties to TimeTrialResult for easier queries.

Server progress: 66/73 endpoints (90%)
Two complete systems: Records/Leaderboards + Time Trials

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-22 17:49:23 -08:00

12 KiB

Server Endpoints Required by RR3 APK

Based on: Network analysis of RR3 v14.0.1 APK
Date: February 22, 2026
Status: Complete analysis


🎯 Executive Summary

Key Finding: Real Racing 3 uses EA Nimble SDK's Synergy API exclusively for all game-related server communication. The game does NOT have custom API endpoints hardcoded - everything goes through the standardized Synergy service architecture.

This means our community server must mimic EA's Synergy API format to be compatible.


📡 Required Server Architecture

1. Director API (Service Discovery)

Endpoint: GET /director/api/android/getDirectionByPackage

Purpose: First API call on game startup. Tells game where all backend services are located.

Response Format:

{
  "serverUrls": {
    "synergy.product": "https://rr3server.com:5001",
    "synergy.drm": "https://rr3server.com:5001",
    "synergy.user": "https://rr3server.com:5001",
    "synergy.tracking": "https://rr3server.com:5001",
    "synergy.s2s": "https://rr3server.com:5001",
    "synergy.progression": "https://rr3server.com:5001",
    "synergy.rewards": "https://rr3server.com:5001",
    "synergy.events": "https://rr3server.com:5001",
    "synergy.leaderboards": "https://rr3server.com:5001"
  },
  "environment": "COMMUNITY",
  "version": "1.0.0"
}

Status: Implemented in DirectorController.cs


2. User Service (Identity & Authentication)

Base Path: /user/api/android

Required Endpoints:

a) GET /getDeviceID

  • Purpose: Create/retrieve user identity (Synergy ID)
  • Parameters: hardwareId (device UUID)
  • Response:
    {
      "resultCode": 0,
      "message": "Success",
      "data": {
        "deviceId": "uuid-here",
        "synergyId": "SYN-{guid}",
        "timestamp": 1234567890
      }
    }
    
  • Status: Implemented in UserController.cs

b) GET /validateDevice

  • Purpose: Check if device is authorized
  • Parameters: deviceId
  • Status: Implemented

c) GET /getAnonUID

  • Purpose: Anonymous user ID for analytics
  • Status: Implemented

3. Product/Catalog Service (IAP & Store)

Base Path: /product/api/android or /synergy/product

Required Endpoints:

a) GET /catalog/getItems

  • Purpose: Get available items for purchase
  • Response: List of purchasable items (cars, gold, upgrades)
  • Status: Implemented in ProductController.cs

b) GET /catalog/getCategories

  • Purpose: Get item categories
  • Status: Implemented

c) GET /getDownloadUrl

  • Purpose: Get download URL for purchased content
  • Status: Implemented

4. DRM Service (Purchase Verification)

Base Path: /drm/api/android or /synergy/drm

Required Endpoints:

a) GET /getNonce

  • Purpose: Get nonce for purchase signature
  • Status: Implemented in DrmController.cs

b) GET /getPurchasedItems

  • Purpose: Get list of items user owns
  • Parameters: synergyId
  • Status: Implemented

c) POST /verifyPurchase

  • Purpose: Verify Google Play purchase (we bypass this)
  • Status: Implemented (always returns success)

5. Configuration Service (Server Settings)

Base Path: /config/api/android

Required Endpoints:

a) GET /getGameConfig

  • Purpose: Get server configuration, feature flags, URLs
  • Status: Implemented in ConfigController.cs (Phase 1)

b) GET /getServerTime

  • Purpose: Get server Unix timestamp
  • Status: Implemented (Phase 1)

c) GET /getFeatureFlags

  • Purpose: Get enabled/disabled features
  • Status: Implemented (Phase 1)

d) GET /getServerStatus

  • Purpose: Health check & server info
  • Status: Implemented (Phase 1)

6. Progression Service (Game State)

Base Path: /synergy/progression or /progression/api/android

Required Endpoints:

a) GET /player/{synergyId}

  • Purpose: Get player progression data
  • Response: Level, XP, currency, owned cars, career progress
  • Status: Implemented in ProgressionController.cs

b) POST /player/{synergyId}/update

  • Purpose: Update player progression (XP, currency earned)
  • Status: Implemented

c) POST /car/purchase

  • Purpose: Purchase/unlock a car
  • Status: Implemented

d) POST /car/upgrade

  • Purpose: Upgrade a car
  • Status: Implemented

e) POST /career/complete

  • Purpose: Complete a career event
  • Status: Implemented

f) POST /save/{synergyId}

  • Purpose: Save player game state (JSON blob)
  • Status: Implemented (Phase 1)

g) GET /save/{synergyId}/load

  • Purpose: Load player game state (JSON blob)
  • Status: Implemented (Phase 1)

7. Rewards Service (Daily Rewards)

Base Path: /rewards/api/android or /synergy/rewards

Required Endpoints:

a) GET /daily/{synergyId}

  • Purpose: Get daily reward status
  • Status: Partially implemented in RewardsController.cs

b) POST /daily/{synergyId}/claim

  • Purpose: Claim daily reward
  • Status: ⚠️ Needs enhancement (streak tracking)

c) POST /purchaseGold

  • Purpose: Purchase gold (free in community)
  • Status: Implemented (EA compliance - Price = 0)

8. Tracking Service (Analytics)

Base Path: /tracking/api/android or /synergy/tracking

Required Endpoints:

a) POST /logEvent

  • Purpose: Log game events
  • Status: Implemented in TrackingController.cs

b) POST /logEvents

  • Purpose: Batch log multiple events
  • Status: Implemented

9. Assets Service (Content Delivery)

Base Path: /content/api/android or /assets/api

Required Endpoints:

a) GET /manifest

  • Purpose: Get list of game assets
  • Status: Implemented in AssetsController.cs

b) GET /{assetPath}

  • Purpose: Download asset file
  • Status: Implemented (with MD5 verification)

10. Settings Service (Device Settings)

Base Path: /api/settings

Required Endpoints:

a) GET /getUserSettings

  • Purpose: Get user device settings from server
  • Parameters: deviceId
  • Status: Implemented in ServerSettingsController.cs

b) POST /updateUserSettings

  • Purpose: Update device settings
  • Status: Implemented

11. Modding Service (Custom Content)

Base Path: /modding/api/android

Required Endpoints:

a) GET /getAvailableMods

  • Purpose: List available mod packs
  • Status: Implemented in ModdingController.cs

b) GET /getModDetails

  • Purpose: Get details about a specific mod
  • Status: Implemented

c) GET /downloadMod

  • Purpose: Download mod pack
  • Status: Implemented

🚧 Missing/Incomplete Endpoints (Phase 2+)

12. Events Service (Career Events) ⚠️

Base Path: /events/api/android

Status: 🔴 NOT IMPLEMENTED

Required:

  • GET /getAvailableEvents - List of career events/series
  • GET /getEventDetails/{eventId} - Event requirements, rewards
  • POST /completeEvent/{eventId} - Record event completion
  • GET /getSeriesProgress/{synergyId} - Career progression

Priority: HIGH (needed for Phase 2)


13. Leaderboards Service ⚠️

Base Path: /leaderboards/api/android

Status: 🟡 PARTIALLY IMPLEMENTED

Required:

  • GET /getLeaderboard/{eventId} - Get leaderboard for event
  • POST /submitTime/{eventId} - Submit lap time
  • GET /getPlayerRank/{synergyId}/{eventId} - Get player rank
  • GET /getFriendsLeaderboard - Friends-only leaderboard

Priority: MEDIUM (needed for Phase 3)


14. Time Trials Service ⚠️

Base Path: /timetrials/api/android

Status: 🟡 PARTIALLY IMPLEMENTED

Exists:

  • Database table TimeTrials with seeded data
  • TimeTrialResult tracking

Missing:

  • REST API endpoints for time trials
  • Weekly rotation system
  • Reward claiming

Priority: MEDIUM (needed for Phase 3)


15. Multiplayer Service 🔴

Base Path: /multiplayer/api/android

Status: 🔴 NOT IMPLEMENTED

Required:

  • Matchmaking endpoints
  • Real-time race sync
  • Ghost data upload/download
  • Race results submission

Priority: LOW (Phase 4 - future feature)


16. Friends/Social Service 🔴

Base Path: /social/api/android

Status: 🔴 NOT IMPLEMENTED

Required:

  • Friend list management
  • Social challenges
  • Gift sending
  • Club/team management

Priority: LOW (Phase 4 - future feature)


📊 Implementation Status Matrix

Service Controller Endpoints Status Phase
Director DirectorController 1/1 Complete Baseline
User UserController 3/3 Complete Baseline
Product ProductController 3/3 Complete Baseline
DRM DrmController 3/3 Complete Baseline
Config ConfigController 4/4 Complete Phase 1
Progression ProgressionController 7/7 Complete Phase 1
Rewards RewardsController 3/5 🟡 60% Phase 1-2
Tracking TrackingController 2/2 Complete Baseline
Assets AssetsController 2/2 Complete Baseline
Settings ServerSettingsController 2/2 Complete Baseline
Modding ModdingController 3/3 Complete Baseline
Events Missing 0/4 🔴 0% Phase 2
Leaderboards LeaderboardsController 1/4 🟡 25% Phase 3
Time Trials TimeTrialsController 0/5 🔴 0% Phase 3
Multiplayer Missing 0/10+ 🔴 0% Phase 4
Social Missing 0/8+ 🔴 0% Phase 4

Overall Progress: 58/73 endpoints (79% complete for Phase 1-3)


🎯 Phase 2 Priority: Career Events System

Based on this analysis, Phase 2 MUST implement the Events Service:

Why Events Service is Critical:

  1. Core Gameplay: Career mode is primary game loop
  2. Progression Blocker: Can't advance without completing events
  3. Reward System: Events award XP, currency, cars
  4. Player Engagement: Main content that keeps players playing

Events Service Implementation Plan:

Step 1: Extract event data from APK assets

  • Event IDs, names, requirements
  • Reward structures
  • Series/championship organization

Step 2: Create database schema

CREATE TABLE Events (
    Id INT PRIMARY KEY,
    EventId VARCHAR(100),
    SeriesId VARCHAR(100),
    Name VARCHAR(200),
    Track VARCHAR(100),
    LapsRequired INT,
    CarRequirements TEXT,
    GoldReward INT,
    CashReward INT,
    XPReward INT
);

Step 3: Build EventsController

  • GET /getAvailableEvents
  • GET /getEventDetails/{eventId}
  • POST /startEvent/{eventId}
  • POST /completeEvent/{eventId}

Step 4: Integrate with ProgressionController

  • Track event completions
  • Award rewards
  • Unlock next events

🔐 Security Considerations

SSL/TLS:

  • ⚠️ Critical Issue: APK disables SSL validation in Http.java
  • 🔧 Fix Required: Enable proper certificate validation
  • Mitigation: Server should use valid Let's Encrypt cert

Authentication:

  • Synergy ID acts as player identifier
  • Device ID prevents duplicate accounts
  • ⚠️ No session tokens (future enhancement)

Data Validation:

  • Server validates all input
  • Purchase verification bypassed (per EA agreement)
  • Currency awards capped to prevent exploits

📝 Conclusion

Current Status:

  • 11/16 services fully implemented (69%)
  • Phase 1 complete: Config & Save/Load working
  • ⚠️ Phase 2 ready: Need Events service for career mode
  • 🔴 Phase 3-4: Leaderboards, multiplayer for future

Next Steps:

  1. Fix SSL validation in APK (security)
  2. Implement Events service (Phase 2 blocker)
  3. Enhance Rewards system (streak tracking)
  4. Complete Time Trials (leaderboards)

APK Compatibility:

APK uses standard Synergy API format
No custom endpoints required
Our server architecture matches EA's design
Configuration system compatible

Ready for production testing! 🚀


Document Version: 1.0
Last Updated: February 22, 2026
Status: Network analysis complete, server roadmap defined