This repository contains the official API which can be used to create a client for the browsergame ugamela. The official API can be found at https://api.ugamela.org/v1/
This open-source project is still in an alpha-state, please do not use this in an production-environment. Currently, not many features are available and this game is not fully playable. Feel free to contribute by making a pull-request.
-
Clone the repository
-
Install all required packages
npm install
- Run the gulp-task to compile all typescript files and copy assets
npm run build
- Run the api
npm start
- Or start the server in watch-mode, recompiling and restarting on changes
npm run watch
/v1/auth/login
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
The email of the user | Yes | |
password | The password of the user | Yes |
Returns: a JWT-Token for authentications.
Example:
{
"token": "JWT-TOKEN"
}
/v1/config/game
Request-Type: GET
Parameters: none
Returns: The current game-config
Example:
{
"speed": 1,
"metalStart": 500,
"crystalStart": 500,
"deuteriumStart": 500,
"startPlanetName": "Homeplanet",
"startPlanetDiameter": 150000,
"startPlanetMaxFields": 138,
"posGalaxyMax": 9,
"posSystemMax": 100,
"posPlanetMax": 15
}
/v1/config/units
Request-Type: GET
Parameters: none
Returns: The config for all ingame-units
Example:
{
"units": {
"buildings": { ... },
"ships": { ... },
"defenses": { ... },
"technologies": { ... }
}
"requirements": { ... },
"mappings": { ... }
}
/v1/planets/{planetID}
Request-Type: GET
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the planet | Yes |
Returns: Available information about the planet
Example:
{
"planetID": 333,
"ownerID": 76487,
"name": "Homeplanet",
"posGalaxy": 1,
"posSystem": 16,
"posPlanet": 11,
"lastUpdate": 1521056629,
"planetType": 1,
"image": "trockenplanet08",
"destroyed": 0
}
/v1/user/planet/{planetID}
Request-Type: GET
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the planet | Yes |
Returns: Available information about the planet
Example:
{
"planetID": 60881,
"ownerID": 1,
"name": "test123",
"posGalaxy": 1,
"posSystem": 4,
"posPlanet": 3,
"lastUpdate": 1521057636,
"planetType": 1,
"image": "trockenplanet08",
"diameter": 11188,
"fieldsCurrent": 0,
"fieldsMax": 125,
.
.
.
}
/v1/user/planetlist
Request-Type: GET
Parameters: none
Returns: A list of all planets owned by the current player
Example:
[
{
"planetID": 60881,
"ownerID": 1,
"name": "Homeplanet",
.
.
.
},
{
"planetID": 167546850,
"ownerID": 1,
"name": "Planet",
.
.
.
}
]
/v1/user/currentplanet/set
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the new current planet | Yes |
Returns: Success or Error as HTTP status code
/v1/planet/destroy
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the new current planet | Yes |
Returns: Success or Error as HTTP status code
/v1/planet/rename
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the new current planet | Yes |
name | The new name for the planet | Yes |
Returns: Success or Error as HTTP status code
/v1/user
Request-Type: GET
Parameters: none
Returns: The current user
Example:
{
"userID": 1,
"username": "admin",
"email": "[email protected]",
"lastTimeOnline": "1548524754",
"currentPlanet": 167546850
}
/v1/users/{userID}
Request-Type: GET
Parameters:
Parameter | Description | Required |
---|---|---|
userID | The ID of the user | Yes |
Returns: The current user
Example:
{
"userID": 1,
"username": "xxx"
}
/v1/users/create
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
username | The username for the new user | Yes |
The email for the new user | Yes | |
password | The password for the new user | Yes |
Returns: Success or Error as HTTP status code
/v1/users/update
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
username | The username for the new user | No |
The email for the new user | No | |
password | The password for the new user | No |
Returns: Success or Error as HTTP status code
/v1/buildings/{planetID}
Request-Type: GET
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the planet | Yes |
Returns: A list of all buildings on the given planet.
Example:
{
"ownerID": 1,
"planetID": 60881,
"metalMine": 1,
"crystalMine": 1,
"deuteriumSynthesizer": 4,
"solarPlant": 1,
"fusionReactor": 0,
"roboticFactory": 3,
"naniteFactory": 0,
"shipyard": 8,
"metalStorage": 2,
"crystalStorage": 3,
"deuteriumStorage": 2,
"researchLab": 1,
"terraformer": 0,
"allianceDepot": 0,
"missileSilo": 0
}
/v1/buildings/build
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the planet | Yes |
buildingID | The ID of the building | Yes |
Returns: The updated planet.
Example:
{
"planetID": 60881,
"ownerID": 1,
"name": "Sampleplanet",
"posGalaxy": 1,
"posSystem": 4,
"posPlanet": 3,
.
.
.
}
/v1/buildings/cancel
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the planet | Yes |
buildingID | The ID of the building | Yes |
Returns: The updated planet.
Example:
{
"planetID": 60881,
"ownerID": 1,
"name": "Sampleplanet",
"posGalaxy": 1,
"posSystem": 4,
"posPlanet": 3,
.
.
.
}
/v1/ships/{planetID}
Request-Type: GET
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the planet | Yes |
Returns: A list of all ships on the given planet.
Example:
{
"ownerID": 1,
"planetID": 60881,
"smallCargoShip": 0,
"largeCargoShip": 0,
"lightFighter": 0,
"heavyFighter": 0,
"cruiser": 0,
"battleship": 0,
"colonyShip": 0,
"recycler": 0,
"espionageProbe": 0,
"bomber": 0,
"solarSatellite": 0,
"destroyer": 0,
"battlecruiser": 0,
"deathstar": 0
}
/v1/ships/build
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the planet | Yes |
buildOrder | A JSON-string with key-value pairs. {unitID: amount, ...} | Yes |
Returns: Success or Error as HTTP status code
/v1/defenses/{planetID}
Request-Type: GET
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the planet | Yes |
Returns: A list of all defenses on the given planet.
Example:
{
"ownerID": 1,
"planetID": 60881,
"rocketLauncher": 0,
"lightLaser": 0,
"heavyLaser": 0,
"ionCannon": 0,
"gaussCannon": 0,
"plasmaTurret": 0,
"smallShieldDome": 0,
"largeShieldDome": 0,
"antiBallisticMissile": 0,
"interplanetaryMissile": 0
}
/v1/defenses/build
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the planet | Yes |
buildOrder | A JSON-string with key-value pairs. {unitID: amount, ...} | Yes |
Returns: Success or Error as HTTP status code
/v1/techs
Request-Type: GET
Parameters: none
Returns: A list of all technologies the player has.
Example:
{
"userID": 1,
"espionageTech": 0,
"computerTech": 0,
"weaponTech": 0,
"armourTech": 0,
"shieldingTech": 0,
"energyTech": 0,
"hyperspaceTech": 0,
"combustionDriveTech": 0,
"impulseDriveTech": 0,
"hyperspaceDriveTech": 0,
"laserTech": 0,
"ionTech": 0,
"plasmaTech": 0,
"intergalacticResearchTech": 0,
"gravitonTech": 0
}
/v1/techs/build
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the planet | Yes |
techID | The ID of the technology | Yes |
Returns: Success or Error as HTTP status code
/v1/techs/cancel
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the planet | Yes |
Returns: Success or Error as HTTP status code
/v1/galaxy/{posGalaxy}/{posSystem}
Request-Type: GET
Parameters:
Parameter | Description | Required |
---|---|---|
posGalaxy | The galaxy-position | Yes |
posSystem | The system-position | Yes |
Returns: Information about the galaxy
Example:
[
{
"planetID": 1476777762,
"ownerID": 751782555,
"username": "Testuser",
"name": "Homeplanet",
"posGalaxy": 4,
"posSystem": 88,
"posPlanet": 6,
"lastUpdate": 1558452853,
"planetType": 1,
"image": "normal3.png",
"debrisMetal": 0,
"debrisCrystal": 0,
"destroyed": 0
},
{
.
.
.
},
.
.
.
]
/v1/messages/get
Request-Type: GET
Parameters: none
Returns: A list of all messages sent to the current user
Example:
[
{
"messageID": 6,
"senderID": 1,
"receiverID": 1,
"sendtime": 1558030571,
"type": 1,
"subject": "test1",
"body": "test1"
},
{
"messageID": 5,
"senderID": 1,
"receiverID": 1,
"sendtime": 1558030570,
"type": 1,
"subject": "test2",
"body": "test2"
}
]
/v1/messages/get/{messageID}
Request-Type: GET
Parameters:
Parameter | Description | Required |
---|---|---|
messageID | The ID of the message | Yes |
Returns: The message
Example:
{
"messageID": 5,
"senderID": 1,
"receiverID": 1,
"sendtime": 1558030570,
"type": 1,
"subject": "test",
"body": "test"
}
/v1/messages/send
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
receiverID | The ID of the receiver | Yes |
subject | The subject of the message | Yes |
body | The body of the message | Yes |
Returns: Success or Error as HTTP status code
/v1/messages/delete
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
messageID | The ID of the message | Yes |
Returns: Success or Error as HTTP status code
/v1/events/create/
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
event | The event-data as a JSON object | Yes |
Schema: https://api.ugamela.org/fleetevent.schema.json
Returns: The data of the created event
Example:
{
"eventID": 15,
"ownerID": 1,
"mission": "attack",
"speed": 30,
"data": {
"origin": {
"posGalaxy": 1,
"posSystem": 4,
"posPlanet": 3,
"type": "planet"
},
"destination": {
"posGalaxy": 9,
"posSystem": 84,
"posPlanet": 14,
"type": "planet"
},
"ships": {
"201": 612,
"202": 357,
"203": 617,
"204": 800,
"205": 709,
"206": 204,
"207": 703,
"208": 85,
"209": 631,
"210": 388,
"211": 0,
"212": 723,
"213": 557,
"214": 106
},
"loadedRessources": {
"metal": 443,
"crystal": 980,
"deuterium": 220
}
},
"starttime": 1558456480,
"endtime": 1558470153
}
/v1/events/cancel/
Request-Type: POST
Parameters:
Parameter | Description | Required |
---|---|---|
eventID | The ID of the event | Yes |
Returns: Success or Error as HTTP status code
/v1/planets/movement/{planetID}
Request-Type: GET
Parameters:
Parameter | Description | Required |
---|---|---|
planetID | The ID of the planet | Yes |
Returns: A list of events happening on the given planet
Example:
[
{
"eventID": 1,
"ownerID": 1,
"mission": 2,
"fleetlist": "{\"201\":612,\"202\":357,\"203\":617,\"204\":800,\"205\":709,\"206\":204,\"207\":703,\"208\":85,\"209\":631,\"210\":388,\"211\":0,\"212\":723,\"213\":557,\"214\":106}",
"startID": 60881,
"startType": 1,
"startTime": 1558449681,
"endID": 18341,
"endType": 1,
"endTime": 1558450681,
"loadedMetal": 443,
"loadedCrystal": 980,
"loadedDeuterium": 220,
"returning": 0
},
{
"eventID": 1,
"ownerID": 1,
.
.
.
}
]
For any further questions, support or general talk, please visit our Discord by clicking on the image below or follow the link.