---
title: API reference index
summary: Index of all public types documented for this library.
status: draft
owner: SAIF Platform Team
last_reviewed: 2026-10-02
library: SAIF.NetCore.PingableService
reference_type: package
---

# API reference index

7 public types are exposed by `SAIF.NetCore.PingableService`: 2 interfaces, 3 concrete classes, and 2 static extension classes, supporting 1 HTTP endpoint (`GET /Ping`) and 4 public extension methods.

## Types

| Type | Kind | Namespace | Purpose |
| --- | --- | --- | --- |
| [`IPingableService`](SAIF.NetCore.Services.PingableService/IPingableService.md) | Interface (C# 8 default interface implementations) | `SAIF.NetCore.Services.PingableService` | Mixin contract that any service or controller implements to participate in ping health checks; its default `PingAsync` orchestrates `Ping` plus the `IsThrowablePingError`/`OnPingFailure`/`OnPingSuccess` hooks so most implementers need no custom code at all. |
| [`PingableController`](SAIF.NetCore.Services.PingableService.Controllers/PingableController.md) | Class : `ControllerBase` | `SAIF.NetCore.Services.PingableService.Controllers` | The anonymous `GET /Ping` endpoint; resolves every DI-registered and controller-discovered `IPingableService` target, runs all pings concurrently, and returns the run id on success or throws `PingServiceException` on any failure. |
| [`PingServiceException`](SAIF.NetCore.Services.PingableService.Exceptions/PingServiceException.md) | Class : `HttpStatusCodeException` | `SAIF.NetCore.Services.PingableService.Exceptions` | The HTTP 500 exception type that reports any ping failure, including flattened concurrent failures from a faulted `Task.WhenAll`. |
| [`IServiceCollectionExtensions`](SAIF.NetCore.Services.PingableService.Extensions/IServiceCollectionExtensions.md) | Static class | `SAIF.NetCore.Services.PingableService.Extensions` | Dual-registers a host's own service under both its own type and `IPingableService`, with a forwarding factory, so `PingableController.Get` discovers it. |
| [`MvcBuilderExtensions`](SAIF.NetCore.Services.PingableService.Extensions/MvcBuilderExtensions.md) | Static class | `SAIF.NetCore.Services.PingableService.Extensions` | Adds `PingableController`'s assembly as an MVC application part and registers the singleton `IControllerRetriever` that enables controller-based ping discovery. |
| [`IControllerRetriever`](SAIF.NetCore.Services.PingableService.Services/IControllerRetriever.md) | Interface | `SAIF.NetCore.Services.PingableService.Services` | Contract for discovering and resolving MVC controllers that implement `IPingableService` from the host's DI container. |
| [`ControllerRetriever`](SAIF.NetCore.Services.PingableService.Services/ControllerRetriever.md) | Class : `IControllerRetriever` | `SAIF.NetCore.Services.PingableService.Services` | Reflection-based implementation of `IControllerRetriever`: scans snapshotted application parts for types implementing both `IPingableService` and `ControllerBase`, then resolves each from DI by concrete type. |

## Related documentation
- [Index](../index.md)
- [Overview](../overview.md)
- [Architecture](../architecture.md)
- [Dependencies](../dependencies.md)
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [Security and authorization](../security-authorization.md)
- [Service registration](../service-registration.md)

## Sources
- `src/SAIF.NetCore.PingableService/SAIF.NetCore.PingableService/IPingableService.cs`
- `src/SAIF.NetCore.PingableService/SAIF.NetCore.PingableService/Controllers/PingableController.cs`
- `src/SAIF.NetCore.PingableService/SAIF.NetCore.PingableService/Exceptions/PingServiceException.cs`
- `src/SAIF.NetCore.PingableService/SAIF.NetCore.PingableService/Extensions/IServiceCollectionExtensions.cs`
- `src/SAIF.NetCore.PingableService/SAIF.NetCore.PingableService/Extensions/MvcBuilderExtensions.cs`
- `src/SAIF.NetCore.PingableService/SAIF.NetCore.PingableService/Services/IControllerRetriever.cs`
- `src/SAIF.NetCore.PingableService/SAIF.NetCore.PingableService/Services/ControllerRetriever.cs`
