Dependencies¶
DBConnectionAPI references two internal SAIF packages, SAIF.NetCore.ServiceExtensions and SAIF.NetCore.NHibernate, and one external package, Swashbuckle.AspNetCore. It has no project references. At run time it reaches the SAIF Environment API through the internal service-extensions package, and it opens short-lived database sessions to caller-named Oracle and SQL Server databases to probe composed connection strings.
Internal dependencies¶
| Dependency | Reference Type | Project path | Usage |
|---|---|---|---|
SAIF.NetCore.ServiceExtensions† 10.2026.26267.1 |
NuGet Package | — | CoreAPIStartup base class, ConfigureOpenTelemetry, SecurityApiAuthorize, IEnvironmentClient, ISystemHashService, ISaifLogService, IIdentityServiceAccessor and HttpStatusCodeException |
SAIF.NetCore.NHibernate† 10.2026.26267.1 |
NuGet Package | — | AddNhibernateServices<Startup>() and IUnitOfWorkFactory, used to open units of work for Oracle and SQL Server connectivity probes |
External dependencies¶
| Dependency | Version | Usage |
|---|---|---|
Microsoft.AspNetCore.App (framework reference through Microsoft.NET.Sdk.Web) |
net10.0 |
ASP.NET Core hosting, routing, MVC and dependency injection |
Swashbuckle.AspNetCore |
6.4.0 | OpenAPI document generation and Swagger UI |
Transitive dependencies¶
NuGet packages that this service does not reference directly but that are pulled in by its direct dependencies. Versions are taken from the resolved restore graph. The package types the service calls (for example IEnvironmentClient and ISaifLogService) are listed under the direct dependency that exposes them, not here.
| Dependency | Version | Source (direct dependency) | Usage |
|---|---|---|---|
SAIF.NetCore.AuthService |
10.2026.26267.1 | SAIF.NetCore.ServiceExtensions |
Authentication and authorization support behind SecurityApiAuthorize* |
SAIF.NetCore.DBConnectionClient |
10.2026.26267.1 | SAIF.NetCore.ServiceExtensions |
Client for this API's own contract; registered by the base class but not resolved by this API† |
SAIF.NetCore.EnvironmentClient |
10.2026.26267.1 | SAIF.NetCore.ServiceExtensions |
Environment API client behind IEnvironmentClient* |
SAIF.NetCore.ErrorHandler |
10.2026.26267.1 | SAIF.NetCore.ServiceExtensions |
Error-handling middleware that handles HttpStatusCodeException* |
SAIF.NetCore.HttpClients |
10.2026.26267.1 | SAIF.NetCore.ServiceExtensions |
HTTP client infrastructure for the package clients* |
SAIF.NetCore.Logging |
10.2026.26267.1 | SAIF.NetCore.ServiceExtensions |
Logging behind ISaifLogService* |
SAIF.NetCore.OIDC |
10.2026.26267.1 | SAIF.NetCore.ServiceExtensions |
OpenID Connect authentication support* |
SAIF.NetCore.PingableService |
10.2026.26267.1 | SAIF.NetCore.ServiceExtensions |
Health-check support* |
SAIF.NetCore.SystemHash |
10.2026.26267.1 | SAIF.NetCore.ServiceExtensions |
Hash service behind ISystemHashService* |
SAIF.NetCore.ServiceContracts |
10.2026.26267.1 | SAIF.NetCore.ServiceExtensions |
Shared service contracts used by the other SAIF.NetCore packages* |
Microsoft.AspNetCore.Authentication.Negotiate |
10.0.12 | SAIF.NetCore.ServiceExtensions |
Negotiate (Windows) authentication* |
Microsoft.AspNetCore.Mvc.NewtonsoftJson |
10.0.12 | SAIF.NetCore.ServiceExtensions |
Newtonsoft.Json formatters for MVC* |
OpenTelemetry.Extensions.Hosting |
1.9.0 | SAIF.NetCore.ServiceExtensions |
OpenTelemetry host integration for ConfigureOpenTelemetry* |
OpenTelemetry.Exporter.OpenTelemetryProtocol |
1.9.0 | SAIF.NetCore.ServiceExtensions |
OTLP telemetry exporter* |
OpenTelemetry.Instrumentation.AspNetCore |
1.9.0 | SAIF.NetCore.ServiceExtensions |
Request instrumentation* |
OpenTelemetry.Instrumentation.Http |
1.9.0 | SAIF.NetCore.ServiceExtensions |
Outbound HTTP instrumentation* |
OpenTelemetry.Instrumentation.Runtime |
1.9.0 | SAIF.NetCore.ServiceExtensions |
Runtime metrics* |
Microsoft.AspNetCore.Authentication.JwtBearer |
6.0.11 | SAIF.NetCore.ServiceExtensions (via SAIF.NetCore.AuthService) |
JWT bearer authentication† |
Okta.AspNetCore |
3.5.0 | SAIF.NetCore.ServiceExtensions (via SAIF.NetCore.OIDC) |
Okta OpenID Connect middleware† |
Microsoft.Extensions.DependencyInjection |
8.0.0 | SAIF.NetCore.ServiceExtensions |
Dependency injection container extensions†; not shown in the local restore graph** |
FluentNHibernate |
3.0.1 | SAIF.NetCore.NHibernate |
Fluent mapping and session-factory configuration† |
Oracle.ManagedDataAccess.Core |
3.21.90 | SAIF.NetCore.NHibernate |
Oracle data provider used for the Oracle connectivity probe† |
Npgsql |
4.1.5 | SAIF.NetCore.NHibernate |
PostgreSQL data provider† |
System.Data.SqlClient |
4.8.5 | SAIF.NetCore.NHibernate |
SQL Server data provider used for the SQL Server connectivity probe† |
Microsoft.Extensions.DependencyInjection.Abstractions |
6.0.0 | SAIF.NetCore.NHibernate |
Dependency injection abstractions† |
Microsoft.Extensions.Options |
6.0.0 | SAIF.NetCore.NHibernate |
Options pattern support† |
SAIF.NetCore.ServiceContracts |
10.2026.26267.1 | SAIF.NetCore.NHibernate |
Shared service contracts, also pulled in through SAIF.NetCore.ServiceExtensions† |
Swashbuckle.AspNetCore.Swagger |
6.4.0 | Swashbuckle.AspNetCore |
OpenAPI document generation* |
Swashbuckle.AspNetCore.SwaggerGen |
6.4.0 | Swashbuckle.AspNetCore |
Swagger generator* |
Swashbuckle.AspNetCore.SwaggerUI |
6.4.0 | Swashbuckle.AspNetCore |
Swagger UI* |
Microsoft.Extensions.ApiDescription.Server |
6.0.5 | Swashbuckle.AspNetCore |
Build-time OpenAPI document support* |
Package versions for SAIF.NetCore.NHibernate come from the Legends CLI documentation, because version 10.2026.26267.1 could not be restored from the configured feeds when this page was checked.† |
API dependencies¶
| Endpoint | Method | Called from | Base URL config key | Source library | Reached via | Usage |
|---|---|---|---|---|---|---|
/v2/tracks/{applicationName}/value |
GET | ConnectionManager..ctor (DBConnectionAPI/DBConnectionAPI/Services/ConnectionManager.cs line 28); AdminController..ctor (DBConnectionAPI/DBConnectionAPI/Controllers/AdminController.cs line 25); Startup.ConfigureServices (DBConnectionAPI/DBConnectionAPI/Startup.cs line 21); Startup.Startup (DBConnectionAPI/DBConnectionAPI/Startup.cs line 17) |
Not visible in source (configured inside the package)** | SAIF.NetCore.ServiceExtensions 10.2026.26267.1 (NuGet package) — BaseEnvironmentClient.GetHostsByTrack |
SAIF.NetCore.ServiceExtensions: IEnvironmentClient singleton resolve → SAIF.NetCore.ServiceExtensions: BaseEnvironmentClient.Setup. Also CoreAPIStartup.ConfigureServices and CoreAPIStartup.EnableSecureEnvironmentClient<T> → RegisterSecureEnvironmentClient → BaseEnvironmentClient.Setup |
Resolves the Environment API hosts for the application track when the secure environment client is created† |
/v2/secureSetting/{applicationName}/{track}/[{section}/]{configKey}/value |
GET | ConnectionManager.RetrieveConnection (DBConnectionAPI/DBConnectionAPI/Services/ConnectionManager.cs line 145); AdminController.GetConnectionInfo (DBConnectionAPI/DBConnectionAPI/Controllers/AdminController.cs line 51) |
Not visible in source (configured inside the package)** | SAIF.NetCore.ServiceExtensions 10.2026.26267.1 (NuGet package) — SecureEnvironmentClient.RetrieveSecureSetting |
SAIF.NetCore.ServiceExtensions: IEnvironmentClient.GetSecureSetting → SAIF.NetCore.ServiceExtensions: SecureEnvironmentClient.RetrieveSecureSetting |
Retrieves the per-user credential secure setting in group dbconnectionapi† |
/v2/settings/{applicationName}/{applicationHost}/[{section}/]value |
GET | ConnectionManager.GetSqlTemplate, ConnectionManager.GetPostgreSqlTemplate, ConnectionManager.GetOracleTemplate (DBConnectionAPI/DBConnectionAPI/Services/ConnectionManager.cs lines 121, 126, 131) |
Not visible in source (configured inside the package)** | SAIF.NetCore.ServiceExtensions 10.2026.26267.1 (NuGet package) — BaseEnvironmentClient.GetSettingValue |
SAIF.NetCore.ServiceExtensions: IEnvironmentClient.GetSettingValue → SAIF.NetCore.ServiceExtensions: BaseEnvironmentClient.LoadSettings |
Loads the connection-string templates for each database type† |
/settings/lastRefreshed |
GET | ConnectionManager.RetrieveConnection (DBConnectionAPI/DBConnectionAPI/Services/ConnectionManager.cs line 141) |
Not visible in source (configured inside the package)** | SAIF.NetCore.ServiceExtensions 10.2026.26267.1 (NuGet package) — BaseEnvironmentClient.CheckForUpdates |
SAIF.NetCore.ServiceExtensions: IEnvironmentClient.HasSetting → SAIF.NetCore.ServiceExtensions: BaseEnvironmentClient.CheckForUpdates |
Checks whether the settings cache needs refreshing when testing that the credential secure setting exists† |
Database connections¶
| Database | Pool code | Access method | Resolved by | Usage |
|---|---|---|---|---|
| Oracle (caller-named) | Not applicable | NHibernate IUnitOfWorkFactory via AddNhibernateServices<Startup>() |
Connection string composed by ConnectionManager from IEnvironmentClient template and secure setting (no IDBConnectionClient call) |
Connectivity probe SELECT 1 FROM DUAL on a cache miss |
| SQL Server (caller-named) | Not applicable | NHibernate IUnitOfWorkFactory via AddNhibernateServices<Startup>() |
Same composition chain | Connectivity probe SELECT 1 on a cache miss |
PostgreSQL strings are composed and returned but never probed, so no PostgreSQL connection is opened. The API connects to no database for its own data; see Configuration for the setting keys involved.
Dependency risks and notes¶
- Both internal packages are pinned at 10.2026.26267.1 while the feed carries 10.2026.26279.1.
Swashbuckle.AspNetCore6.4.0 is an older package on anet10.0target framework.- The service calls no downstream API through
AddHttpClient, so no retry or resilience policy is configured locally; resilience of the Environment API calls is not visible in source.** - Possible Environment API or security-service calls made by
SecurityApiAuthorize(which delegates toISecurityClient) are not proven reachable because the package documentation does not describe the outbound call; the entry is therefore not listed under API dependencies.† - The database probes retry up to four attempts with blocking waits of 2, 3 and 5 seconds, which can hold a request thread for about 10 seconds on a cache miss.
- Every distinct composed connection string that is probed leaves one NHibernate session factory in memory for the life of the process.†
Note: Statements marked with
†are derived from dependency library documentation via the Legends CLI. Statements marked with*were inferred from the resolved restore graph or package naming. Statements marked with**could not be confirmed; treat as unknown until verified.
Related documentation¶
- API index
- Overview
- Architecture
- Hosting pipeline
- Endpoints
- Authentication and authorization
- Configuration
- Operations and processes
- Business rules
- Data model
- Operational runbook
- Tech debt
Sources¶
- DBConnectionAPI/DBConnectionAPI/DBConnectionAPI.csproj
- DBConnectionAPI/DBConnectionAPI/Startup.cs
- DBConnectionAPI/DBConnectionAPI/Program.cs
- DBConnectionAPI/DBConnectionAPI/Services/ConnectionManager.cs
- DBConnectionAPI/DBConnectionAPI/Controllers/AdminController.cs
- DBConnectionAPI/DBConnectionAPI/Controllers/ConnectionsController.cs