Releases: hellhub-collective/api
v3.0.0
What's Changed
Support incoming Helldivers! This major release will hold up against the toughest of enemies. Our v3.0.0 comes with a barrage of improvements and fixes.
Overhauled docker build process 🐳
We modified the dockerfile to not only be much more readable but also to speed up build times by almost 50%. We moved the database location to the project root so we can create database files as needed.
Fortified data refreshing ⏬
In an effort to make the data refreshing mechanism more reliable we refractored it to be a single transaction instead of many independent queries, this not only speeds up the process by about 200ms
but also ensures that all data is available and intact when saved to the database.
SQLite based middleware 🐦
The rate limiting and request caching mechanisms now use SQLite as their storage strategy. This change was made in an effort to reduce the memory consumption. The main database as well as the new cache.db
database files are located in the new database
folder inside the project' root.
Reliable dates are a thing 📅
About time! With the help of the amazing Helldivers 2 Community we have figured out how to parse dates produced by the Arrowhead Game API and now provide accurate dates for Reports
, Orders
and every other content-type that has an in-game date.
- fix: manually run garbage collector after cron job by @fabio-nettis in #52
- chore(deps): bump dependencies to latest versions by @fabio-nettis in #53
- feat: add assignment tasks by @fabio-nettis in #55
- fix: resolve issues with docker deployment process by @fabio-nettis in #56
- fix: possible fix for deployment issues by @fabio-nettis in #57
- chore(release): prepare source code for version 3.0.0 by @fabio-nettis in #58
Full Changelog: v2.8.0...v3.0.0
v2.8.0
What's Changed
This release introduces the imageUrl
field on the Planet
model that contains the texture for the planet surface.
- refractor: update readme file with postman badge by @fabio-nettis in #49
- feat: add planet texture images in webp format by @fabio-nettis in #50
Full Changelog: v2.7.0...v2.8.0
v2.7.0
What's Changed
This release introduces endpoints that alllow you to track the internal cron jobs, like the one that fetches the source data from Arrowhead's API. We have added two new routes for your convinience:
/api/crons
: List all cron jobs/api/crons/:name
: Get a cron by name
This allows you to better fine tune your periodic requests to the API and prevent hitting request limits by eliminating the need for aimless overfetching.
Object structure
{
"name": "refresh_from_source",
"pattern": "0 */1 * * * *",
"status": "ok",
"busy": false,
"runs": {
"current": 1713426181556,
"previous": 1713426180002,
"next": 1713426240000
}
}
Object mapping
As you can see, we added properties for the next, current and previous runs. You can use the name
property to access a single cron job via the designated endpoint. Here is a overview of what each property means:
Property | Type | Description |
---|---|---|
name | string |
Name of the cron job |
pattern | string |
Pattern of the cron job |
status | string |
Determines if the cron job is healthy |
busy | boolean |
Determines if the cron job is currently executing |
runs.current | number |
Current run date in ms |
runs.previous | number |
Previous run date in ms |
runs.next | number |
Next run date in ms |
- feat: implement cron job oberservation routes by @fabio-nettis in #48
Full Changelog: v2.6.0...v2.7.0
v2.6.0
What's Changed
In this release we have addad error monitoring and performance tracing, powered by Sentry.
Enable Sentry for self hosted API's 👁️
By default none of the sentry features are enabled and the API should work the same as before for anyone who doesn't want sentry to collect error data.
-
Error monitoring: To enable error monitoring you need to provide a
SENTRY_DSN
environment variable, by default senty will only run in production environments. -
Performance tracing: To enable performance tracing you will need to pass a build argument to your docker container by the name of
SOURCE_MAP_TOKEN
, this will be your sentry auth token. Preferably you only ever pass this build argument to the deployment container using:docker build --build-arg="SOURCE_MAP_TOKEN=xxxxxx"
- feat: implement sentry for production builds by @fabio-nettis in #41
- fix: resolve dockerfile issues by @fabio-nettis in #42
- fix: install ca-certificates package to fix SSL issues by @fabio-nettis in #43
- fix: remove typo from dockerfile definition by @fabio-nettis in #44
- feat: implement sentry middleware by @fabio-nettis in #45
- feat: add sentry performance tracing by @fabio-nettis in #46
- refractor: decrease sentry trace sample rate by @fabio-nettis in #47
Full Changelog: v2.5.0...v2.6.0
v2.5.0
What's Changed
We are proud to announce our biggest release yet! Much has changed, been optimized and added to the API for your convenience, check out what we have been working on:
Memory issues 📈
Addressed some memory issues by poorly written new PrismaClient()
usage. Deployments should now stop leaking memory after left running for a week or more.
Liberation fields 🦅
The Planet
model now contains information about the current liberation progress. Following fields were added in particular:
liberation
: The percentage of the planet currently liberated.liberationRate
: The liberation rate in percent per hour.liberationState
: One of the following:WINNING
,DRAW
,LOSING
,N/A
New endpoints 🚀
Two new models have been added to the API, both come with their respective fields on the Planet
model as well as their own endpoints:
Biomes
/api/effects
: Get a list of all environmental effects./api/effects/:id
: Get a environmental effect by id./api/effects/:id/planets
: Get the planets matching a specific environmental effect.
Environmental Effects
/api/biomes
: Get a list of all biomes./api/biomes/:id
: Get a biome by id./api/biomes/:id/planets
: Get the planets matching a specific biome.
The interactive postman collection has already been updated.
- fix: ensure newest report data is available and properly sorted by @fabio-nettis in #37
- feat: add liberation fields by @fabio-nettis in #38
- fix: address deployment memory issues by @fabio-nettis in #39
- feat: add planet biomes and environmental effects by @fabio-nettis in #40
Full Changelog: v2.4.0...v2.5.0
v2.4.0
What's Changed
This release adds request logging to the the API! Following format is used for incoming requests:
We also optimized the way that the cron polling message is displayed, so you can better spot the polling mechanism in your console logs.
- feat: add logging middleware by @fabio-nettis in #36
Full Changelog: v2.3.1...v2.4.0
v2.3.1
What's Changed
In an effort to reduce the memory usage of the API we made some changes to the way we handle rate limiting and request caching. We switched out memory-cache for node-cache and did some refractoring.
- fix: provide fallback value for
message
property by @fabio-nettis in #32 - refractor: move liberty ridge to meridian sector by @mueslimak3r in #33
- fix: reduce deployment memory usage by @fabio-nettis in #34
- fix: ensure cache is served until poll is complete by @fabio-nettis in #35
New Contributors
- @mueslimak3r made their first contribution in #33
Full Changelog: v2.3.0...v2.3.1
v2.3.0
What's Changed
We experienced major outages yesterday night due to a database type mismatch caused by the source API. The problem has been resolved and a fix has been implemented to prevent future occurences of the sorts.
Decreased synchronization time 🕐
We've reduced the data synchronization interval from 30 minutes to just 1 minute! Now your data is always up to speed!
New stratagem data 🆕
We've updated our source data to include two brand new stratagems that have been added to the game recently:
Codename | Name | Call-in | Uses | Cooldown |
---|---|---|---|---|
LAS-99 | Quasar Cannon | 3 seconds | Unlimited | 480 seconds |
MG-206 | Heavy Machine Gun | 3 seconds | Unlimited | 480 seconds |
- fix: resolve date conversion issues by @fabio-nettis in #23
- refractor: decrease cron interval duration by @fabio-nettis in #24
- refractor: change readme description by @fabio-nettis in #25
- fix: remove unintentional character from url by @fabio-nettis in #26
- fix: resolve database crash caused by bigint by @fabio-nettis in #29
- feat: update stratagem data by @fabio-nettis in #31
Full Changelog: v2.2.0...v2.3.0
v2.2.0
What's Changed
Some very exciting changes await! Shout out to all developers over at Helldivers 2 Community that have reverse engineered the required endpoints for this addition to our API. Here is what is newly available for you:
Statistics
Statistics for the entire galaxy or a specific planet, this includes number of kills, friendly fire kills etc. Please Note that not every planet has statistics, this is because there may not have been fought a battle on it yet.
/api/statistics
: List all available statistics./api/statistics/:id
: Get a specific statistic by id./api/statistics/galaxy
: Get the galaxy wide statistics./api/planets/:id/statistics
: Get statistics for a planet.
Reports
You can find reports by pressing R2 or the PC equivalent while in your ship. Contain bits of story and lore based on the players actions and performance in the war.
/api/reports
: List all available reports./api/reports/:id
: Get a specific report by id.
Assignments
Assignments are Major Orders that are very important to the war progress. It is possible that a given time there is no Major Order and the endpoint will return an empty array.
/api/assignments
: List all available assignments./api/assignments/:id
: Get a specific assignment by id./api/assignments/:id/rewards
: Get the rewards for a specific assignment.
- feat: add docker publish action by @fabio-nettis in #19
- fix: possible fix for cosign error by @fabio-nettis in #20
- refractor: update package name by @fabio-nettis in #21
- feat: add new endpoints for api by @fabio-nettis in #22
Full Changelog: v2.1.0...v2.2.0
v2.1.0
What's Changed
This release contains some quality of life improvements for the repository. Following changes were made:
Test Suites ➿
We added test suites for all existing routes inside the __tests__
folder. With each pull requests these tests are run and the project is built to ensure everything still works as intended.
Documentation 📖
We removed the postman.json
file inside the repository root and published a interactive and browsable postman collection that can be found here. We will update the documentation as we implement new features and endpoints.
- chore(tests): add testing suite for routes and methods by @fabio-nettis in #16
- refractor: optimize readme file by @fabio-nettis in #17
- feat: add postman api documentation by @fabio-nettis in #18
Full Changelog: v2.0.0...v2.1.0