Icefish API (1.0.0)

Download OpenAPI specification:

This is the API documentation for the Icefish Reseller API. It provides endpoints to manage games, locations, and servers.

Games

List Games

Retrieve all supported game builds and related metadata.

Returned objects include:

  • jarfile: Internal filename reference for use in servers for auto-install.
  • name: Human readable game/version label.
  • parent_game: The parent game or franchise this game belongs to.
  • category: The category for this game.
  • memory_required: Minimum memory requirement in MB.
  • memory_recommended: Recommended memory in MB.
  • info_url: Upstream reference or release notes link (when available).

Use this endpoint to populate game/version selectors prior to provisioning a server.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{}

Locations

List Locations

List all datacenter locations available for provisioning.

Returned objects include:

  • name: Human readable label for the location.
  • code: Stable short internal code, used during server provisioning.
  • country_code: Two-letter country code.
  • region: Higher level geographic grouping (e.g., continent or macro area).
  • coordinates.latitude / coordinates.longitude: Approximate geo coordinates (not exact site).
  • ping_node: Hostname you can probe to measure latency from clients.
    • ICMP: Ping towards ping_node.
    • HTTP: Perform a GET request to https://<ping_node>:3456/ping (expect Pong response).
  • memory_available: Current aggregate free memory capacity (MB) for provisioning.

Use this endpoint to build region selectors and surface capacity hints.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "status": "success",
  • "message": ""
}

Servers

List Servers

Retrieve a paginated collection of servers you have access to.

Query parameters:

  • user_id: Filter results to servers assigned to a specific end user.
  • page: 1-based page index.
  • pageSize: Number of items per page (upper bound enforced server-side).

Server objects (see server schema) include:

  • id: Unique server identifier.
  • user_id: Owning end user ID.
  • jarfile: Game build / runtime identifier.
  • memory: Allocated RAM in MB.
  • player_slots: Configured maximum player capacity.
  • world: Primary world or save name.
  • suspended: Whether server is suspended.
  • name: Friendly display name.
  • status: Lifecycle state (started, stopped, etc.).
  • ip / port: Connection target for clients.
  • location_code: Deployment location code (from List Locations).

The meta block provides pagination counters enabling UI navigation.

Authorizations:
bearerAuth
query Parameters
user_id
integer
Example: user_id=123

servers assigned to a specific user ID

page
integer
Default: 1
Example: page=2

Page number for pagination

page_size
integer
Default: 20
Example: page_size=50

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": [
    ],
  • "status": "success",
  • "message": ""
}

Create Server

Provision a new server instance.

Required body fields:

  • user_id: End user who will own the server.
  • location_code: Deployment location code (must match a value from List Locations).
  • memory: Allocated RAM in MB.
  • auto_start: Start automatically after creation if true.

Optional body fields:

  • jarfile: Specific game jarfile to auto-install or run.
    • A jarfile listed in List Games will auto-install onto the server.
    • A jarfile not listed in List Games will be used as-is (no auto-install).
  • player_slots: Player capacity limit.
  • world: Initial world / save name.
  • name: Friendly display name.
  • suspended: Create in a suspended state if desired.

Response returns the new server id.

Authorizations:
bearerAuth
Request Body schema: application/json
required
user_id
required
integer

Owning end user ID

jarfile
string

The game jarfile to use for the server

location_code
required
string

Deployment location code (from List Locations)

memory
required
integer

Allocated memory in MB

player_slots
integer

Configured maximum player capacity

world
string

Primary world/save name

name
string

Display name

suspended
boolean

Server suspension state

auto_start
required
boolean

Whether the server should start automatically after creation

Responses

Request samples

Content type
application/json
{
  • "user_id": 123,
  • "jarfile": "minecraft_1.21.8.jar",
  • "location_code": "NY",
  • "memory": 4096,
  • "player_slots": 50,
  • "world": "SurvivalWorld",
  • "name": "Minecraft Server",
  • "suspended": false,
  • "auto_start": true
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success",
  • "message": "Server created successfully."
}

Get Server

Fetch full configuration and runtime metadata for a single server.

Key fields (see server schema) include:

  • id: Unique server identifier.
  • user_id: Owning end user ID.
  • jarfile: Game build / runtime identifier.
  • memory: Allocated RAM in MB.
  • player_slots: Configured maximum player capacity.
  • world: Primary world or save name.
  • suspended: Whether server is suspended.
  • name: Friendly display name.
  • ip / port: Connection target for clients.
  • location_code: Deployment location code (from List Locations).
Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Example: 456

Unique identifier of the server

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success",
  • "message": ""
}

Update Server

Apply partial updates (JSON Merge Patch) to mutable server attributes.

Updatable fields:

  • user_id
  • jarfile
  • memory
  • player_slots
  • world
  • suspended
  • name

Notes:

  • location_code and network allocation (ip/port) cannot be modified here (use a transfer workflow).
  • Fields omitted from the payload are not altered.
Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Example: 456

Unique identifier of the server

Request Body schema: application/merge-patch+json
required
user_id
integer

Updated owning end user ID

