Skip to main content

Release Notes

3.1.0

20. Apr 25

 

Version 3.0.0 added fallback support for when the Lodestone is entirely unreachable. This version extends this by also allowing fallbacks when the Lodestone is down for maintenance or when a profile is private. If no fallback is used, a 503 HTTP Status Code is returned.

 

A new .NET SDK replaces the existing API Client, and there is various maintenance-related changes too.

New
  • .NET SDK
    • Rebuilt from the ground up for dependency injection, this new SDK replaces the existing NetStone API Client.
    • Changelog here
    • Basic usage guide here
  • Handle private profiles and Lodestone maintenance
    • NetStone returns an empty object when either of these apply
    • API now has a check for when essential properties are empty and returns an 503 HTTP Status Code
    • When FallbackType is set to Any, fallback is used
    • Check added for Free Companies as well, but is untested
  • Data protection for ASP.NET Core encryption keys
    • Keys are encrypted using X.509 certificate and stored in database
  • Health checks for database and data protection certificate expiry
  • Tracing data now recorded for mapping extensions
  • Global exception handler for HTTP Status Code 404 and 503 results
Changed
  • Default API version is now 3
  • API version 2 marked as obsolete
    • Will be removed in a future release
  • When retrieving free company members, full character profiles are only queued once
    • They were previously queued per-character, this should greatly improve performance
  • Parsing class jobs throws more appropriate exception
  • Remove redundant Console.WriteLine calls to prevent duplicate exception output

3.0.1

24. Mar 25

Changed
  • useFallback parameter accepts "None", "Http", and "Any" values now
    • Previously it was simple bool
    • "Any" behaves as previous "true", catching all exceptions
    • "Http" catches HttpRequestExceptions only
      • HttpRequestException is thrown when connection to the Lodestone fails (eg. when it's down, rate limited, etc)
      • Other exceptions are likely to be parsing bug and swallowing them may not be desired
Fixed
  • Landing page "OpenAPI Spec" button was opening V2 API spec
Maintenance
  • Fallbacks are logged as warnings
Breaking Changes
  • useFallback type changed from bool to FallbackType enum

3.0.0

23. Mar 25

 

This version adds fallback support in case the Lodestone is unreachable. It also adds OpenTelemetry metrics and tracing support. Metrics give me insight in how much the API is used and whether it can process all requests. Tracing data allows me to tune performance and if things went wrong, see where they did.

New
  • API V3 with fallback support
    • New useFallback parameter
    • If set and parsing fails, API returns cached data
    • New V3 DTOs have fallbackUsed and fallbackReason properties for transparency
    • AutoMapper removed in API V3, replaced with manual mapping
  • OpenTelemetry Metrics
    • Helps getting an overview over how much each endpoint is used, how long requests take on average, and how many fail
  • OpenTelemetry Tracing
    • Helps getting insight into how long each part of a request takes exactly, for performance optimisations
  • New unit tests comparing API V2 and V3 responses
Maintenance
  • Runtime upgrade to .NET 9
  • Switch to MIT license
Fixed
  • Free Company focus mapping
  • Character not assigned to achievements if retrieved after achievements were already cached
  • Error while retrieving free company members in edge case where character was retrieved before, but free company was not
  • Free Company not always updated when player changed/left FC
Removed
  • API V1
Breaking Changes
  • API V1 removed
  • None in Grand Company affiliation renamed to NotSpecified

2.1.2

03. Jan 25

 

Fixed
  • Exception while attempting to cache character that had a name or world change 

2.1.1

05. Nov 24

 

Fixed
  • Page margin too large on mobile
  • Landing page scrolling horizontally on mobile
  • Demo too wide on mobile once data loaded

2.1.0

03. Nov 24

New
  • Landing Page
    • Basic introduction to the project
    • Demo for retrieving data
    • Links to Changelog, Swagger UI, and OpenAPI definition
  • "Data refreshed" exchanges
    • Previous queues were published to queues whenever data was requested through queue, no matter whether it was cached or not
    • New exchanges are published to whenever data is refreshed from Lodestone, not when it was cached
Changed
  • Outgoing queues are now exchanges
    • See "Breaking Changes" for further details
  • Default API version is now 2
  • API version 1 marked as obsolete
    • Will be removed in a future release
  • Swagger UI now always available
Breaking Changes
  • Outgoing RabbitMQ messages are now published to exchanges instead of queues
    • Allows fanout exchange to publish messages to multiple queues
    • Requires manual configuration of exchange -> queue binding
    • If RabbitMQ was used before, both exchange and queue will exist and only 

2.0.3

28. Sep 24

 

Fixed
  • Free company members failed to parse if at least one of its members had been cached before

2.0.2

27. Sep 24

 

Fixed
  • Grand Company parsing fails under certain circumstances

2.0.1

22. Sep 24

Changed
  • Version is printed to console on startup

2.0.0

22. Sep 24

 

Complete revamp of the API. Instead of simply parsing and returning NetStone data, Lodestone data is now mapped onto database entities and cached. Retrieving character data can now return cached data as DTOs, or refresh data from the Lodestone and return as said DTOs.

New
  • Character achievement parsing
  • NetStone entity to database mapping
  • Caching of database entities
    • Character + attributes
    • Character ClassJobs
    • Character Minions
    • Character Mounts
    • Character Achievements
    • Free Company
    • Free Company Memberes
  • NetStone.Api.Client project for easy data retrieval in .NET projects
  • Various unit tests to compare parsed data and data mapped to database entities and DTOs
  • Additional properties in DTOs like whether data is cached, when it was last refreshed, and collection totals + percentages
  • RabbitMQ support for all endpoints

 

1.1.0

15. Jul 24

New
  • Dawntrail Jobs parsing
    • They were ignored before, now data is actually being parsed

1.0.3

01. Jul 24

Fixed
  • Exception when parsing Dawntrail jobs

1.0.2

15. Apr 24

Fixed
  • Exception when parsing free company rankings for free companies without ranking(s)

1.0.1

27. Jan 24

Fixed
  • Exception when parsing disciples of the hand/land

1.0.0

25. Jan 24

Initial Release
  • Character parsing
    • Character
    • ClassJobs
    • Minions
    • Mounts
  • Free Company parsing
    • Free Company
    • Free Company members