---
title: SAIF.NetCore.ServiceContracts API reference
summary: Index of all public types in this library.
status: draft
owner: Framework.NCore maintainers
last_reviewed: 2026-10-02
library: SAIF.NetCore.ServiceContracts
reference_type: package
---


# SAIF.NetCore.ServiceContracts API reference

This page lists all public types exposed by `SAIF.NetCore.ServiceContracts`. Each type links to its full API reference page. Every type in this library compiles to the single namespace `SAIF.NetCore.Services.Contracts`; the groupings below are editorial categories only, not separate namespaces.

## Types

### Core contracts

| Type | Kind | Namespace | Purpose |
| --- | --- | --- | --- |
| [ExternalUser](SAIF.NetCore.Services.Contracts/ExternalUser.md) | Class | `SAIF.NetCore.Services.Contracts` | Carry external-user account flags and lifecycle dates (disable date, last logon, profile update, test-user expiration, email-verification expiration) returned by the SecurityAPI's external-data endpoint. |
| [ExternalUserType](SAIF.NetCore.Services.Contracts/ExternalUserType.md) | Class | `SAIF.NetCore.Services.Contracts` | Describe an external user's type code/description and associated customer and credential linkage, plus steward/admin flags. |
| [HttpClientOptions](SAIF.NetCore.Services.Contracts/HttpClientOptions.md) | Class | `SAIF.NetCore.Services.Contracts` | Hold the default retry/serializer/header-persistence configuration applied to a new `IHttpJsonClient`. |
| [HttpClientSerializer](SAIF.NetCore.Services.Contracts/HttpClientSerializer.md) | Enum | `SAIF.NetCore.Services.Contracts` | Distinguish between the framework-default serializer and an explicit Newtonsoft.Json opt-in. |
| [IDBConnectionClient](SAIF.NetCore.Services.Contracts/IDBConnectionClient.md) | Interface | `SAIF.NetCore.Services.Contracts` | Resolve a connection string for a named SQL Server, Oracle, or PostgreSQL instance without the caller needing to know credential or connection-string formatting details. |
| [IEnvironmentClient](SAIF.NetCore.Services.Contracts/IEnvironmentClient.md) | Interface | `SAIF.NetCore.Services.Contracts` | Expose plain and secure setting retrieval, both synchronous and asynchronous, typed and string, with or without a section qualifier. |
| [IHttpJsonClient](SAIF.NetCore.Services.Contracts/IHttpJsonClient.md) | Interface | `SAIF.NetCore.Services.Contracts` | Issue synchronous and asynchronous HTTP verb calls (`Delete`/`Get`/`Patch`/`Post`/`Put`) that return `IHttpRequestResult`. |
| [IHttpRequestResult](SAIF.NetCore.Services.Contracts/IHttpRequestResult.md) | Interface | `SAIF.NetCore.Services.Contracts` | Expose the raw response (`Content`, `Headers`, `StatusCode`, `StatusDescription`, `ResponseDate`, `LastRequestUrl`) and error information (`ErrorException`, `ErrorMessage`). |
| [IIdentityService](SAIF.NetCore.Services.Contracts/IIdentityService.md) | Interface | `SAIF.NetCore.Services.Contracts` | Expose the current user's identity, claims, and authentication state. |
| [IIdentityServiceAccessor](SAIF.NetCore.Services.Contracts/IIdentityServiceAccessor.md) | Interface | `SAIF.NetCore.Services.Contracts` | Provide a single injection point that resolves to the correct `IIdentityService` implementation for the current authentication scheme. |
| [ISaifLogService](SAIF.NetCore.Services.Contracts/ISaifLogService.md) | Interface | `SAIF.NetCore.Services.Contracts` | Bind a logger instance to its runtime dependencies in a single `Configure` call before any logging method on `ISaifLoggable` can be used. |
| [ISaifLoggable](SAIF.NetCore.Services.Contracts/ISaifLoggable.md) | Interface | `SAIF.NetCore.Services.Contracts` | Provide severity-leveled logging methods (Debug/Info/Warning/Error/Fatal), each with message-only, message-and-exception, and property-value-array overloads, every one returning a log-entry ID for correlation. |
| [ISaifWindowsServiceLogService](SAIF.NetCore.Services.Contracts/ISaifWindowsServiceLogService.md) | Interface | `SAIF.NetCore.Services.Contracts` | Bind a logger instance to `IEnvironmentClient` and a logging `IHttpJsonClient` for non-web (Windows service) hosts. |
| [IStandardErrorLogInfo](SAIF.NetCore.Services.Contracts/IStandardErrorLogInfo.md) | Interface | `SAIF.NetCore.Services.Contracts` | Provide a correlation `ID`, the error source, message, stack trace, and free-form log details common to both web and Windows-service error logging. |
| [ISystemHashService](SAIF.NetCore.Services.Contracts/ISystemHashService.md) | Interface | `SAIF.NetCore.Services.Contracts` | Compute and cache a SHA256-based system hash for a given `SystemType`/system name*. |
| [IUserGroup](SAIF.NetCore.Services.Contracts/IUserGroup.md) | Interface | `SAIF.NetCore.Services.Contracts` | Describe an AD group's name, security classification, description, distinguished name, and scope. |
| [IUserProfile](SAIF.NetCore.Services.Contracts/IUserProfile.md) | Interface | `SAIF.NetCore.Services.Contracts` | Describe a user's identifier, domain, account-state flags, and group memberships for authorization and display purposes. |
| [IWebErrorLogInfo](SAIF.NetCore.Services.Contracts/IWebErrorLogInfo.md) | Interface | `SAIF.NetCore.Services.Contracts` | Combine standard error identity with full web-request context into a single loggable shape for web-hosted errors. |
| [IWebRequestLogInfo](SAIF.NetCore.Services.Contracts/IWebRequestLogInfo.md) | Interface | `SAIF.NetCore.Services.Contracts` | Capture request metadata (URI, method, headers, body, client identity/claims) for logging and diagnostics. |
| [IWindowsServiceError](SAIF.NetCore.Services.Contracts/IWindowsServiceError.md) | Interface | `SAIF.NetCore.Services.Contracts` | Carry the exception instance and its type names alongside the shared `IStandardErrorLogInfo` fields. |
| [LogLevel](SAIF.NetCore.Services.Contracts/LogLevel.md) | Enum | `SAIF.NetCore.Services.Contracts` | Classify log entries by severity for threshold filtering and routing. |
| [LoggerType](SAIF.NetCore.Services.Contracts/LoggerType.md) | Enum | `SAIF.NetCore.Services.Contracts` | Identify which backing log store/channel a log entry targets. |
| [SystemType](SAIF.NetCore.Services.Contracts/SystemType.md) | Enum | `SAIF.NetCore.Services.Contracts` | Distinguish host application categories so secure settings and system hashes can be scoped correctly per host type. |
| [UserGroup](SAIF.NetCore.Services.Contracts/UserGroup.md) | Class | `SAIF.NetCore.Services.Contracts` | Provide a default, directly-constructible implementation of `IUserGroup`. |
| [UserProfile](SAIF.NetCore.Services.Contracts/UserProfile.md) | Class | `SAIF.NetCore.Services.Contracts` | Provide a default, directly-constructible implementation of `IUserProfile` for callers that do not need a custom profile shape. |

