✅ 해당 기능이 제공되는 다우오피스 상품 유형
| 무료 | 서비스형 | 엔터프라이즈형 | HR형 | ||
|---|---|---|---|---|---|
| 스탠다드 | 스탠다드 | 프리미엄 | 스탠다드 | 프리미엄 | HR |
| ❌ | ❌ | ❌ | |||
다우오피스 OpenAPI를 연동하기 위해 필수인 인증키(Client ID / Client Secret) 의 발급, 조회, 재발급 절차를 통합 정리한 가이드입니다.
- 모든 OpenAPI 호출은 인증키(Client ID / Client Secret) 필요
- 인증키는 고객사 단위로 발급되며, 발급 API를 여러 번 호출해도 동일한 키로 반환
- Client Secret은 시스템 정책에 따라 주기적으로 변경될 수 있으므로, 외부 저장 없이 호출 시마다 불러오는 방식 권장
- 주요 기능 : 인증키 발급 → 인증키 조회 → 인증키 재발급
- 모든 OpenAPI 호출은 시스템연동 서버(DOAS : https://api.daouoffice.com)로 수행
✅ 전체 연동 흐름
- 최초 연동 시 인증키 발급 API로 Client ID / Secret 발급
- 필요 시 인증키 조회 API로 현재 발급된 값 확인
- 보안 이슈나 Secret 변경 필요 시 인증키 재발급 API 사용
인증키 발급 API
고객사가 다우오피스 API를 연동하려면 먼저 인증키(Client ID / Client Secret)를 발급받아야 합니다.
- 고객사당 1개 발급
- 발급된 키는 재발급하거나 삭제하기 전까지 고정
- 발급 API를 여러 번 호출해도 같은 키가 반환됩니다
- Secret 값은 시스템 정책에 따라 주기적으로 변경될 수 있으므로, 연동 시스템은 값을 저장하지 말고 불러와서 사용하는 방식 권장
✔️ Request URL
https://api.daouoffice.com/public/v2/alliance/company
다우오피스 OpenAPI 서비스는 시스템연동 서버로 API 호출을 진행하기 때문에 별도 고객사 그룹웨어 URL이 아닌 https://api.daouoffice.com 사용
✔️ HTTP Method
POST (Content-Type: application/json; charset=UTF-8)
✉️ Request Body
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| siteUrl | String | ✅ | ✅ |
고객사 다우오피스 접속 URL 예) abc.daouoffice.com |
| adminId | String | ✅ | ✅ | 다우오피스 최고 관리자 계정 (이메일 형식) |
| adminPw | String | ✅ | ✅ | 최고 관리자 비밀번호 |
| apiType | String | ✅ | ⛔ | 연동할 API 타입 (전자결재, 근태 등 - 아래 표 참고) |
| partnerCode | String | ✅ | ✅ | 제휴 시스템 코드 (예: OPENAPI_D) |
| productName | String | ⛔ | ⛔ | 제휴 제품명 |
| productVersion | String | ⛔ | ⛔ | 제품 버전 정보 |
| clientCompanyName | String | ⛔ | ⛔ | 제휴사 고객사 식별 정보 |
⛔ 선택값은 테스트 시 생략 가능하나, 운영 단계에서는 입력을 권장합니다.
API Type 목록 (1개만 가능)
| 값 | 설명 |
|---|---|
| APPR | 전자결재 연동 |
| ATTND | 근태 연동 |
| ACCOUNT | 계정정보 연동 |
| DEPT | 조직도 연동 |
partnerCode 목록
| 값 | 제휴 시스템 |
|---|---|
| OPENAPI_D | 공개 API용 기본 코드 |
| BIZPLAY | 비즈플레이 / 지출결의 |
| KSYSTEM | 영림원 소프트랩 |
| ADTCAPS | ADT캡스 / 출입통제 시스템 |
| TELECOP | KT텔레갑 / 출입통제 시스템 |
| SECOM | 에스원 세콤 / 출입통제 시스템 |
✉️ Request 예시
POST /public/v2/alliance/company HTTP/1.1
api.daouoffice.com
Content-Type: application/json
{
"adminId" : "다우오피스최고관리자계정(admin@partner.daouoffice.com)",
"adminPw" : "최고관리자비밀번호(xxxxxxxxxx)",
"apiType" : "연동API타입(ATTND)",
"partnerCode" : "제휴시스템코드(OPENAPI_D)",
"productName" : "제휴서비스명",
"productVersion" : "1.0.0",
"clientCompanyName" : "제휴고객사식별정보(partner-client-001)"
}
📬 Response Body
data 객체
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| code | String | ✅ | ⛔ | API 호출 결과 코드 (200, 951, 등) |
| message | String | ✅ | ⛔ | 호출 결과 메시지 (OK, 존재하지 않는 계정, 등) |
| messageDetail | String | ⛔ | ⛔ | 실패 시 상세 설명 |
| data | Object | ✅ | ⛔ | 인증키 발급 결과 정보 |
data 객체 구조
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| clientId | String | ✅ | ✅ | 발급된 인증 ID (DaouOffice API 연동용 식별자) |
| clientSecret | String | ✅ | ⛔ | 발급된 보안키 (Secret Key, 보안상 외부 저장은 권장하지 않음) |
📬Response 예시
Content-Type: application/json;charset=UTF-8
{
"message" : "OK",
"data" : {
"clientId" :"(서비스인증ID)xxxxxxxxxx",
"clientSecret":"(서비스보안Key)xxxxxxxxxx",
}
}
🚫 에러 코드 주요 예시
| 코드 | 내용 | 설명(Description) |
|---|---|---|
| 910 | 유효하지 않은 파라미터 | 도메인을 포함한 이메일 형식이여야 합니다. |
| 911 | 계정 형식 오류 | 도메인을 포함한 이메일 형식이여야 합니다. |
| 912 | 유효하지 않은 파트너 코드 | 유효하지 않은 파트너 코드입니다. |
| 951 | 존재하지 않은 계정 | oooo는 존재하지 않은 계정입니다. |
| 952 | 패스워드 누락 | 패스워드(adminPw)가 누락되었습니다. |
| 953 | 패스워드 불일치 | 계정 oooo의 패스워드가 일치하지 않습니다. |
| 954 | 계정 권한 오류 | 계정 oooo는 관리자 권한이 없는 계정입니다. |
| 955 | 도메인 코드 오류 | oooo는 존재하지 않는 도메인 코드입니다. |
| 957 | apiType 누락 | apiType은 필수값입니다. |
✨ 운영 팁
- Client Secret은 주기 변경 가능성 있음 → 매 호출 시 API로 불러오기 권장
- productName, productVersion, clientCompanyName은 운영 시 필수 입력 권장
- API 호출 시 Content-Type과 메서드 정확히 설정 (JSON/POST)
- 오류 코드 기반으로 로깅/예외 처리 설계