Category: webapp
Entity: Planet
Base URL: ${webappBaseUrl} (default: http://localhost:8080, public guild webapp: http://crew.oh.energy)
Last Updated: May 13, 2026
| Method | Path | Description | Auth Required |
|---|---|---|---|
| GET | /api/planet/{planet_id} |
Get planet information from web application | Yes |
| GET | /api/planet/{planet_id}/shield/health |
Get planet shield health | Yes |
| GET | /api/planet/{planet_id}/shield |
Get planet shield information | Yes |
| GET | /api/planet/{planet_id}/raid/active |
Get active raid for planet | Yes |
| GET | /api/planet/raid/active/fleet/{fleet_id} |
Get active raid for fleet | Yes |
| GET | /api/planet/list/all/page/{page} |
Catalog list of all planets, paginated | Yes |
| GET | /api/planet/list/owner/{owner}/page/{page} |
Catalog list of planets owned by a player | Yes |
Planet activity (planet_activity, including struct_health rows) and per-planet attribute reads live in planet-activity.md and planet-attribute.md.
/api/planet/{planet_id}Get planet information from web application.
webapp-planet-by-idschemas/entities.md#Planetapplication/json| Name | Type | Required | Format | Description |
|---|---|---|---|---|
planet_id |
string | Yes | planet-id | Planet identifier |
Request: GET http://localhost:8080/api/planet/3-1
Response — envelope; data is a single planet row with the PlanetManager::getPlanet SQL columns (snake_case), or null:
{
"success": true,
"errors": {},
"data": {
"id": "2-1",
"owner": "1-11",
"map": "...",
"name": "PlanetName",
"space_slots": 4,
"air_slots": 2,
"land_slots": 3,
"water_slots": 1,
"undiscovered_ore": 5
}
}
/api/planet/{planet_id}/shield/healthGet planet shield health.
webapp-planet-shield-healthschemas/responses.md#ShieldHealthResponseapplication/json| Name | Type | Required | Format | Description |
|---|---|---|---|---|
planet_id |
string | Yes | planet-id | Planet identifier |
Request: GET http://localhost:8080/api/planet/2-1/shield/health (planet IDs are type 2, ^2-[0-9]+$)
Response (envelope):
{
"success": true,
"errors": {},
"data": {
"planet_id": "2-1",
"health": 1000,
"max_health": 1000
}
}
/api/planet/{planet_id}/shieldGet planet shield information.
webapp-planet-shield| Name | Type | Required | Format | Description |
|---|---|---|---|---|
planet_id |
string | Yes | planet-id | Planet identifier |
/api/planet/{planet_id}/raid/activeGet active raid for planet.
webapp-planet-raid-active| Name | Type | Required | Format | Description |
|---|---|---|---|---|
planet_id |
string | Yes | planet-id | Planet identifier |
/api/planet/raid/active/fleet/{fleet_id}Get active raid for fleet.
webapp-planet-raid-active-fleet| Name | Type | Required | Format | Description |
|---|---|---|---|---|
fleet_id |
string | Yes | fleet-id | Fleet identifier |
/api/planet/list/all/page/{page}Catalog list of every planet on the chain, paginated.
webapp-planet-list-all| Name | Type | Required | Format | Description |
|---|---|---|---|---|
page |
integer | Yes | \d+ |
Page number, 1-indexed |
/api/planet/list/owner/{owner}/page/{page}Catalog list of planets owned by a player.
webapp-planet-list-by-owner| Name | Type | Required | Format | Description |
|---|---|---|---|---|
owner |
string | Yes | player-id | Owning player identifier (e.g. 1-11) |
page |
integer | Yes | \d+ |
Page number |
Raid responses include the attackerRetreated status, wrapped in the standard envelope:
{
"success": true,
"errors": {},
"data": {
"raid": {
"id": "...",
"status": "attackerRetreated",
"outcome": "attackerRetreated"
}
}
}
The /api/planet/list/... endpoints return the shared envelope with rows directly in data as a flat array (fixed page size 100 — if data.length === 100, fetch the next page). Bespoke planet endpoints also use the { "success", "errors", "data" } envelope. See protocols/webapp-api-protocol.md.