### OIDC-related contracts

| Type | Kind | Namespace | Purpose |
| --- | --- | --- | --- |
| [CharacterCasing](SAIF.NetCore.Services.Contracts/CharacterCasing.md) | Enum | `SAIF.NetCore.Services.Contracts` | Describe the three casing policies a URL-casing middleware can enforce. |
| [IClaimTransformCacheService](SAIF.NetCore.Services.Contracts/IClaimTransformCacheService.md) | Interface | `SAIF.NetCore.Services.Contracts` | Record and query whether claim transformation has already been performed for a given subject within the current cache window (governed by `IOidcSettings.RoleTransformCacheOffset`*). |
| [IDataProtectionCertService](SAIF.NetCore.Services.Contracts/IDataProtectionCertService.md) | Interface | `SAIF.NetCore.Services.Contracts` | Retrieve the certificate used to encrypt/decrypt Data Protection keys for this application. |
| [IJwtAuthorizationCookieClaimService](SAIF.NetCore.Services.Contracts/IJwtAuthorizationCookieClaimService.md) | Interface | `SAIF.NetCore.Services.Contracts` | Persist new or refreshed JWT token values (ID token, access token, expiry) into the current authentication cookie. |
| [IJwtRefreshService](SAIF.NetCore.Services.Contracts/IJwtRefreshService.md) | Interface | `SAIF.NetCore.Services.Contracts` | Exchange a refresh token (plus client credentials) for a new access/ID token pair. |
| [ILoginRedirectService](SAIF.NetCore.Services.Contracts/ILoginRedirectService.md) | Interface | `SAIF.NetCore.Services.Contracts` | Redirect the current request to the configured identity provider login endpoint, optionally carrying additional query-string parameters. |
| [IOidcSettings](SAIF.NetCore.Services.Contracts/IOidcSettings.md) | Interface | `SAIF.NetCore.Services.Contracts` | Expose every OIDC/cookie/data-protection setting needed to configure the OIDC authentication pipeline in one contract, including an indexer for ad hoc key lookups. |
| [IRoleClaimService](SAIF.NetCore.Services.Contracts/IRoleClaimService.md) | Interface | `SAIF.NetCore.Services.Contracts` | Add role claims of a specified claim type to an authenticated principal. |
| [IUrlCaseService](SAIF.NetCore.Services.Contracts/IUrlCaseService.md) | Interface | `SAIF.NetCore.Services.Contracts` | Normalize or validate the casing of the current request's URL according to a configured `CharacterCasing` policy. |
| [JwtSet](SAIF.NetCore.Services.Contracts/JwtSet.md) | Class | `SAIF.NetCore.Services.Contracts` | Carry a refreshed token pair and its expiration back to the caller for cookie or header updates. |
| [OidcAppCredentials](SAIF.NetCore.Services.Contracts/OidcAppCredentials.md) | Struct | `SAIF.NetCore.Services.Contracts` | Parse and validate a `clientId\|clientSecret` formatted string into two readonly fields usable by OIDC client-registration code. |

