Skip to content

Latest commit

 

History

History
180 lines (129 loc) · 5.82 KB

File metadata and controls

180 lines (129 loc) · 5.82 KB

voxlis API

Roblox executor/version aggregator for Windows, macOS, Android, and iOS. It normalizes each service’s reported Roblox client version, validates it, and outputs a single JSON payload that’s easy to consume.

PHP API License Status


Features

  • PC baseline match (Windows/macOS): compares each service to Roblox LIVE CDN version.
  • Mobile strictness (Android/iOS): marks a service updated only if Roblox’s mobile API returns UpgradeAction === "None" for that app build.
  • Per‑version timing: tracks wait time until update; shows current elapsed or historical average in the output.
  • Diagnostics: ?selftest=1, ?diag=1 (mobile), ?diagpc=1 (PC).
  • Caching & history: minimizes endpoint load and preserves recent timing data.

Note: timing values are measured in hours, not minutes.


Requirements

  • PHP 7.4+ (8.x OK)
  • cURL extension enabled
  • Outbound HTTPS to: clientsettingscdn.roblox.com and the listed service endpoints
  • The web server user must be able to write to ./cache_v2/

Quick Start

  1. Place index.php in a web-served directory.

  2. Ensure cache_v2/ is writable:

    mkdir -p cache_v2 && chmod 775 cache_v2
  3. Fetch the default output:

    curl -s 'https://your.host/index.php' | jq .
  4. Run a self-test:

    curl -s 'https://your.host/index.php?selftest=1' | jq .

Configuration

Constant Default Description
UA Chrome-like UA HTTP user-agent for requests
HTTP_TIMEOUT 12 Per-request timeout (seconds)
CORS_ALLOW * CORS allow-origin header
CACHE_DIR_V2 ./cache_v2 Cache directory
AGG_CACHE_TTL 1800 Cache TTL for main payload (seconds)
RBLX_VERS_TTL 1800 TTL for Roblox baseline (seconds)
DEBUG_MODE false If false, serves cached payload when fresh

Endpoints

All are GET and return JSON.

Query Description
(none) Aggregated results (cached unless DEBUG_MODE=true).
?include_backends=1 Adds detailed per-service backend status.
?selftest=1 Checks PHP, cURL, cache directory, and Roblox reachability.
?diag=1 Mobile diagnostics: extraction details and Roblox validation.
?diagpc=1 PC diagnostics: normalized versions vs Roblox baseline.

How Roblox link checking works

Windows / macOS

  1. The script fetches Roblox’s official version info from:

    • https://clientsettingscdn.roblox.com/v2/client-version/WindowsPlayer/channel/LIVE
    • https://clientsettingscdn.roblox.com/v2/client-version/MacPlayer/channel/LIVE
  2. It extracts the clientVersionUpload value, which looks like version-31fc142272764f02.

  3. Each executor’s endpoint is fetched, and a version-like string is extracted.

  4. After normalization (removing prefixes, lowercasing), the script compares the value to the Roblox LIVE baseline.

  5. If they match exactly, that service is marked as updated: true.

Android / iOS

  1. The script extracts a numeric version from each service, such as 2.695.960.

  2. It builds the Roblox app version identifier:

    • Android → AppAndroidV2.695.960
    • iOS → AppiOSv2.695.960 (note lowercase v)
  3. It queries Roblox’s mobile client API:

    https://clientsettingscdn.roblox.com/v1/mobile-client-version?appVersion=<identifier>
    
  4. Roblox returns JSON like:

    {
      "data": { "UpgradeAction": "None" }
    }
  5. If UpgradeAction equals None, the service is counted as updated.


Output Schema

Example (simplified)

{
  "windows": {
    "zenith": {"updated": true, "version": "version-31fc142272764f02", "avg": {"version-31fc142272764f02": 47}}
  },
  "RobloxVersions": {
    "windows": "version-31fc142272764f02",
    "macos":   "version-7a1b3c4d5e6f7890",
    "ios":     ["version-2.695.956"],
    "android": ["version-2.695.960"]
  }
}

Field meanings:

  • updated – Whether the service matches Roblox (PC) or passes UpgradeAction=None (mobile).
  • version – The extracted, normalized version string (always prefixed with version-).
  • avg – The time (in hours) this version has been pending or historically averaged.

Services list

Defined inline under $SERVICES_INLINE grouped by platform. Example:

"zenith" => [
  "url" => "https://zenith.win/api/v1/status",
  "field" => "roblox_version"
]

Caching

  • cache_v2/versions_cache_v2.json – main aggregated payload (30m TTL)
  • cache_v2/backends_status_v2.json – backend debug info
  • cache_v2/History_v2.json – version timing logs (max 10 waits per version)
  • cache.rblx_versions_v2.json – Roblox baselines (30m TTL)

Troubleshooting

  • 500 or blank: check web server log and php-error.log.
  • Roblox HTTP fails: outbound firewall or DNS issue.
  • unreachable: endpoint offline.
  • no_version_reported: specify a field path.
  • Mobile always false: inspect ?diag=1 to see Roblox API response.

License

MIT. See LICENSE.