t_default('acp.api.desc_index', 'Site title, account/player counts, players online (with unique IPs), client version, port.'), 'modules/status/online.php' => t_default('acp.api.desc_online', 'The currently online players: name, level, vocation.'), 'modules/highscores/topExperience.php' => t_default('acp.api.desc_top_experience', 'Top players by experience. ?rows=N (default 10, max 100).'), 'modules/towns/getTownNames.php' => t_default('acp.api.desc_town_names', 'Configured town id => name map.'), 'modules/character/info.php' => t_default('acp.api.desc_character_info', 'Character card by name (?name=). Respects hidden characters.'), 'modules/highscores/top.php' => t_default('acp.api.desc_highscores_top', 'Highscores by skill type, same data as the site page. ?type=1-9&vocation=id|all&rows=N.'), ); } $root = dirname(__DIR__, 2) . '/api'; $files = array(); if (is_dir($root)) { $files[] = 'index.php'; $modulesDir = $root . '/modules'; if (is_dir($modulesDir)) { $iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($modulesDir, FilesystemIterator::SKIP_DOTS) ); foreach ($iterator as $file) { if (!$file->isFile() || $file->getExtension() !== 'php') { continue; } $relative = str_replace('\\', '/', substr($file->getPathname(), strlen($root) + 1)); if (strpos($relative, '/class/') !== false) { continue; } $files[] = $relative; } } } sort($files); $known = acp_api_known_endpoints(); $siteUrl = rtrim((string)($config['site_url'] ?? ''), '/'); ?>

/api/

{
  "version": { "znote": "2.0.1", "ot": "TFS_10", "module": 1 },
  "data": { ... }
}