### Web error handling contracts

| Type | Kind | Namespace | Purpose |
| --- | --- | --- | --- |
| [ExceptionEnum](SAIF.NetCore.Services.Contracts/ExceptionEnum.md) | Enum | `SAIF.NetCore.Services.Contracts` | Let an `IErrorHandlerHook` implementation branch its handling logic based on the exception's category without a full type check. |
| [HttpStatusCodeException](SAIF.NetCore.Services.Contracts/HttpStatusCodeException.md) | Class | `SAIF.NetCore.Services.Contracts` | Let throwing code specify exactly which HTTP status code and content type the web error handler should return for this error. |
| [IErrorHandleable](SAIF.NetCore.Services.Contracts/IErrorHandleable.md) | Interface | `SAIF.NetCore.Services.Contracts` | Mark a service as an injectable error-handling hook so `DynamicErrorHandler` can discover and invoke it. |
| [IErrorHandlerHook](SAIF.NetCore.Services.Contracts/IErrorHandlerHook.md) | Interface | `SAIF.NetCore.Services.Contracts` | Receive error context (exception category, `HttpContext`, exception, status code, and accumulated log details) and perform custom handling logic. |
| [SAIFException](SAIF.NetCore.Services.Contracts/SAIFException.md) | Class | `SAIF.NetCore.Services.Contracts` | Serve as the common base type for application-level exceptions thrown by implementation libraries. |

### Windows service error handling contracts

