Panel/docs/architecture/API_REFERENCE.md
2026-06-08 16:09:54 -05:00

9.3 KiB

API Reference

Workspace reference: GSP-WORKSPACE.md

Scope

This is the master reference for:

  • Panel -> agent XML-RPC
  • external Panel API routes
  • public status API
  • Website payment/webhook endpoints

Detailed command catalog:

  • docs/architecture/PANEL_AGENT_COMMANDS.md

Scheduler action catalog:

  • docs/features/SCHEDULER_ACTIONS.md

Architecture Overview

home.php module request
  -> module PHP page
  -> shared include libraries
  -> database layer
  -> optional agent RPC through lib_remote.php

external automation
  -> Panel/ogp_api.php
  -> api_* handler
  -> same module/library logic
  -> optional agent RPC

public node status
  -> Panel/status_api.php
  -> direct remote host probe + optional agent stats

website checkout/webhook
  -> Website/api/* or Website/webhook.php
  -> billing runtime
  -> DB and payment gateway APIs

Panel -> Agent XML-RPC

Transport:

  • XML-RPC over HTTP
  • endpoint path /RPC2
  • wrapper Panel/includes/lib_remote.php
  • server implementations in Agent_Linux/ogp_agent.pl and Agent-Windows/OGP64/OGP/ogp_agent.pl

Primary categories:

Category Examples
lifecycle server_status, universal_start, stop_server, restart_server
files readfile, writefile, dirlist, get_file_part
updates steam_cmd, component_update, stop_update
system exec, sudo_exec, rebootnow, what_os, discover_ips, mon_stats
scheduler scheduler_add_task, scheduler_edit_task, scheduler_del_task, scheduler_list_tasks
content writefile + exec manifest/script orchestration; legacy steam_workshop, get_workshop_mods_info

See the full command table in:

  • docs/architecture/PANEL_AGENT_COMMANDS.md

Panel Wrapper Methods

Most Panel modules do not build XML-RPC directly. They call OGPRemoteLibrary.

Wrapper Method Agent Command Common Modules
status_chk() quick_chk cron, server, status, dashboard, update pages
remote_server_status() server_status gamemanager
universal_start() universal_start gamemanager, API start
remote_stop_server() stop_server gamemanager, billing, API stop
remote_restart_server() restart_server gamemanager, API restart
remote_send_rcon_command() send_rcon_command gamemanager, rcon, util helpers
remote_readfile() / remote_writefile() readfile / writefile litefm, editconfigfiles, addonsmanager, mysql, server
remote_query() remote_query gamemanager, dashboards
component_update() component_update update/admin pages
scheduler_*() scheduler_* cron
steam_workshop() steam_workshop legacy workshop path only

External Panel API

Primary endpoint:

  • Panel/ogp_api.php

Auth model:

  • token-based
  • token issued by token/create
  • requests can be GET, POST, or JSON body
  • host allowlist can be enforced

Top-level API handlers implemented in ogp_api.php:

Handler Function Route Prefix Purpose
api_token() token/* create/test tokens
api_server() server/* remote agent CRUD/status
api_user_games() user_games/* home provisioning and listing
api_user_admin() user_admin/* user CRUD and assignments
api_gamemanager_admin() gamemanager_admin/* admin game manager actions
api_gamemanager() gamemanager/* start/stop/restart/update/RCON
api_litefm() litefm/* file listing/read/write/delete
api_addonsmanager() addonsmanager/* content template listing/install
api_server_content() server_content/* scheduled content actions
api_steam_workshop() steam_workshop/* legacy workshop installs
api_setting() setting/* setting read helper

Detailed route list:

Route Purpose
token/create, token/test auth bootstrap
server/list, server/status, server/restart, server/create, server/remove, server/add_ip, server/remove_ip, server/list_ips, server/edit_ip remote host management
user_games/list_games, user_games/list_servers, user_games/create, user_games/clone, user_games/set_expiration server-home management
user_admin/list, user_admin/get, user_admin/create, user_admin/remove, user_admin/set_expiration, user_admin/list_assigned, user_admin/assign, user_admin/remove_assign user management
gamemanager/start, gamemanager/stop, gamemanager/restart, gamemanager/rcon, gamemanager/update lifecycle automation
gamemanager_admin/reorder admin ordering helper
litefm/list, litefm/get, litefm/save, litefm/remove remote file operations
addonsmanager/list, addonsmanager/install add-on templates
steam_workshop/install legacy Workshop install
server_content/run_scheduled_action typed content action trigger
setting/get panel setting read

See:

  • docs/features/USER_API.md

Public Status API

Endpoint:

  • Panel/status_api.php

Purpose:

  • public or semi-public read-only summary of remote nodes

Auth:

  • shared query token

Behavior:

  • probes remote agents with TCP
  • optionally calls agent stats method names if available
  • caches JSON locally for 30 seconds

Return shape:

  • generated_at
  • nodes[]
    • name
    • host
    • agent_port
    • online
    • cpu_percent
    • mem_percent
    • disk_percent

Website API And Webhooks

Endpoint Purpose Auth / Verification
Website/api/create_order.php create PayPal order storefront checkout/session context
Website/api/capture_order.php capture PayPal order storefront checkout/session context
Website/api/log_error.php client-side error logging open endpoint, writes log
Website/webhook.php verified PayPal webhook processing OAuth + webhook signature verification
Website/paypal/webhook.php compatibility wrapper to active webhook runtime same

Internal Module Endpoints

These are not public APIs in the same sense as ogp_api.php, but they matter architecturally.

Endpoint Module Purpose
Panel/modules/gamemanager/get_server_log.php gamemanager AJAX log refresh
Panel/modules/dashboard/updateWidgets.php dashboard dashboard async refresh
Panel/modules/tickets/notificationCount.php tickets unread count
Panel/modules/cron/events.php cron scheduler log refresh
Panel/modules/litefm/get_file.php litefm chunked file downloads

Workshop Manifest Contract

Current preferred Workshop/content flow:

  1. Panel validates Workshop IDs
  2. Panel writes manifest JSON to server home
  3. Panel writes a generated per-job shell script to server home via writefile
  4. The job script writes a temporary SteamCMD runscript
  5. Panel runs the generated job script with exec
  6. Agent logs/install output is returned to Panel

Common manifest fields:

  • manifest_version
  • home_id
  • home_cfg_id
  • content_type
  • action
  • items
  • options

For Workshop-specific manifests, the broader fields documented in WORKSHOP_SYSTEM.md also apply, including app IDs, install strategy, update policy, pending action, and target paths.

Current Workshop actions:

  • install
  • update
  • check_updates
  • download_only
  • validate_files
  • remove

Current Scheduler/API action aliases:

  • workshop_update
  • workshop_update_and_restart
  • workshop_download_only
  • workshop_install_pending_on_restart

The legacy steam_workshop/install API route and agent steam_workshop RPC remain compatibility-only. New user-facing Workshop work should use addonsmanager / Server Content Manager.

Status Contract

server_status is the preferred runtime contract.

Expected fields:

  • status
  • ready
  • process_running
  • session_running
  • game_port_listening
  • query_port_listening
  • rcon_port_listening
  • pid
  • session_name
  • ip
  • port
  • query_port
  • rcon_port
  • last_error
  • query_info

State meanings:

  • ONLINE
  • STARTING
  • STOPPING
  • OFFLINE
  • UNRESPONSIVE
  • UNKNOWN

Rules:

  • query failure alone must not imply offline
  • agent process/session or game-port evidence is sufficient for online
  • UNKNOWN is reserved for unreachable or inconclusive agent state

Panel fallback behavior:

  • Panel/modules/gamemanager/home_handling_functions.php calls remote_server_status() first.
  • If that structured RPC is unavailable or ambiguous, the Panel calls is_screen_running().
  • The Panel then calls generic agent exec() with an ss/netstat port probe for the configured game port.
  • The fallback port grep must match normal listener output such as :2302 or .2302; do not shell-quote the port inside the regex.

Scheduler-As-API Contract

Agent cron jobs often execute URLs like:

  • ogp_api.php?gamemanager/start
  • ogp_api.php?gamemanager/stop
  • ogp_api.php?gamemanager/restart
  • ogp_api.php?gamemanager/update&type=steam
  • ogp_api.php?server_content/run_scheduled_action

This means ogp_api.php is part of the scheduler runtime and must stay backward compatible with those generated URLs.

Search Coverage Used For This Document

  • sed -n '1,240p' Panel/ogp_api.php
  • rg -n "^function api_" Panel/ogp_api.php
  • sed -n '1,240p' Panel/status_api.php
  • find Website/api -maxdepth 1 -type f
  • sed -n '1,220p' Website/webhook.php