/*
* Copyright 2009, OpenIAM LLC
* This file is part of the OpenIAM Identity and Access Management Suite
*
* OpenIAM Identity and Access Management Suite is free software:
* you can redistribute it and/or modify
* it under the terms of the GNU General Public License
* version 3 as published by the Free Software Foundation.
*
* OpenIAM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* Lesser GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenIAM. If not, see <http://www.gnu.org/licenses/>. *
*/
/**
*
*/
package org.openiam.provision.service;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import org.openiam.base.ws.Response;
import org.openiam.idm.srvc.user.dto.UserStatusEnum;
import org.openiam.provision.dto.AccountLockEnum;
import org.openiam.provision.dto.PasswordSync;
import org.openiam.provision.dto.ProvisionGroup;
import org.openiam.provision.dto.ProvisionUser;
import org.openiam.provision.resp.LookupUserResponse;
import org.openiam.provision.resp.PasswordResponse;
import org.openiam.provision.resp.ProvisionUserResponse;
/**
* <code>ProvisionService</code> Interface for the Provisioning service which is used for provisioning users.
* @author suneet
*
*/
@WebService(targetNamespace = "http://www.openiam.org/service/provision", name="ProvisionControllerService")
public interface ProvisionService {
/**
* Operation validates the connection information that was supplied for this managed system
* @param managedSysId
* @return
*/
@WebMethod
public Response testConnectionConfig(
@WebParam(name = "managedSysId", targetNamespace = "")
String managedSysId);
/**
* The addUser operation enables a requestor to create a new user on the target systems
*/
@WebMethod
public ProvisionUserResponse addUser(
@WebParam(name = "user", targetNamespace = "")
ProvisionUser user);
/**
* The modifyUser operation enables the requestor to modify an existing user in appropriate target systems
*/
@WebMethod
public ProvisionUserResponse modifyUser(
@WebParam(name = "user", targetNamespace = "")
ProvisionUser user);
/**
* The deleteUser operation enables the requestor to delete an existing user from the appropriate target systems
*/
@WebMethod
public ProvisionUserResponse deleteUser(
@WebParam(name = "securityDomain", targetNamespace = "")
String securityDomain,
@WebParam(name = "managedSystemId", targetNamespace = "")
String managedSystemId,
@WebParam(name = "principal", targetNamespace = "")
String principal,
@WebParam(name="status", targetNamespace="")
UserStatusEnum status,
@WebParam(name="requestorId", targetNamespace="")
String requestorId);
@WebMethod
public ProvisionUserResponse deleteByUserId(
@WebParam(name = "user", targetNamespace = "")
ProvisionUser user,
@WebParam(name="status", targetNamespace="")
UserStatusEnum status,
@WebParam(name="requestorId", targetNamespace="")
String requestorId);
/**
* The setPassword operation enables a requestor to specify a new password for an user across target systems
* @param request
* @return
*/
@WebMethod
public Response setPassword(
@WebParam(name = "passwordSync", targetNamespace = "")
PasswordSync passwordSync);
public Response syncPasswordFromSrc(
@WebParam(name = "passwordSync", targetNamespace = "")
PasswordSync passwordSync);
@WebMethod
public PasswordResponse resetPassword(
@WebParam(name = "passwordSync", targetNamespace = "")
PasswordSync passwordSync);
/**
* The addGroup operation enables a requestor to create a new group on the target systems
*/
@WebMethod
ProvisionGroup addGroup(@WebParam(name = "group", targetNamespace = "")
ProvisionGroup group);
/**
* The modifyGroup operation enables the requestor to modify an existing Group in appropriate target systems
*/
@WebMethod
ProvisionGroup modifyGroup(
@WebParam(name = "group", targetNamespace = "")
ProvisionGroup group);
/**
* The deleteGroup operation enables the requestor to delete an existing group from the appropriate target systems
*/
@WebMethod
ProvisionGroup deleteGroup(
@WebParam(name = "groupId", targetNamespace = "")
String groupId);
/**
* Operation locks or unlocks an account. If the operation flag is true, then the user is locked. Otherwise
* its is unlocked.
* @param userId
* @param operation
* @return
*/
@WebMethod
Response lockUser(
@WebParam(name = "userId", targetNamespace = "")
String userId,
@WebParam(name = "operation", targetNamespace = "")
AccountLockEnum operation,
@WebParam(name = "requestorId", targetNamespace = "")
String requestorId);
/**
* Operation disables or un-disables an account. If the operation flag is true, then the user is disabled. Otherwise
* its is disabled.
* @param userId
* @param operation
* @return
*/
@WebMethod
Response disableUser(
@WebParam(name = "userId", targetNamespace = "")
String userId,
@WebParam(name = "operation", targetNamespace = "")
boolean operation,
@WebParam(name = "requestor", targetNamespace = "")
String requestorId);
@WebMethod
LookupUserResponse getTargetSystemUser(
@WebParam(name = "principalName", targetNamespace = "")
String principalName,
@WebParam(name = "managedSysId", targetNamespace = "")
String managedSysId);
@WebMethod
LookupUserResponse getTargetSystemUserWithUserId(
@WebParam(name = "userId", targetNamespace = "")
String userId,
@WebParam(name = "managedSysId", targetNamespace = "")
String managedSysId);
}