| Type | Kind | Namespace | Purpose |
| --- | --- | --- | --- |
| [BeginErrorHandlingEventArgs](SAIF.NetCore.Services.Contracts/BeginErrorHandlingEventArgs.md) | Class | `SAIF.NetCore.Services.Contracts` | Let a `BeginErrorHandling` subscriber inspect the exception/context and optionally mark the error as already handled or suppress special actions. |
| [BeginHandlingEvent](SAIF.NetCore.Services.Contracts/BeginHandlingEvent.md) | Delegate | `SAIF.NetCore.Services.Contracts` | Define the callback shape subscribers must implement to observe/modify the start of Windows-service error handling. |
| [ErrorHandledEvent](SAIF.NetCore.Services.Contracts/ErrorHandledEvent.md) | Delegate | `SAIF.NetCore.Services.Contracts` | Define the callback shape subscribers must implement to observe the final outcome of Windows-service error handling. |
| [ErrorHandledEventArgs](SAIF.NetCore.Services.Contracts/ErrorHandledEventArgs.md) | Class | `SAIF.NetCore.Services.Contracts` | Carry the final outcome of error handling (exception, handled flag, special-action results, and context) to `ErrorHandled` subscribers; the constructor assigns the supplied references as get-only properties without deep-copying them. |
| [IErrorContextContainer](SAIF.NetCore.Services.Contracts/IErrorContextContainer.md) | Interface | `SAIF.NetCore.Services.Contracts` | Let error-handling code attach and later retrieve arbitrary context objects, either anonymously or by key. |
| [IServiceTaskRunner](SAIF.NetCore.Services.Contracts/IServiceTaskRunner.md) | Interface | `SAIF.NetCore.Services.Contracts` | Let a Windows service define a single long-running, cancellable background task with a display title. |
| [ISpecialErrorAction](SAIF.NetCore.Services.Contracts/ISpecialErrorAction.md) | Interface | `SAIF.NetCore.Services.Contracts` | Let a Windows service register custom remediation/notification logic that runs in response to specific errors. |
| [ISpecialErrorAction<T>](SAIF.NetCore.Services.Contracts/ISpecialErrorActionT.md) | Interface | `SAIF.NetCore.Services.Contracts` | Let a special error action declare, via its generic parameter, which specific exception type it is meant to handle, without changing its runtime contract. |
| [IWindowsServiceErrorHandler](SAIF.NetCore.Services.Contracts/IWindowsServiceErrorHandler.md) | Interface | `SAIF.NetCore.Services.Contracts` | Drive a Windows service's error-handling pipeline: run configured special actions, honor shutdown-exempt exception types, and notify subscribers before and after handling. |
| [ShutdownExemptExceptionType](SAIF.NetCore.Services.Contracts/ShutdownExemptExceptionType.md) | Class | `SAIF.NetCore.Services.Contracts` | Let a Windows service declare that errors of a specific exception type should not shut the service down, optionally narrowed by a predicate over the exception instance. |
| [SigningKeyCacheStatus](SAIF.NetCore.Services.Contracts/SigningKeyCacheStatus.md) | Enum | `SAIF.NetCore.Services.Contracts` | Describe the cache state of a signing-key lookup (intended for JWT signing-key caching, per the excluded `ISigningKeysCache` contract). |
| [SpecialErrorActionResult](SAIF.NetCore.Services.Contracts/SpecialErrorActionResult.md) | Class | `SAIF.NetCore.Services.Contracts` | Record which special action ran, its title, its status, and any exception it produced. |
| [SpecialErrorActionStatus](SAIF.NetCore.Services.Contracts/SpecialErrorActionStatus.md) | Enum | `SAIF.NetCore.Services.Contracts` | Classify whether a special error action ran, succeeded, or failed. |

## Related documentation
- [Index](../index.md)
- [Architecture](../architecture.md)
- [Dependencies](../dependencies.md)
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [API reference](../api/index.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts. Statements marked with `**` could not be confirmed; treat
> as unknown until verified.

## Sources
- `src/SAIF.NetCore.ServiceContracts/SAIF.NetCore.ServiceContracts/SAIF.NetCore.ServiceContracts/SAIF.NetCore.ServiceContracts.csproj`
