= 임직원

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

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

=== Knox임직원 연계 설정
Knox REST API 연계 서비스 신청이 되었다면, 발급받은 `system-id`, `token` 값을 설정한다. 

.knox.properties (스테이지)
[source,properties]
----
knox.system-id=xxxxxxxxxxx
knox.token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
knox.address.prefix=openapi.samsung.net
knox.emp-service=/employee/api/v2.0
----

.knox.properties (운영)
[source,properties]
----
knox.system-id=xxxxxxxxxxx
knox.token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   // <1>
knox.address.prefix=openapi.samsung.net,openapi.w1.samsung.net,openapi.w2.samsung.net   # <2>
knox.emp-service=/employee/api/v2.0
----
<1> 토큰 (comma(,)로 구분, 거점 순서와 동일)
<2> 거점 (국내, 구주, 미주)

=== Knox임직원 API 연계 서비스
Knox REST API 연계를 통해서 임직원 및 조직 정보 조회 기능을 제공하는 서비스로 주요 메서드는 KnoxUserService 인터페이스에 정의되어 있다.

KnoxUserService는 시스템에서 임직원 및 조직 정보를 조회할때 필요한 API들을 제공한다.

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

    /**
     * Knox 임직원 조회(By EpId)
     * @param epId EP ID
     * @return Knox 사용자
     */
    Employee[] getKnoxEmployeesByEpId(String epId);

    /**
     * Knox 임직원 조회(By UserName)
     * @param userName 사용자 이름
     * @return Knox 사용자
     */
    Employee[] getKnoxEmployeesByUserName(String userName);

    /**
     * Knox 임직원 조회(By KnoxId)
     * @param knoxId Knox ID
     * @return Knox 사용자
     */
    Employee[] getKnoxEmployeesByKnoxId(String knoxId);

    /**
     * Knox 임직원 조회(By Email)
     * @param email 이메일
     * @return Knox 사용자
     */
    Employee[] getKnoxEmployeesByEmail(String email);

    /**
     * Knox 조직도 조회(By CompanyCode)
     * @param companyCode 회사 코드
     * @return Knox 조직도
     */
    Organization[] getKnoxOrganizationsByCompanyCode(String companyCode);

    /**
     * Knox 조직도 조회(By DepartmentCode)
     * @param companyCode 회사 코드
     * @param departmentCode 부서 코드
     * @return Knox 조직도
     */
    Organization[] getKnoxOrganizationsByDepartmentCode(String companyCode, String departmentCode);

    /**
     * Knox 직급 조회
     * @param companyCode 회사 코드
     * @return Knox 직급
     */
    Title[] getKnoxTitles(String companyCode);
}
----

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