Boundlexx is an API that provides all kinds of information related to Boundless. I am a backend software engineer professionally and my goal with the project is to do what I do best to provide all of the information the community needs to do what they do best and build the awesome tools they do.
If there is data missing from the API you need or the data that is available does not quite meet your requirements, let’s talk so I can try to meet your needs! If it is in the wrong format, it is too hard to get everything you need quickly, or you just need help figuring something out. Just DM me here on the forums or on Discord (Angellus Mortis#1769
).
Special thanks to @Mayumichi, @Simoyd, and @Gorillastomp for helping me figure out all of the related data bits to get this all up and running. Also, thanks to @DreamEvil for setting up the Discord Webhook notifications on the official TNT Discord server and ironing out the kinks in it as well.
URL for Testing Universe: https://testing.boundlexx.app/
URL for Live Universe: https://api.boundlexx.app/
Source Code
Issue Tracking
To make issue tracking easier, everything is under the Boundlexx UI for creating or tracking the progress of an feature/issue.
Boundlexx API (backend) specific issues:
Current features
Overview:
To get started using the API, checkout the API docs and the individually endpoints for the browsable API. All of the possible searches, filters and related URLs are directly in the API for easy discovery.
- Rich API docs and API schema generation (OpenAPI 3 schema + ReDoc API Renderer): Boundlexx API v1.
- Full browsable API for all endpoints. Just go to an endpoint and check everything out.
- Full Localization support for in game objects (localization data pulled directly from the game, so it is the same localization as the game)
- A color API: Color List – Django REST framework
- Color API has a list of all colors and their color ID, including their real RGB HEX values
- Get all known for a given color
- An item API: https://api.boundlexx.app/api/v1/items/?format=api
- Includes game ID, string ID
- Resource counts for the item on known worlds (if the item is a “resource”)
- Get all known colors for a given block/item
- Get current buy/sell prices of items
- Get mint value of items
- A world API: https://api.boundlexx.app/api/v1/worlds/?format=api
- List of all of the known (worlds the user that is doing the polling has access to + active)
- All of the data for the world from the game API including name, region, tier, size, atmosphere and water colors
- A preview image of the world and forum post URL for the world if it is available.
- Full support for Sovereign/Creative worlds from the 245/246 updates
- World Poll data including counts of resources, leader board, total prestige, plots, beacons, etc. for each world
- Get all known block colors for a given world
- Get the distance (in Blinksecs) between any two given worlds as well as the warp cost and details for making a portal
- Ability for players (mostly designed for Exoworld explorers like @Gorillastomp) to be able to upload color data
- Get current buy/sell prices of items on given world
- APIs for Skills, Skill Groups (so you can construct a full skill tree) and Emojis
- “Full text fuzzy search” - I am using the Postgres trigram and btree_gin so for just about all of the endpoints, you can just do
?search=query
and get results related to what you are likely looking for. - Stats for timeseries data (more below)
- A notification system that allows users to subscribe to specific events (more below)
Timeseries/Statistics Data:
Everyone love stats! Well, I have a boatload of them for you. Unfortunately I am starting see holes in the auto-generated API docs, so at the moment the API docs do not cover everything you can do with them. So here is a in quick crash course.
For the timeseries data I have, there are three endpoints to retrieve the data related to the data easily:
/latest/
- easy shortcut to get the latest result in the timeseries if you do not care about any of the historical data./
- a listing of all of the items in the timeseries, paged to 50 results at a time./stats/
- a list of varies stats data for the timeseries
For /
and /stats/
you can provide filters to specify the window you want to pull results for. The format for both of these are YYYY-MM-DD
or YYYY-MM-DD HH:MM
. These are based on your local timezone and will automatically be converted properly on the backend so no worries there! The actual filters are
time_after
- will only give results after the given time. For example,time_after=2020-08-02
will only give results after August 8th, 2020.time_before
- will only give results before the given time. For example,time_before=2020-08-05 04:00
will only give results before 4 AM, August 5th, 2020
time_after
and time_before
can be combined to select a very specific datetime range you want timeseries data on.
/stats/
also has another specials filter you can provide to split all of the results into “buckets” and give stats on each bucket. The format for the filter is a “human readable time interval”. So bucket=4 hours
will take your results and split them into even buckets of 4 hours each and then run all of the stats on each bucket and give you the results for each one.
If there are any additional stats you would like added to /stats/
, let me know! As a note for implementation, I am using a Timeseries PostgreSQL database for all of the timeseries data, so ideally there should be a PostgreSQL function to calculate the value of whatever stat you want.
Current Timeseries Endpoints:
- Boundlexx - The Boundless Lexicon
- Where
[world_id]
is the ID of the world you want - Can be used to retrieve current player counts, beacon counts, plot counts, and total world prestige counts.
- Where
- Boundlexx - The Boundless Lexicon
- Where
[item_id]
is the ID of the item you want and[world_id]
is the ID of the world you want - Can be used to retrieve resource counts for an item on a given world
- Where
Discord Notifications
Split out to separate forum post
Uploading Color Data:
Anyone can upload “planet json” files if they want. For security purposes, I do have the endpoint protected by an Auth Token (the Internet is a dangerous place), so just DM me to snag yourself one.
Ideally I would love to be fully automated, but right now you have to retrieve the planet JSON file yourself. I cannot help you get the JSON file, but check out @Simoyd’s Price Harvester.
Once you get your auth token and your Planet JSON file, you can us this Python script to upload it:
upload_planets_json.py · GitHub
Dashboards
I have a Metabase instance set up and running on top of the data. If there are any dashboard/graphs you would love to see put together for Boundless data, just shoot me a DM and I can get something set up for you.
Current Dashboards:
- In-game Player Counts over the last week: https://metabase.boundlexx.app/public/dashboard/6778635e-73fc-4b10-9e11-d0a5880f5161
- Resource Counts over the last week: https://metabase.boundlexx.app/public/dashboard/b94da751-80fe-41d2-86b2-d0828feee7f3
- Sovereign Worlds: https://metabase.boundlexx.app/public/dashboard/b72a807b-2ddd-4809-91df-cfd4745e9a98
Planned Features
- Shop prices for items for live Universe! This is already implemented for Testing Universe, I just need to get an API key going for the Live Universe.
- More stats views for shop pirices!
- Improved API docs. The auto-generated docs are starting to show some holes with the more complicated endpoints (like the timeseries related ones). I need to go in and clean them up and make the docs more accurate for how the endpoints work.
- A Discord bot that can query the data and also trigger notifications (see next feature)
- A notification system built on top of the Discord bot
- The notification system will be able allow users to configure what types of events that want to be notified for (or server owners to configure what types of events channels can be notified for).
- Types of notifications would include (just some initial ideas):
- a discovery of a new world (Sovereign, Creative, Exo, or even a new perm world)
- a Shop Stand/Request Basket for a specific price range/item/count
Supporting Boundlexx
I have had a few people say “if you need anything in game, let me know” or “if there is anything I can do to help out, let me know”. While I am not asking anything from anyone for Boundlexx some people really enjoy showing their appreciation. I will not be accepting any real world money donations, but if you really so inclined to donate, you are more than welcome to donate resources (I always love me some nice mining AoE hammers!) or coin in-game. DM me on here or Discord (Angellus Mortis#1769
) to meet up with me in-game.
If you would like to remain anonymous, that is totally cool as well. For those people, I have setup a shop stand at my shop at DK Mall (location: X1). Feel free to “buy” my horribly overpriced rock.