dailyplayerstats | ||
dailytribestats | ||
ennoblement | ||
graphql | ||
liveennoblement | ||
middleware | ||
player | ||
playerhistory | ||
server | ||
servermap | ||
serverstats | ||
tribe | ||
tribechange | ||
tribehistory | ||
utils | ||
version | ||
village | ||
.gitignore | ||
dev.sh | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
gqlgen_generate.sh | ||
LICENSE | ||
main.go | ||
README.md |
TWHelp API
A GraphQL API for Tribal Wars data. All versions are available.
API Limits
You can fetch in one HTTP request:
- 1000 daily player/tribe stats
- 100 ennoblements
- 100 versions
- 100 players/tribes
- 1000 villages
- 100 player/tribe history records
- 100 servers
- 60 server stats
- 100 tribe changes
Sample queries
You can check how to make requests from JavaScript here.
- All barbarian villages with 10% more population
query {
villages(server: "en115", filter: { playerID: [0], bonus: 4 }) {
total
items {
id
name
x
y
points
}
}
}
- Top 30 players without a tribe, ordered by points.
query {
players(
server: "pl148"
filter: { tribeID: [0], sort: "points DESC", limit: 30 }
) {
total
items {
id
name
rank
points
totalVillages
rankAtt
rankDef
rankTotal
rankSup
}
}
}
- Search a player by a nickname fragment.
query {
players(server: "pl148", filter: { nameIEQ: "%pablo%" }) {
total
items {
id
name
}
}
}
Map service
You can generate a server map with this API. The current endpoint is http(s)://youraddress/map/server (replace "server" with the server you're interested in, for example, pl151).
Available query params:
Param | Default |
---|---|
showBarbarians | false |
largerMarkers | false |
markersOnly | false |
centerX | 500 |
centerY | 500 |
scale | 1 (max 5) |
showGrid | false |
showContinentNumbers | false |
backgroundColor | #000 |
gridLineColor | #fff |
continentNumberColor | #fff |
tribe(this param you can define multiple times) | format tribeid,hexcolor (for example, tribe=631,#0000ff) |
player(this param you can define multiple times) | format playerid,hexcolor (for example, player=631,#0000ff) |
Example
Development
Required env variables to run this API:
DB_USER=your_pgdb_user
DB_NAME=your_pgdb_name
DB_PORT=your_pgdb_port
DB_HOST=your_pgdb_host
DB_PASSWORD=your_pgdb_password
REDIS_HOST=your_redis_host
REDIS_PORT=your_redis_port
LIMIT_WHITELIST=127.0.0.1,::1
LOG_DB_QUERIES=[true|false]
Prerequisites
- Golang
- PostgreSQL database
- Configured cron
Installing
- Clone this repo.
- Navigate to the directory where you have cloned this repo.
- Set the required env variables directly in your system or create .env.development file.
- go run main.go