Skip to content

Java Client

Java is the default example language. The Java SDK is thread-safe and exposes typed clients. Every method returns a GmcAction<T> which supports synchronous (execute()) and asynchronous (queue(...)) execution.

Setup

GmcClient gmc = GmcClient.builder()
    .baseUrl("https://api.gamemanager.cloud")
    .applicationId("<APP_ID>")
    .applicationSecret("<APP_SECRET>")
    // or: .applicationToken("<APP_TOKEN>")
    .build();

String teamId = gmc.getTeamId(); // discovered automatically

Async vs Sync

  • Sync: T value = action.execute();
  • Async: action.queue(onSuccess, onError);
// Sync
java.util.List<GameServer> servers = gmc.serverClient().getGameServers().execute();

// Async
gmc.serverClient().getGameServers().queue(
  list -> System.out.println("Servers: " + list.size()),
  err -> err.printStackTrace()
);

Nodes

java.util.List<Node> nodes = gmc.nodeClient().getNodes().execute();
Node node = gmc.nodeClient().getNode("node-123").execute();
gmc.nodeClient().updateNode("node-123").execute();
gmc.nodeClient().changeSettings("node-123", new NodeSettings()).execute();
java.util.List<NodeTask> tasks = gmc.nodeClient().getNodeTasks("node-123").execute();

Servers

// List and get
java.util.List<GameServer> servers = gmc.serverClient().getGameServers().execute();
GameServer srv = gmc.serverClient().getGameServer("srv-123").execute();

// Lifecycle
gmc.serverClient().startServer("srv-123").execute();
gmc.serverClient().restartServer("srv-123").execute();
gmc.serverClient().stopServer("srv-123").execute();
gmc.serverClient().updateServer("srv-123").execute();

// Create
GameServer created = gmc.serverClient()
    .createServer("node-123", "My Server", GameType.CS2, "de_dust2", "/servers/cs2")
    .execute();

// Backups and settings
gmc.serverClient().backupServer("srv-123", "pre-update").execute();
gmc.serverClient().deleteBackup("srv-123", "backup-1").execute();
gmc.serverClient().resetSettings("srv-123").execute();

// Misc
int maxPlayers = gmc.serverClient().getMaxPlayers("srv-123").execute();
gmc.serverClient().rconCommand("srv-123", "status").execute();
gmc.serverClient().changeDirectory("srv-123", "/servers/cs2").execute();
gmc.serverClient().changeDisplayName("srv-123", "Public Server #1").execute();

Teams

Team team = gmc.teamClient().getTeam();
gmc.teamClient().inviteMember("dev@example.com").execute();
gmc.teamClient().kickMember("user-123").execute();
gmc.teamClient().changeMemberPermission("user-123", java.util.List.of(Permission.MANAGE_SERVERS)).execute();
java.util.List<Notification> notifications = gmc.teamClient().getNotifications(true).execute();
long unread = gmc.teamClient().getUnreadNotificationCount().execute();

Automations

java.util.List<Automation> autList = gmc.automationClient().listAutomations().execute();

AutomationCreateRequest createReq = new AutomationCreateRequest();
createReq.setTeamId(gmc.getTeamId());
createReq.setName("Nightly Restart");
Automation createdAutomation = gmc.automationClient().createAutomation(createReq).execute();

AutomationRun run = gmc.automationClient()
  .triggerManual(createdAutomation.getId(), new ManualTriggerRequest())
  .execute();

Info & Images & Settings

// Version info
GmcVersion version = gmc.infoClient().getVersion().execute();

// Image bytes
byte[] bytes = gmc.imageClient().getImage("img-123").execute();

// Setting profiles
SettingProfile profile = gmc.settingProfileClient().getProfile("prof-1").execute();
String gameIni = gmc.settingProfileClient().getGameIni("prof-1").execute();

Errors

All API errors throw GmcException (or subclass). You can read status, key, and message from the exception.

try {
  gmc.serverClient().startServer("srv-404").execute();
} catch (GmcException e) {
  System.err.println(e.getMessage());
}