# API # Changelog
### 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 ##### Added - [Landing Page](https://netstone.api.tawmy.net/ "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. ##### Added - 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.0b 15\. Jul 24 ##### Added - Dawntrail Jobs parsing - They were ignored before, now data is actually being parsed
### 1.0.3b 01\. Jul 24 ##### Fixed - Exception when parsing Dawntrail jobs
### 1.0.2b 15\. Apr 24 ##### Fixed - Exception when parsing free company rankings for free companies without ranking(s)
### 1.0.1b 27\. Jan 24 ##### Fixed - Exception when parsing disciples of the hand/land
### 1.0.0b 25\. Jan 24 ##### Initial Release - Character parsing - Character - ClassJobs - Minions - Mounts - Free Company parsing - Free Company - Free Company members
# RabbitMQ ### Queues (inbound)
NameREST API methodAssociated Exchanges (see below for details)
netstone-get-character[/Character/{lodestoneId}](https://api.netstone.tawmy.dev/swagger/index.html#/Character/get_Character__lodestoneId_ "/Character/{lodestoneId}")netstone-get-character-result netstone-get-character-refreshed
netstone-get-character-class-jobs[/Character/ClassJobs/{lodestoneId}](https://api.netstone.tawmy.dev/swagger/index.html#/Character/get_Character_ClassJobs__lodestoneId_ "/Character/ClassJobs/{lodestoneId}")netstone-get-character-class-jobs-result netstone-get-character-class-jobs-refreshed
netstone-get-character-minions[/Character/Minions/{lodestoneId}](https://api.netstone.tawmy.dev/swagger/index.html#/Character/get_Character_Minions__lodestoneId_ "/Character/Minions/{lodestoneId}")netstone-get-character-minions-result netstone-get-character-minions-refreshed
netstone-get-character-mounts[/Character/Mounts/{lodestoneId}](https://api.netstone.tawmy.dev/swagger/index.html#/Character/get_Character_Mounts__lodestoneId_ "/Character/Mounts/{lodestoneId}")netstone-get-character-mounts-result netstone-get-character-mounts-refreshed
netstone-get-character-achievements[/Character/Achievements/{lodestoneId}](https://api.netstone.tawmy.dev/swagger/index.html#/Character/get_Character_Achievements__lodestoneId_ "/Character/Achievements/{lodestoneId}")netstone-get-character-achievements-result netstone-get-character-achievements-refreshed
netstone-get-free-company[/FreeCompany/{lodestoneId}](https://api.netstone.tawmy.dev/swagger/index.html#/FreeCompany/get_FreeCompany__lodestoneId_ "/FreeCompany/{lodestoneId}")netstone-get-free-company-result netstone-get-free-company-refreshed
netstone-get-free-company-members[/FreeCompany/Members/{lodestoneId}](https://api.netstone.tawmy.dev/swagger/index.html#/FreeCompany/get_FreeCompany_Members__lodestoneId_ "/FreeCompany/Members/{lodestoneId}")netstone-get-free-company-members-result netstone-get-free-company-members-refreshed
### Exchanges (outbound)
NameSent When
netstone-get-character-resultCharacter data requested through queue.
netstone-get-character-refreshedCharacter data refreshed from Lodestone.
netstone-get-character-class-jobs-resultCharacter's class jobs requested through queue.
netstone-get-character-class-jobs-refreshedCharacter's class jobs refreshed from Lodestone.
netstone-get-character-minions-result Character's minions requested through queue.
netstone-get-character-minions-refreshed Character's minions refreshed from Lodestone.
netstone-get-character-mounts-result Character's mounts requested through queue.
netstone-get-character-mounts-refreshed Character's mounts refreshed from Lodestone.
netstone-get-character-achievements-result Character's achievements requested through queue.
netstone-get-character-achievements-refreshed Character's achievements refreshed from Lodestone.
netstone-get-free-company-result Free Company data requested through queue.
netstone-get-free-company-refreshed Free Company data refreshed from Lodestone.
netstone-get-free-company-members-result Free Company's members requested through queue.
netstone-get-free-company-members-refreshed Free Company's members refreshed from Lodestone.
\- "result" exchanges are always (cached or not) filled when data was requested through inbound queue, NOT when requested through API. \- "refreshed" exchanges are filled whenever data was refreshed from the Lodestone, no matter whether through inbound queue or API. It is however NOT filled when data was returned from cache. # Configuration and Deployment Local and DEV deployments are done through a combination of two compose files. - Local: compose.yml + compose.**local**.yml - DEV: compose.yml + compose.**dev**.yml Most environment variables are already set and committed to the repository. Some environment variables do not have values set, as they are confidential. Please set those values when deploying the compose project:
Environment Variable
DB\_PASSWORDPassword for Postgres database. Will be initialised with this value.
RABBITMQ\_DEFAULT\_USERDefault admin user for RabbitMQ. Please use a separate user for NetStone API.
RABBITMQ\_DEFAULT\_PASSDefault admin password for RabbitMQ. Please use a separate user for NetStone API.
RABBITMQ\_USERNAMEUser for RabbitMQ authentication. Please do not use the default admin user.
RABBITMQ\_PASSWORDUser for RabbitMQ authentication. Please do not use the default admin user.
The RabbitMQ connection will fail before the user is created. The rest of the API will work just fine.