feat(api,core,infra): refactor endpoint routing and add institution account discovery

- Move login and refresh endpoints under a unified /auth route group
- Relocate institution connection logic from /accounts to /institutions
- Implement GET /institutions/{id}/available to fetch real-time Plaid
accounts
- Introduce HttpRequestBuilder utility to streamline integration testing
- Enhance PlaidService with GetAccountsAsync to support account fetching
- Clean up global usings and project structure for better domain
isolation
This commit is contained in:
Stevan Freeborn
2026-02-14 06:46:05 -06:00
parent 32cf48bf36
commit dad2ceb450
27 changed files with 549 additions and 287 deletions
@@ -1,3 +1,4 @@
namespace FiscalOS.Infra.Accounts.Plaid;
public sealed class PlaidService
@@ -30,6 +31,21 @@ public sealed class PlaidService
return (ptr.ItemId, ptr.AccessToken);
}
public async Task<List<Going.Plaid.Entity.Account>> GetAccountsAsync(string accessToken)
{
var ar = await _client.AccountsGetAsync(new()
{
AccessToken = accessToken,
}).ConfigureAwait(false);
if (ar.IsSuccessStatusCode is false)
{
throw new PlaidException("Unable to retrieve accounts");
}
return [.. ar.Accounts];
}
public async Task<ItemWithConsentFields> GetItemAsync(string accessToken)
{
var ar = await _client.ItemGetAsync(new()
@@ -44,4 +60,4 @@ public sealed class PlaidService
return ar.Item;
}
}
}