= 주소록

== 개요
Knox Portal에서 제공하는 연락처 관련 Rest API 를 이용한 연계 서비스 제공

=== Knox REST API 연계 서비스 신청
Knox REST API 연계 서비스 신청은 <<_knox_rest_api_연계_서비스_신청,Knox REST API 연계 서비스 신청>> 항목을 참조한다.

=== Knox Rest 연락처 연계 설정
메일, 결재 Knox Rest API 연계와 마찬가지로 연계를 위한 사전 준비가 되었다면, knox.properties 에 연락처 관련 설정이 되어 있는지 확인한다.

.knox.properties
[source,properties]
----
knox.pims-service=/pims/contacts/api/v2.0
----

=== Knox 연락처 연계 서비스
REST를 통해서 연락처를 연계하는 서비스로 주요 메서드는 KnoxContactService 인터페이스에 정의되어 있다.

[source, java]
----
public interface KnoxContactService {

	/**
	 * 연락처 그룹 생성
	 * @param contactGroupDto
	 * @param userId
	 * @return
	 */
	ContactGroupDto createGroup(ContactGroupDto contactGroupDto, String userId);

	/**
	 * 연락처 그룹 수정
	 * @param groupId
	 * @param contactGroupDto
	 * @param userId
	 * @return
	 */
	ContactGroupDto updateGroup(String groupId, ContactGroupDto contactGroupDto, String userId);

    /**
     * 연락처 그룹 삭제
     * @param groupId
     * @param userId
     * @return
     */
	String deleteGroup(String groupId, String userId);

	/**
	 * 연락처 그룹 조회
	 * @param groupId
	 * @param userId
	 * @return
	 */
	ContactGroupDto getGroup(String groupId, String userId);

    /**
     * 연락처 그룹 목록 조회
     * @param pubType
     * @param userId
     * @return
     */
	ContactGroupDto[] getGroups(String pubType, String userId);

	/**
	 * 연락처 생성
	 * @param contactDto
	 * @param userId
	 * @return
	 */
	ContactDto createCard(ContactDto contactDto, String userId);

	/**
	 * 연락처 수정
	 * @param contactId
	 * @param contactDto
	 * @param userId
	 * @return
	 */
	ContactDto updateCard(String contactId, ContactDto contactDto, String userId);

	/**
	 * 연락처 삭제
	 * @param contactId
	 * @param userId
	 * @return
	 */
	String deleteCard(String contactId, String userId);

	/**
	 * 연락처 조회
	 * @param contactId
	 * @param userId
	 * @return
	 */
	ContactDto getCard(String contactId, String userId);

	/**
	 * 연락처 목록 조회
	 * @param pubType
	 * @param userId
	 * @return
	 */
	ContactDto[] getCards(String pubType, String userId);

	/**
	 * KNOX REST GET MAPPING 
	 * @param <T>
	 * @param methodName
	 * @param params
	 * @param paths
	 * @param classType
	 * @return
	 */
	<T> T contactsGet(String methodName, MultiValueMap<String, String> params, Map<String, String> paths, Class<T> classType);

	/**
	 * KNOX REST POST MAPPING
	 * @param <T>
	 * @param methodName
	 * @param bodyMap
	 * @param params
	 * @param paths
	 * @param classType
	 * @return
	 */
	<T> T contactsPost(String methodName, Map<String, Object> bodyMap, MultiValueMap<String, String> params, Map<String, String> paths, Class<T> classType);
}
----

자세한 API 스펙은 Swagger API 문서의 knox-contact-controller 항목을 참고한다.
