62 lines
2.0 KiB
C#
62 lines
2.0 KiB
C#
using Asentrafin.Api.Contracts.Plaid;
|
|
using Asentrafin.Api.Services.Plaid;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Asentrafin.Api.Controllers;
|
|
|
|
[ApiController]
|
|
[Route("api/plaid")]
|
|
public class PlaidIngestionController(IPlaidIngestionService ingestionService) : ControllerBase
|
|
{
|
|
[HttpPost("items")]
|
|
public async Task<ActionResult<object>> CreateItem(
|
|
CreatePlaidItemRequest request,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
var itemId = await ingestionService.CreateItemAsync(request, cancellationToken);
|
|
return CreatedAtAction(nameof(CreateItem), new { itemId }, new { itemId });
|
|
}
|
|
|
|
[HttpPost("items/{itemId:guid}/ingest/accounts")]
|
|
public async Task<ActionResult<IngestionSummary>> IngestAccounts(
|
|
Guid itemId,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
return Ok(await ingestionService.IngestAccountsAsync(itemId, cancellationToken));
|
|
}
|
|
|
|
[HttpPost("items/{itemId:guid}/ingest/transactions")]
|
|
public async Task<ActionResult<IngestionSummary>> IngestTransactions(
|
|
Guid itemId,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
return Ok(await ingestionService.IngestTransactionsAsync(itemId, cancellationToken));
|
|
}
|
|
|
|
[HttpPost("items/{itemId:guid}/ingest/investments")]
|
|
public async Task<ActionResult<IngestionSummary>> IngestInvestments(
|
|
Guid itemId,
|
|
InvestmentIngestionRequest request,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
return Ok(await ingestionService.IngestInvestmentsAsync(
|
|
itemId,
|
|
request.StartDate,
|
|
request.EndDate,
|
|
cancellationToken));
|
|
}
|
|
|
|
[HttpPost("items/{itemId:guid}/ingest/all")]
|
|
public async Task<ActionResult<IngestionSummary>> IngestAll(
|
|
Guid itemId,
|
|
InvestmentIngestionRequest request,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
return Ok(await ingestionService.IngestAllAsync(
|
|
itemId,
|
|
request.StartDate,
|
|
request.EndDate,
|
|
cancellationToken));
|
|
}
|
|
}
|