Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 22 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.1.1] - 2026-07-07

### Fixed

#### NoaaClient Package
- Removed trailing dot from `IAceClient` obsolete message URL
- NuGet package README now ships package-local markdown instead of repository HTML landing page

### Changed

#### NoaaClient Package
- Repository and package docs updated to RTSW-first examples (deprecated ACE usage removed from primary docs)
- **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
Expand All @@ -25,11 +41,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
- **RTSW response models** (breaking change)
- Magnetometer and wind records 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`
Expand Down Expand Up @@ -76,6 +90,8 @@ 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

2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
</PropertyGroup>

<PropertyGroup>
<PackageBaseVersion>1.1.0</PackageBaseVersion>
<PackageBaseVersion>1.1.1</PackageBaseVersion>
<MinVerTagPrefix></MinVerTagPrefix>
</PropertyGroup>

Expand Down
19 changes: 10 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/logo/In_white.png">
<source media="(prefers-color-scheme: light)" srcset="docs/logo/In_black.png">
<img src="docs/logo/logo-black.png" style="width:400px;">
<img src="docs/logo/In_black.png" alt="Aurora Science Hub Integrations" style="width:400px;">
</picture>
<br>
Aurora Science Hub Integrations
Expand Down Expand Up @@ -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<IReadOnlyCollection<MagnetometerRecord>> GetMagnetometerDataAsync()
public async Task<IReadOnlyList<MagnetometerRecord>> GetMagnetometerDataAsync(
CancellationToken cancellationToken)
{
return await _aceClient.GetMagnetometerDataAsync();
return await _rtswClient.GetMagnetometerDataAsync(cancellationToken);
}
}
```
Expand All @@ -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.

Expand Down
2 changes: 1 addition & 1 deletion src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
</ItemGroup>

<ItemGroup>
<None Include="..\..\README.md" Pack="true" PackagePath="\"/>
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>

</Project>
2 changes: 1 addition & 1 deletion src/NoaaClient/Ace/IAceClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace AuroraScienceHub.Integrations.NoaaClient.Ace;
/// <summary>
/// ACE Spacecraft client
/// </summary>
[Obsolete("Use IRtswClient instead. See https://github.com/Aurora-Science-Hub/Integrations/issues/3.")]
[Obsolete("Use IRtswClient instead. See https://github.com/Aurora-Science-Hub/Integrations/issues/3")]
public interface IAceClient
{
/// <summary>
Expand Down
71 changes: 23 additions & 48 deletions src/NoaaClient/README.md
Original file line number Diff line number Diff line change
@@ -1,84 +1,59 @@
# 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);
var forecast3Day = await kpIndexClient.GetKpIndex3DayForecastAsync(cancellationToken);
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
Loading