With the introduction of API keys, we cannot expect all API implementations to implement the full API. Some might want to only implement the free part (checking for leaked passwords), others might want to introduce the whole API. To accommodate this, we must introduce a series of specialized interfaces:
IHaveIBeenPwnedBreachesClient will implement IHaveIBeenPwnedPasswordClient, IHaveIBeenPwnedPastesClient and IHaveIBeenPwnedBreachesClient so this won't be a breaking change. This guarantees we won't introduce a breaking change with these changes.
With the introduction of API keys, we cannot expect all API implementations to implement the full API. Some might want to only implement the free part (checking for leaked passwords), others might want to introduce the whole API. To accommodate this, we must introduce a series of specialized interfaces:
IHaveIBeenPwnedPasswordClient
interface for checking pwned passwords at [the IsPwnedPasswords API](https://haveibeenpwned.com/API/v3;IHaveIBeenPwnedPastesClient
interface for checking the pastes of an account at the IsPwnedPasswords API.IHaveIBeenPwnedBreachesClient
interface for checking the breaches for a user at the the IsPwnedPasswords API;IHaveIBeenPwnedBreachesClient
will implementIHaveIBeenPwnedPasswordClient
,IHaveIBeenPwnedPastesClient
andIHaveIBeenPwnedBreachesClient
so this won't be a breaking change. This guarantees we won't introduce a breaking change with these changes.