jarfile
string

Updated jarfile to use for the server

memory
integer

Updated allocated memory in MB

player_slots
integer

Updated configured maximum player capacity

world
string

Updated primary world/save name

suspended
boolean

Updated server suspension state

name
string

Updated display name

Responses

Request samples

Content type
application/merge-patch+json
{
  • "user_id": 123,
  • "jarfile": "minecraft_1.21.8.jar",
  • "memory": 8192,
  • "player_slots": 100,
  • "world": "AdventureWorld",
  • "suspended": false,
  • "name": "Updated Server Name"
}

Response samples

Content type
application/json
{
  • "data": { },
  • "status": "success",
  • "message": "Server updated successfully."
}

Delete Server

Permanently remove a server and its associated data.

The server will be stopped automatically if it is running.

Irreversible: capture backups or exports before issuing this call if retention is required.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Example: 456

Unique identifier of the server

Responses

Response samples

Content type
application/json
{
  • "data": { },
  • "status": "success",
  • "message": "Server deleted successfully."
}

Get Server Status

Return the current lifecycle status only.

Status values:

  • started
  • stopped
  • starting
  • stopping

Use for lightweight polling without fetching full server details.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Example: 456

Unique identifier of the server

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success",
  • "message": ""
}

Update Server Status

Request a lifecycle action for the server.

Actions:

  • start: Boot a stopped server.
  • stop: Gracefully stop a running server.
  • restart: Graceful stop then start.
  • force_stop: Immediate termination (may risk data loss).

Action processing is asynchronous; poll Get Server Status to observe state changes.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Example: 456

ID of the server

Request Body schema: application/json
required
action
required
string
Enum: "start" "stop" "restart" "force_stop"

The desired server action

Responses

Request samples

Content type
application/json
{
  • "action": "stop"
}

Response samples

Content type
application/json
{
  • "data": { },
  • "status": "success",
  • "message": "Server action accepted and is being processed."
}

Get Server Usage

Retrieve real-time CPU and memory utilization snapshot.

Fields:

  • cpu_percent: Current CPU usage percentage.
  • memory_percent: Current memory usage percentage.

Intended for dashboards & health indicators; avoid very high polling frequencies.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Example: 456

Unique identifier of the server

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success",
  • "message": ""
}

Get Server Console

Retrieve recent console output lines plus the latest sequence marker for incremental polling.

Usage pattern:

  1. Call without log_seq to obtain initial batch + starting log_seq.
  2. Re-call with the returned log_seq to fetch only new lines.
  3. Repeat for a pull-based tail experience.
Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Example: 456

Unique identifier of the server

query Parameters
log_seq
integer
Example: log_seq=123456789

Sequence number of the last log line received. Use this to fetch new logs since then.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success",
  • "message": ""
}

Send Server Console Command

Submit a single command to the server console.

Behavior:

  • Command is queued asynchronously.
  • Use Get Server Console to read resulting output lines.
  • Order of execution is preserved per server.
Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Example: 456

Unique identifier of the server

Request Body schema: application/json
required
command
required
string

Command to execute on the server console

Responses

Request samples

Content type
application/json
{
  • "command": "say Hello players!"
}

Response samples

Content type
application/json
{
  • "data": { },
  • "status": "success",
  • "message": "Command accepted and is being processed."
}

List FTP Users for Server

Retrieve all FTP users associated with a specific server.

Returned objects include:

  • id: Unique FTP user identifier.
  • username: FTP base username.
  • permissions: Array of permission strings assigned to the user for this server. (e.g., read, write)
Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Example: 456

Unique identifier of the server

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "status": "success",
  • "message": ""
}

Assign FTP User to Server

Link an existing FTP user to this server with specific permissions.

Required body fields:

  • ftp_user_id: ID of the FTP user to assign.
  • permissions: Array of permission strings to grant (e.g., read, write).

Response confirms the assignment.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Example: 456

Unique identifier of the server

Request Body schema: application/json
required
ftp_user_id
required
integer

ID of the FTP user to assign to the server

permissions
required
Array of strings

Permissions to grant to the FTP user for this server

Responses

Request samples

Content type
application/json
{
  • "ftp_user_id": 789,
  • "permissions": [
    ]
}

Response samples

Content type
application/json
{
  • "data": { },
  • "status": "success",
  • "message": "FTP user assigned to server successfully."
}

Get FTP User Assignment

Fetch details of a specific FTP user assigned to this server.

Returned object includes:

  • id: Unique FTP user identifier.
  • username: FTP base username.
  • permissions: Array of permission strings assigned to the user for this server. (e.g., read, write)
Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Example: 456

Unique identifier of the server

ftp_user_id
required
integer
Example: 789

Unique identifier of the FTP user assigned to the server

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success",
  • "message": ""
}

Update FTP User Assignment

Modify permissions for an FTP user assigned to this server.

Updatable fields:

  • permissions: Array of permission strings to set (e.g., read, write).

Notes:

  • Fields omitted from the payload are not altered.
Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Example: 456

Unique identifier of the server

ftp_user_id
required
integer
Example: 789

