Category: webapp
Entity: Guild
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/guild/this |
Get the host/infrastructure guild for this deployment | No (public) |
| GET | /api/guild/name |
Get guild name | Yes |
| GET | /api/guild/{guild_id}/name |
Get guild name by ID | Yes |
| GET | /api/guild/{guild_id}/members/count |
Get guild member count | Yes |
| GET | /api/guild/count |
Get total guild count | Yes |
| GET | /api/guild/directory |
Get guild directory | Yes |
| GET | /api/guild/{guild_id} |
Get guild by ID | Yes |
| GET | /api/guild/{guild_id}/power/stats |
Get guild power statistics | Yes |
| GET | /api/guild/{guild_id}/roster |
Get guild roster | Yes |
| GET | /api/guild/{guild_id}/planet/complete/count |
Get completed planet count for guild | Yes |
| GET | /api/guild/list/all/page/{page} |
Catalog list of every guild | Yes |
| GET | /api/guild/list/primary-reactor/{primary_reactor_id}/page/{page} |
List guilds by primary reactor | Yes |
| GET | /api/guild/list/entry-substation/{entry_substation_id}/page/{page} |
List guilds by entry substation | Yes |
| GET | /api/guild/list/owner/{owner}/page/{page} |
List guilds by owning player | Yes |
Guild membership applications live in guild-membership-application.md.
/api/guild/thisReturn the host / infrastructure guild for this webapp deployment — the guild where guild_meta.this_infrastructure = TRUE (GuildManager::getThisGuild, joins guild + reactor + guild_meta, LIMIT 1). This is not the logged-in player’s guild and it does not read the session.
Use it pre-login to discover which guild a given webapp instance serves. The operator’s own guild comes from the login context (session.guild_id, set at login) or from the player record — not from this endpoint.
webapp-guild-thisResponse (envelope; data is the single host-guild row, guild IDs are type 0):
{
"success": true,
"errors": {},
"data": { "id": "0-1", "name": "GuildName" }
}
/api/guild/nameGet guild name.
webapp-guild-name/api/guild/{guild_id}/nameGet guild name by ID.
webapp-guild-by-id-name| Name | Type | Required | Format | Description |
|---|---|---|---|---|
guild_id |
string | Yes | guild-id | Guild identifier |
/api/guild/{guild_id}/members/countGet guild member count.
webapp-guild-members-count| Name | Type | Required | Format | Description |
|---|---|---|---|---|
guild_id |
string | Yes | guild-id | Guild identifier |
/api/guild/countGet total guild count.
webapp-guild-countschemas/responses.md#CountResponseapplication/jsonRequest: GET http://localhost:8080/api/guild/count
Response (envelope):
{
"success": true,
"errors": {},
"data": { "count": 42 }
}
/api/guild/directoryGet guild directory.
webapp-guild-directory/api/guild/{guild_id}Get guild by ID.
webapp-guild-by-idschemas/entities.md#Guildapplication/json| Name | Type | Required | Format | Description |
|---|---|---|---|---|
guild_id |
string | Yes | guild-id | Guild identifier |
Request: GET http://localhost:8080/api/guild/0-1 (guild IDs are type 0, ^0-[0-9]+$)
Response (envelope; bespoke data carries the SQL columns from GuildManager):
{
"success": true,
"errors": {},
"data": {
"id": "0-1",
"name": "GuildName",
"member_count": 10
}
}
/api/guild/{guild_id}/power/statsGet guild power statistics.
webapp-guild-power-stats| Name | Type | Required | Format | Description |
|---|---|---|---|---|
guild_id |
string | Yes | guild-id | Guild identifier |
/api/guild/{guild_id}/rosterGet guild roster.
webapp-guild-roster| Name | Type | Required | Format | Description |
|---|---|---|---|---|
guild_id |
string | Yes | guild-id | Guild identifier |
/api/guild/{guild_id}/planet/complete/countGet completed planet count for guild.
webapp-guild-planet-complete-count| Name | Type | Required | Format | Description |
|---|---|---|---|---|
guild_id |
string | Yes | guild-id | Guild identifier |
/api/guild/list/all/page/{page}Catalog list of every guild on the chain, paginated.
webapp-guild-list-all| Name | Type | Required | Format | Description |
|---|---|---|---|---|
page |
integer | Yes | \d+ |
Page number, 1-indexed |
/api/guild/list/primary-reactor/{primary_reactor_id}/page/{page}List guilds whose primary reactor matches the given reactor.
webapp-guild-list-by-primary-reactor| Name | Type | Required | Format | Description |
|---|---|---|---|---|
primary_reactor_id |
string | Yes | reactor-id | Reactor identifier (e.g. 3-1) |
page |
integer | Yes | \d+ |
Page number |
/api/guild/list/entry-substation/{entry_substation_id}/page/{page}List guilds that route new members through the given entry substation.
webapp-guild-list-by-entry-substation| Name | Type | Required | Format | Description |
|---|---|---|---|---|
entry_substation_id |
string | Yes | substation-id | Substation identifier (e.g. 4-1) |
page |
integer | Yes | \d+ |
Page number |
/api/guild/list/owner/{owner}/page/{page}List guilds by owning player.
webapp-guild-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 |
The /api/guild/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 guild endpoints also use the { "success", "errors", "data" } envelope. All guild routes require a session except /api/guild/this (public). See protocols/webapp-api-protocol.md.
There is no HTTP endpoint to read a guild’s bank/token balance.
MsgGuildBankMint/MsgGuildBankRedeemare chain transactions; read balances via chain queries (bank module) or the ledger, not the webapp.