using System;
using xModels.Dtos;
using System.Threading;
using xAiModels.Models;
using xAiModels.Models.Dtos;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using Microsoft.AspNetCore.Http;
namespace xAiApi.Interfaces
{
public interface IXAiServiceControllerBase
{
//
#region Actions ...
///
/// Ask Question and Get Response ...
///
///
///
///
[HttpGet("AskText")]
Task> AskText(
[FromQuery] string question,
CancellationToken cancellationToken = default
);
///
/// Ask Question and Get Response Stream ...
///
///
///
///
[HttpGet("AskTextStream")]
Task AskTextStream(
[FromQuery] string question,
CancellationToken cancellationToken = default
);
#endregion
//
#region Loaders ...
///
/// Retrieve AI Projects ...
///
///
///
///
[HttpGet("Projects")]
Task>> LoadProjects(
[FromQuery] bool includeDefaults = false,
CancellationToken cancellationToken = default
);
///
/// Retrieve Specified AI Project's Conversations ...
///
///
///
///
[HttpGet("Projects/{projectId}/Conversations")]
Task>> LoadConversations(
[FromRoute] Guid projectId,
CancellationToken cancellationToken = default
);
///
/// Retrieve Specified AI Conversation's Messages ...
///
///
///
///
[HttpGet("Conversations/{conversationId}/Messages")]
Task>> LoadMessages(
[FromRoute] Guid conversationId,
CancellationToken cancellationToken = default
);
#endregion
//
#region Queries ...
///
/// Query Projects ...
///
///
///
///
///
///
[HttpGet("Projects/Query")]
Task>> QueryProjects(
[FromQuery] XQuery query,
CancellationToken cancellationToken = default
);
///
/// Query Conversations ...
///
///
///
///
///
[HttpGet("Projects/{projectId}/Conversations/Query")]
Task>> QueryConversations(
[FromRoute] Guid projectId,
[FromQuery] XQuery query,
CancellationToken cancellationToken = default
);
///
/// Query Messages ...
///
///
///
///
///
[HttpGet("Conversations/{conversationId}/Messages/Query")]
Task>> QueryMessages(
[FromRoute] Guid conversationId,
[FromQuery] XQuery query,
CancellationToken cancellationToken = default
);
#endregion
//
#region Creators ...
///
/// Create an AI Project ...
///
///
///
///
[HttpPost("Projects")]
Task> CreateProject(
[FromBody] XAiProjectDto item,
CancellationToken cancellationToken = default
);
///
/// Create an AI Conversation ...
///
///
///
///
///
[HttpPost("Projects/{projectId}/Conversations")]
Task> CreateConversation(
[FromRoute] Guid projectId,
[FromBody] XAiConversationDto item,
CancellationToken cancellationToken = default
);
#endregion
//
#region Data Actions ...
///
/// Ask Question and Get Response ...
///
///
///
///
[HttpPost("Ask")]
Task> Ask(
[FromBody] XAiResponseRequest request,
CancellationToken cancellationToken = default
);
///
/// Ask Question and Get Response Stream ...
///
///
///
///
[HttpPost("AskStream")]
Task AskStream(
[FromBody] XAiResponseRequest request,
CancellationToken cancellationToken = default
);
///
/// Ask Question with Files and Get Response ...
///
///
///
///
[HttpPost("AskWithFiles")]
[Consumes("multipart/form-data")]
Task> AskWithFiles(
[FromForm] XAiResponseRequest request,
[FromForm] IFormFileCollection files,
CancellationToken cancellationToken = default
);
#endregion
}
}