Reference

File Manifest Format

The File Manifest URL you supply when submitting your server is a single endpoint the Open SWG Realms client calls to figure out which executables to use and which game files it needs to download or update before launching your galaxy. It must return a JSON array containing two objects: one keyed galaxy_information, one keyed files. The order of the two doesn't matter — the client finds each by its key.

Why this matters: the client trusts this file completely. If a file is missing from the manifest, it will never be downloaded or verified. If an md5 is wrong, players will be stuck endlessly re-downloading (or running an out-of-date file). Keep this endpoint accurate and keep it in sync whenever you patch your server files.

Endpoint requirements

RequirementDetail
MethodMust respond to GET requests.
Content-TypeShould be served as application/json. The client also accepts text/plain as long as the body parses as valid JSON.
BodyA JSON array containing two objects, one keyed galaxy_information and one keyed files. Not a flat file list, not newline-delimited JSON.
AuthMust be publicly accessible with no authentication. The client cannot log in to fetch it.
HTTPSStrongly recommended. Files themselves may be hosted anywhere reachable from fileurl.

Root structure

The response is an array containing two objects. The client identifies each one by its key, not its position — either order works.

KeyValueDescription
galaxy_information array An array containing exactly one object — the galaxy's executable info. See below.
files array One object per file the client needs to verify or download. Same as before.

Galaxy information object

The single object inside galaxy_information:

FieldTypeDescription
galaxy_name string Your galaxy's display name. Informational — the directory listing still uses the name you submitted, not this field.
launch_executable string Filename of the executable Play should launch, e.g. SWGEmu.exe. Optional. The client uses this only if that file actually exists in the install folder after sync; otherwise it falls back to its default search (SWGEmu.exe, then SwgClient_r.exe).
client_setup_executable string Filename of the configuration/setup utility for "Configure Game Options", e.g. SWGEmu_Setup.exe. Optional, same fallback behavior — if it's not found on disk, the client falls back to its default search (SWGEmu_Setup.exe, then SwgClientSetup_r.exe). If nothing is found either way, the button stays hidden.

File object schema

Each entry in the files array is an object with exactly three required fields:

FieldTypeDescription
filename string The file's path relative to the galaxy's install folder, e.g. data/sku1.tre or SwgClient_r.exe. Use forward slashes for subfolders.
fileurl string A direct, publicly reachable URL the client can download this exact file from. Must return the raw file bytes (no landing pages or redirects behind auth).
md5 string The lowercase, 32-character hex MD5 checksum of the file. The client hashes the local copy and compares it to this value to decide whether a re-download is needed.

Example response

[
  {
    "galaxy_information": [
      {
        "galaxy_name": "Galaxy Name",
        "launch_executable": "SWGEmu.exe",
        "client_setup_executable": "SWGEmu_Setup.exe"
      }
    ]
  },
  {
    "files": [
      {
        "filename": "data/sku1.tre",
        "fileurl": "https://cdn.example-server.com/files/sku1.tre",
        "md5": "63c2d21719ed56d96b70373d99cc94d6"
      },
      {
        "filename": "data/sku2.tre",
        "fileurl": "https://cdn.example-server.com/files/sku2.tre",
        "md5": "23c2d21719ed56d96b70373d99cc94d6"
      },
      {
        "filename": "SwgClient_r.exe",
        "fileurl": "https://cdn.example-server.com/files/SwgClient_r.exe",
        "md5": "9a0364b9e99bb480dd25e1f0284c8555"
      }
    ]
  }
]

How the client uses this

When a player selects your galaxy and presses Sync, then Play, the client:

StepAction
1Fetches your manifest_url and parses the response.
2Finds the object with a galaxy_information key and remembers launch_executable / client_setup_executable for this galaxy.
3Finds the object with a files key. For each entry, checks whether filename exists in the local install folder.
4If it exists, computes its MD5 and compares it to the manifest's md5.
5If the file is missing, or the MD5 doesn't match, downloads it fresh from fileurl into place.
6On Play, launches launch_executable if it's present on disk, otherwise falls back to its default search.
7"Configure Game Options" does the same fallback with client_setup_executable, and stays hidden if nothing is found.

Validation checklist before you submit

Check
Response is valid JSON (test with any JSON linter or curl your-url | jq).
Root is an array containing one object keyed galaxy_information and one keyed files.
galaxy_information contains exactly one object.
Every object in files has all three fields, spelled and cased exactly as shown.
md5 values are lowercase hex, computed from the exact file at fileurl.
Every fileurl is reachable without login and returns the raw file, not an HTML page.
The files array includes your game executable and setup utility, along with every other required file.
Note: launch_executable and client_setup_executable are hints, not guarantees — if the named file isn't actually present after sync, the client quietly falls back to its default search instead of failing. Omit either field if your galaxy just uses the standard filenames.