diff --git a/CHANGELOG.md b/CHANGELOG.md index 114a064..d10f852 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,12 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.1.1] - 2026-07-07 + +### Fixed + +#### NoaaClient Package +- NuGet package README now ships package-local markdown instead of repository HTML landing page +- Repository quick-start example updated to use `IRtswClient` instead of deprecated `IAceClient` + +### Changed + +#### NoaaClient Package +- **ACE client deprecated** — only `IAceClient` marked `[Obsolete]`; removal tracked in [#3](https://github.com/Aurora-Science-Hub/Integrations/issues/3) + +## [1.1.0] - 2026-07-07 + ### Added #### NoaaClient Package - **RTSW Client** - NOAA real-time solar wind integration - `IRtswClient` with 1-minute magnetometer and plasma feeds - - Object-array JSON parsers for `rtsw_mag_1m.json` and `rtsw_wind_1m.json` + - JSON deserialization for `rtsw_mag_1m.json` and `rtsw_wind_1m.json` - Response records map the full NOAA RTSW schema (`BxGsm`, `ProtonDensity`, quality flags, etc.), not legacy DSCOVR field names ### Removed @@ -25,11 +40,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed #### NoaaClient Package -- **ACE client deprecated** — `IAceClient` and ACE response models marked `[Obsolete]` in favor of `IRtswClient`; removal tracked in [#3](https://github.com/Aurora-Science-Hub/Integrations/issues/3) - **RTSW response models** (breaking change within unreleased RTSW surface) - Magnetometer and wind records now use live NOAA RTSW property names - Removed misleading aliases (`Latitude`/`Longitude`, `BulkSpeed`/`IonTemperature`) - - Optional JSON fields are parsed as nullable; only `time_tag`, `active`, and `source` are required #### Dependency Injection - `AddNoaaClients()` now registers `IRtswClient` instead of `IDscovrClient` @@ -76,6 +89,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Embedded debug symbols in NuGet packages - GitHub Actions CI/CD pipeline for build and test +[1.1.1]: https://github.com/Aurora-Science-Hub/Integrations/compare/1.1.0...1.1.1 +[1.1.0]: https://github.com/Aurora-Science-Hub/Integrations/compare/1.0.0...1.1.0 [1.0.0]: https://github.com/Aurora-Science-Hub/Integrations/releases/tag/1.0.0 -[Unreleased]: https://github.com/Aurora-Science-Hub/Integrations/compare/1.0.0...HEAD - +[Unreleased]: https://github.com/Aurora-Science-Hub/Integrations/compare/1.1.1...HEAD diff --git a/Directory.Build.props b/Directory.Build.props index aa8d725..e92a1c5 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -28,7 +28,7 @@ - 1.1.0 + 1.1.1 diff --git a/README.md b/README.md index 62b2890..b56be9e 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ - + Aurora Science Hub Integrations
Aurora Science Hub Integrations @@ -52,16 +52,17 @@ builder.Services.AddNoaaClients(); // Inject and use clients public class SpaceWeatherService { - private readonly IAceClient _aceClient; + private readonly IRtswClient _rtswClient; - public SpaceWeatherService(IAceClient aceClient) + public SpaceWeatherService(IRtswClient rtswClient) { - _aceClient = aceClient; + _rtswClient = rtswClient; } - public async Task> GetMagnetometerDataAsync() + public async Task> GetMagnetometerDataAsync( + CancellationToken cancellationToken) { - return await _aceClient.GetMagnetometerDataAsync(); + return await _rtswClient.GetMagnetometerDataAsync(cancellationToken); } } ``` @@ -76,9 +77,9 @@ Each package provides HTTP clients for accessing external data sources with stro | Component | Description | |---------------------|-----------------------------------------------------------------------------------------------------------------------------| -| **ACE Client** | Advanced Composition Explorer satellite data - magnetometer and SWEPAM measurements | -| **RTSW Client** | NOAA real-time solar wind feeds - 1-minute magnetometer and plasma data with `active` and `source` metadata | -| **KP-Index Client** | Geomagnetic activity indices - nowcast and forecast data (3-day and 27-day) | +| **RTSW Client** | NOAA real-time solar wind feeds — 1-minute magnetometer and plasma JSON data with `active` and `source` metadata | +| **KP-Index Client** | Geomagnetic activity indices — nowcast and forecast data (3-day and 27-day) | +| **ACE Client** | Legacy text feeds (deprecated; use RTSW instead — see [Integrations #3](https://github.com/Aurora-Science-Hub/Integrations/issues/3)) | See [detailed documentation](src/NoaaClient/README.md) for usage examples and API reference. diff --git a/src/Directory.Build.props b/src/Directory.Build.props index f435be9..c1b10d0 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -24,7 +24,7 @@ - + diff --git a/src/NoaaClient/README.md b/src/NoaaClient/README.md index d45e322..423c5b6 100644 --- a/src/NoaaClient/README.md +++ b/src/NoaaClient/README.md @@ -1,61 +1,47 @@ -# AuroraScienceHub.Integrations.Noaa +# AuroraScienceHub.Integrations.NoaaClient -NOAA space weather data integration with support for ACE, RTSW and KP-index data. +NOAA space weather data integration for RTSW and KP-index feeds. ## Overview -Provides unified interfaces for accessing NOAA space weather data including solar wind measurements, magnetometer data, and geomagnetic activity indices. - -## Key Features - -- **ACE Spacecraft** - Legacy magnetometer and SWEPAM text feeds (**deprecated**; use RTSW instead — see [#3](https://github.com/Aurora-Science-Hub/Integrations/issues/3)) -- **RTSW Feed** - 1-minute real-time magnetometer and solar wind plasma data -- **KP-Index** - Geomagnetic activity forecasts and nowcast data -- **Unified Interfaces** - Consistent API across all NOAA data sources +Provides HTTP clients for NOAA Space Weather Prediction Center data: real-time solar wind (RTSW) magnetometer and plasma measurements, plus geomagnetic Kp-index nowcast and forecasts. ## Installation ```bash -dotnet add package AuroraScienceHub.Integrations.Noaa +dotnet add package AuroraScienceHub.Integrations.NoaaClient ``` -## Usage - -### Service Registration +## Configuration -```csharp -// Configuration -builder.Services.AddNoaaClients(); +```json +{ + "Noaa": { + "ServerUrl": "https://services.swpc.noaa.gov" + } +} ``` -### ACE Client (deprecated) - -`IAceClient` is obsolete. Prefer `IRtswClient` for magnetometer and solar wind plasma data. +Register clients in DI: ```csharp -var magnetometerData = await aceClient.GetMagnetometerDataAsync(cancellationToken); -var solarWindData = await aceClient.GetSwepamDataAsync(cancellationToken); +builder.Services.AddNoaaClients(); ``` -Migration: use `IRtswClient` and filter by `Active` or `Source == "ACE"` when ACE-specific rows are required. +## RTSW Client -### RTSW Client +Primary client for 1-minute magnetometer and solar wind plasma data: ```csharp var magnetometerData = await rtswClient.GetMagnetometerDataAsync(cancellationToken); var solarWindData = await rtswClient.GetSolarWindPlasmaDataAsync(cancellationToken); ``` -RTSW response models map the full NOAA `rtsw_mag_1m.json` and `rtsw_wind_1m.json` schema (not legacy DSCOVR field names). +Response models map the NOAA `rtsw_mag_1m.json` and `rtsw_wind_1m.json` schema, including `Active`, `Source`, GSE/GSM field components, and quality flags. -| Magnetometer (`MagnetometerRecord`) | Wind (`SolarWindPlasmaRecord`) | -| --- | --- | -| `DateTime`, `Active`, `Source` | `DateTime`, `Active`, `Source` | -| `Range`, `Scale`, `Sensitivity`, `ManualMode`, `SampleSize` | `ProtonSpeed`, `ProtonTemperature`, `ProtonDensity` | -| `Bt`, `BxGse`–`PhiGse`, `BxGsm`–`PhiGsm` | `ProtonVxGse`–`ProtonVzGsm`, `ProtonSampleSize` | -| `MaxTelemetryFlag`, `MaxDataFlag`, `OverallQuality` | `AlphaSpeed`–`AlphaSampleSize`, quality flags (`MaxConvergenceFlag`–`OverallQuality`) | +Filter by `Active == true` for the NOAA-selected primary feed, or by `Source` when a specific instrument row is required. -### KP-Index Client +## KP-Index Client ```csharp var nowcast = await kpIndexClient.GetKpIndexNowcastAsync(cancellationToken); @@ -63,22 +49,11 @@ var forecast3Day = await kpIndexClient.GetKpIndex3DayForecastAsync(cancellationT var forecast27Day = await kpIndexClient.GetKpIndex27DayForecastAsync(cancellationToken); ``` -### Configuration - -```json -{ - "Noaa": { - "ServerUrl": "https://services.swpc.noaa.gov" - } -} -``` - - -## License +## Deprecated API -See [LICENSE](../../LICENSE) file in the repository root. +`IAceClient` is obsolete and scheduled for removal ([#3](https://github.com/Aurora-Science-Hub/Integrations/issues/3)). Use `IRtswClient` for magnetometer and solar wind plasma data. -## Related Packages +## Links -- `AuroraScienceHub.Framework.Http` - HTTP utilities -- `AuroraScienceHub.Framework.Utilities` - Common utilities +- Repository: https://github.com/Aurora-Science-Hub/Integrations +- Changelog: https://github.com/Aurora-Science-Hub/Integrations/blob/main/CHANGELOG.md