Unique identifier of the FTP user assigned to the server

Request Body schema: application/merge-patch+json
required
permissions
Array of strings

Updated permissions to grant to the FTP user for this server

Responses

Request samples

Content type
application/merge-patch+json
{
  • "permissions": [
    ]
}

Response samples

Content type
application/json
{
  • "data": { },
  • "status": "success",
  • "message": "FTP user assignment updated successfully."
}

Remove FTP User from Server

Unlink an FTP user from this server, revoking their access.

This does not delete the FTP user account itself, only the association with this server.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Example: 456

Unique identifier of the server

ftp_user_id
required
integer
Example: 789

Unique identifier of the FTP user to remove from the server

Responses

Response samples

Content type
application/json
{
  • "data": { },
  • "status": "success",
  • "message": "FTP user removed from server successfully."
}

Get FTP User Connection Details

Retrieve connection details (hostname, port, username) for an FTP user assigned to this server.

Note: Passwords are not retrievable for security reasons. Reset the password if needed.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Example: 456

Unique identifier of the server

ftp_user_id
required
integer
Example: 789

Unique identifier of the FTP user assigned to the server

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success",
  • "message": ""
}

List Server Databases

Retrieve all databases for a given server.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "status": "success",
  • "message": ""
}

Create Server Database

Create a new database for the server.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success",
  • "message": ""
}

Update Server Database Password

Change the password for a given server database.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer
db_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "status": "success",
  • "message": ""
}

Delete Server Database

Delete a database for a given server.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer
db_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": { },
  • "status": "success",
  • "message": ""
}

List Server Backups

Retrieve all backup files for a server.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "status": "success",
  • "message": ""
}

Create Server Backup

Start a backup for the server.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": { },
  • "status": "success",
  • "message": ""
}

Get Server Backup Status

Retrieve status of current/last backup for a server.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success",
  • "message": ""
}

Restore Server Backup

Restore a backup file for a server.

Authorizations:
bearerAuth
path Parameters
server_id
required
integer
Request Body schema: application/json
required
file
required
string

Filename of the backup to restore (.zip)

Responses

Request samples

Content type
application/json
{
  • "file": "world123.zip"
}

Response samples

Content type
application/json
{
  • "data": { },
  • "status": "success",
  • "message": ""
}

FTP Users

List FTP Users

Retrieve all FTP users associated with your reseller account.

Returned objects include:

  • id: Unique FTP user identifier.
  • username: FTP base username.
  • servers: Array of server IDs the FTP user has access to.
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "status": "success",
  • "message": ""
}

Create FTP User

Create a new FTP user associated with your reseller account.

Required body fields:

  • username: Desired FTP base username (must be unique).
  • password: Password for the FTP user (minimum 8 characters).

Response returns the new FTP user id, and the final base username including the per-reseller prefix.

Authorizations:
bearerAuth
Request Body schema: application/json
required
username
required
string

Desired FTP base username (must be unique)

password
required
string

Password for the FTP user (minimum 8 characters)

Responses

Request samples

Content type
application/json
{
  • "username": "ftpuser123",
  • "password": "securePassword!"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success",
  • "message": "FTP user created successfully."
}

Get FTP User

Fetch details for a specific FTP user by ID.

  • id: Unique FTP user identifier.
  • username: FTP base username.
  • servers: Array of server IDs the FTP user has access to.
Authorizations:
bearerAuth
path Parameters
ftp_user_id
required
integer

Unique FTP user identifier

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success",
  • "message": ""
}

Update FTP User

Apply partial updates (JSON Merge Patch) to mutable FTP user attributes.

Updatable fields:

  • username: Change the FTP user's base username.
  • password: Change the FTP user's password.

Notes:

  • Fields omitted from the payload are not altered.
Authorizations:
bearerAuth
path Parameters
ftp_user_id
required
integer
Example: 789

Unique FTP user identifier

Request Body schema: application/merge-patch+json
required
username
string

New base username for the FTP user

password
string

New password for the FTP user (minimum 8 characters)

Responses

Request samples

Content type
application/merge-patch+json
{
  • "username": "newftpuser",
  • "password": "newSecurePassword!"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success",
  • "message": "FTP user updated successfully."
}

Delete FTP User

Permanently remove an FTP user.

Irreversible: ensure no servers require this FTP user before deletion.

Authorizations:
bearerAuth
path Parameters
ftp_user_id
required
integer
Example: 789

Unique FTP user identifier

Responses

Response samples

Content type
application/json
{
  • "data": { },
  • "status": "success",
  • "message": "FTP user deleted successfully."
}

Users

Create User

Create a new end user by email (idempotent).

Behavior:

  • If the email is new: a user record and login token are created.
  • If the email exists: the existing user is returned with an existing flag.

Body fields:

  • email: Unique email address (must be valid format).

Safe to call repeatedly with the same email without creating duplicates.

Authorizations:
bearerAuth
Request Body schema: application/json
required
email
required
string <email>

Unique user email address

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
Example
{
  • "data": {
    },
  • "status": "success",
  • "message": "New user created."
}