package tech.easyflow.ai.service;

import tech.easyflow.system.entity.SysApiKey;

import java.math.BigInteger;

/**
 * 工作流 Public API 访问令牌授权服务。
 */
public interface WorkflowApiPermissionService {

    /**
     * 工作流资源类型。
     */
    String RESOURCE_TYPE_WORKFLOW = "WORKFLOW";

    /**
     * 工作流 Public API 调用动作范围。
     */
    String ACTION_SCOPE_INVOKE = "INVOKE";

    /**
     * 按访问令牌维度开启或关闭工作流 Public API 调用授权。
     *
     * @param apiKeyId 系统访问令牌 ID
     * @param enabled 是否启用工作流 API 调用授权
     */
    void replaceWorkflowApiEnabled(BigInteger apiKeyId, boolean enabled);

    /**
     * 断言当前令牌具备工作流 Public API 调用权限。
     *
     * @param apiKey 原始访问令牌
     * @param requestUri 请求地址
     * @return 已校验通过的访问令牌实体
     */
    SysApiKey assertWorkflowApi(String apiKey, String requestUri);
}
