TheFirstDescendant.Client
1.0.1
dotnet add package TheFirstDescendant.Client --version 1.0.1
NuGet\Install-Package TheFirstDescendant.Client -Version 1.0.1
<PackageReference Include="TheFirstDescendant.Client" Version="1.0.1" />
<PackageVersion Include="TheFirstDescendant.Client" Version="1.0.1" />
<PackageReference Include="TheFirstDescendant.Client" />
paket add TheFirstDescendant.Client --version 1.0.1
#r "nuget: TheFirstDescendant.Client, 1.0.1"
#:package TheFirstDescendant.Client@1.0.1
#addin nuget:?package=TheFirstDescendant.Client&version=1.0.1
#tool nuget:?package=TheFirstDescendant.Client&version=1.0.1
The First Descendant API Client
A C# client library for The First Descendant API provided by Nexon.
Features
- Strongly typed C# client generated from OpenAPI specification
- English-first - All API calls automatically use English (
en) language code - Async/await support with cancellation tokens
- Comprehensive test coverage with xUnit, FluentAssertions, and NSubstitute
- Targets .NET 9.0 with C# preview language features
- Central Package Management for consistent dependency versions across projects
Solution Structure
- TheFirstDescendant (
src/TheFirstDescendant/) - Main API client library - TheFirstDescendant.Tests (
tests/TheFirstDescendant.Tests/) - Unit tests with xUnit - TheFirstDescendant.Sample (
samples/TheFirstDescendant.Sample/) - Interactive console demo with Spectre.Console
Quick Start
1. Basic Usage
using TheFirstDescendant;
var httpClient = new HttpClient();
var service = new TheFirstDescendantService(httpClient);
// Get all descendants
var descendants = await service.GetDescendantsAsync();
// Get all weapons
var weapons = await service.GetWeaponsAsync();
// Get stats metadata
var stats = await service.GetStatsAsync();
2. Using the Raw Client
For advanced scenarios requiring language selection or direct API control:
var rawClient = service.GetRawClient();
// Get Korean language data
var koreanDescendants = await rawClient.GetDescendantsAsync(LanguageCode.Ko);
Available Endpoints
All service methods automatically use English (en) as the language code. Each returns a strongly-typed collection:
Core Game Data
GetDescendantsAsync()- Descendant characters and their stats/skillsGetWeaponsAsync()- Weapon data including stats and typesGetModulesAsync()- Module metadata for character/weapon customizationGetReactorsAsync()- Reactor data and skill power coefficientsGetExternalComponentsAsync()- External component metadata and base stats
Progression & Rewards
GetRewardsAsync()- Difficulty level reward informationGetVoidBattlesAsync()- Void battle metadata and battle zonesGetResearchsAsync()- Research recipes, costs, and resultsGetAmorphousRewardsAsync()- Amorphous material rewardsGetTitlesAsync()- Player title metadata
Items & Customization
GetConsumableMaterialsAsync()- Consumable material dataGetCustomizingItemsAsync()- Customizing item metadata with evolution stagesGetMedalsAsync()- Medal metadata and detailsGetVehiclesAsync()- Vehicle data
System & Reference Data
GetStatsAsync()- Stat type definitionsGetWeaponTypesAsync()- Weapon type metadataGetFellowsAsync()- Fellow (companion) dataGetTiersAsync()- Tier level informationGetCoreSlotsAsync()- Core slot metadataGetCoreTypesAsync()- Core type definitions
Level & Progression Details
GetDescendantLevelDetailAsync()- Level progression details for descendantsGetMasteryRankLevelDetailsAsync()- Mastery rank progression dataGetFellowLevelDetailsAsync()- Fellow level progression dataGetDescendantGroupsAsync()- Descendant group metadataGetAdaptLevelsAsync()- Adaptation level data
Advanced Systems
GetArcheTuningBoardGroupsAsync()- Arche tuning board groupsGetArcheTuningBoardsAsync()- Arche tuning board configurationsGetArcheTuningNodesAsync()- Arche tuning node data and effectsGetAmorphousOpenConditionDescriptionsAsync()- Amorphous opening conditionsGetAcquisitionDetailsAsync()- Item acquisition details
Architecture
Core Components
TheFirstDescendantApiClient (
TheFirstDescendantApiClient.cs)- Low-level HTTP client for direct API access
- Supports all language codes (
en,ko, etc.) - Full parameter control for advanced scenarios
- Base URL:
https://open.api.nexon.com/
TheFirstDescendantService (
TheFirstDescendantService.cs)- High-level service wrapper with English defaults
- Simplified method signatures for common use cases
- Provides
GetRawClient()for advanced access
Models/ - Strongly-typed data models
- Generated from OpenAPI specification
- Full IntelliSense support
- JSON serialization configured
Requirements
- .NET 9.0 SDK or later
- No API keys required (public metadata endpoints)
Building
# Build the entire solution
dotnet build
# Build in Release mode
dotnet build -c Release
# Run tests
dotnet test
Running the Sample
The sample application demonstrates the API with an interactive Spectre.Console UI:
cd samples/TheFirstDescendant.Sample
dotnet run
Features:
- Visual descendant browser with images
- Stat progression tables
- Skill information display
- Parallel image downloading with progress
Development
Solution Structure
TFDTool/
├── src/
│ └── TheFirstDescendant/ # Main library
│ ├── Models/ # Generated data models
│ ├── TheFirstDescendantApiClient.cs
│ └── TheFirstDescendantService.cs
├── tests/
│ └── TheFirstDescendant.Tests/ # xUnit tests
├── samples/
│ └── TheFirstDescendant.Sample/ # Demo application
├── Directory.Build.props # Shared build configuration
├── Directory.Packages.props # Central package versions
└── global.json # SDK version pinning
Testing
Tests use:
- xUnit - Test framework
- FluentAssertions - Readable assertions
- NSubstitute - Mocking framework
Package Information
NuGet Package: TheFirstDescendant.Client
- Version: 1.0.0
- Assembly:
TheFirstDescendant.Client.dll - Repository: https://github.com/cmxl/TheFirstDescendant.Client
API Documentation
Based on The First Descendant OpenAPI specification from Nexon:
- Specification:
tfd-openapi.yaml(in repository) - Official API: https://openapi.nexon.com/
License
This project is licensed under the MIT License - see the LICENSE file for details.
This project is for educational and development purposes. Please review Nexon's terms of service for API usage guidelines.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- Microsoft.Extensions.Http (>= 9.0.9)
- System.Text.Json (>= 9.0.9)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.