package io.kaif.service; import java.util.List; import java.util.Optional; import io.kaif.model.account.Authorization; import io.kaif.model.clientapp.ClientApp; import io.kaif.model.clientapp.ClientAppUser; import io.kaif.model.clientapp.ClientAppUserAccessToken; import io.kaif.oauth.OauthAccessTokenDto; import io.kaif.web.support.AccessDeniedException; public interface ClientAppService { ClientApp create(Authorization authorization, String name, String description, String callbackUri); ClientApp loadClientAppWithoutCache(String clientId); List<ClientApp> listClientApps(Authorization creator); void update(Authorization creator, String clientId, String name, String description, String callbackUri); Optional<ClientApp> verifyRedirectUri(String clientId, String redirectUri); String directGrantCode(String oauthDirectAuthorize, String clientId, String scope, String redirectUri) throws AccessDeniedException; OauthAccessTokenDto createOauthAccessTokenByGrantCode(String code, String clientId, String redirectUri) throws AccessDeniedException; Optional<ClientAppUserAccessToken> verifyAccessToken(String rawAccessToken); List<ClientAppUser> listGrantedAppUsers(Authorization authorization); void resetClientAppSecret(Authorization creator, String clientId); void revokeApp(Authorization user, String clientId); boolean validateApp(String clientId, String clientSecret); List<ClientApp> listGrantedApps(Authorization user); String generateDebugAccessToken(Authorization developer, String clientId); }