thalos-bff/src/Thalos.Bff.Application/Adapters/IIdentityEdgeContractAdapter.cs
2026-02-22 04:10:17 -06:00

48 lines
1.9 KiB
C#

using Thalos.Bff.Application.Contracts;
using Thalos.Bff.Contracts.Api;
using Thalos.Service.Identity.Abstractions.Contracts;
namespace Thalos.Bff.Application.Adapters;
/// <summary>
/// Defines adapter boundary between external edge contracts and thalos-service contracts.
/// </summary>
public interface IIdentityEdgeContractAdapter
{
/// <summary>
/// Maps API request into identity policy evaluation request.
/// </summary>
/// <param name="request">External API request.</param>
/// <param name="permissionCode">Permission code to evaluate.</param>
/// <returns>Identity policy request.</returns>
EvaluateIdentityPolicyRequest ToPolicyRequest(IssueTokenApiRequest request, string permissionCode);
/// <summary>
/// Maps API request into identity token issuance request.
/// </summary>
/// <param name="request">External API request.</param>
/// <returns>Identity token issuance request.</returns>
IssueIdentityTokenRequest ToIssueTokenRequest(IssueTokenApiRequest request);
/// <summary>
/// Maps identity token issuance response into edge API response.
/// </summary>
/// <param name="response">Identity token issuance response.</param>
/// <returns>External API response.</returns>
IssueTokenApiResponse ToIssueTokenApiResponse(IssueIdentityTokenResponse response);
/// <summary>
/// Maps refresh API request into internal refresh contract.
/// </summary>
/// <param name="request">External refresh API request.</param>
/// <returns>Internal refresh request.</returns>
RefreshIdentitySessionRequest ToRefreshSessionRequest(RefreshSessionApiRequest request);
/// <summary>
/// Maps internal refresh response into external API response.
/// </summary>
/// <param name="response">Internal refresh response.</param>
/// <returns>External API response.</returns>
RefreshSessionApiResponse ToRefreshSessionApiResponse(RefreshIdentitySessionResponse response);
}