개요
다우오피스 OpenAPI 서비스의 근태 기록 동기화를 위한 <근태 기록 등록 API> 입니다. 연동된 근태 기록은 DOAS(DaouOffice API System)의 중간 DB에 저장된 후 자체적인 동기화 주기 설정에 따라 다우오피스에 연동됩니다. 근무일자(workingDay)+사원번호(employeeNumber)가 중복으로 API 호출되는 경우 최종 덮어쓰기 방식으로 DOAS 중간 DB에 저장되며, 최종으로 저장된 중간DB 내용이 동기화 됩니다. 자동 동기화 주기는 최대 4회 설정할 수 있습니다.
신규로 추가/변경이 필요한 근태 기록만 전송하거나 동일한 데이터를 반복적으로 호출할 경우 연동이 차단될 수 있으며, 초기 연동 및 갱신을 위하여 과거(특정 기간)의 데이터를 전송할 경우 기존 근태 기록이 업데이트(덮어쓰기)됩니다.
근태 기록을 연동하는 시스템과 다우오피스에서 동일한 사원번호(employeeNumber)가 설정되어있는 사용자만 연동됩니다. 전달된 근태 기록 중 다우오피스에 등록되지 않은 근태 유형이 포함되어 있을 경우 해당 데이터는 동기화되지 않습니다. 이를 방지하기 위해 정기적으로 근태 유형을 동기화 시키도록 개발하기를 권장합니다.
Request URL
https://api.daouoffice.com/public/v2/attnd/record
※ 다우오피스 OpenAPI 서비스는 DOAS 서버로 API 호출을 진행하기 때문에 별도 고객사 그룹웨어 URL이 아닌 “https://api.daouoffice.com”을 사용합니다.
HTTP Method
POST (Content-Type: application/json; charset=UTF-8)
Request Parameters
| 변수 (Parameter) |
타입(Type) | 필수 여부 |
사전 발급 |
설명 (Description) |
|---|---|---|---|---|
| clientId | String | Y | Y | 고객사 식별/인증을 위한 서비스 인증ID / Client ID ※ <인증키 발급 API>를 통해 전달받은 값 |
| clientSecret | String | Y | Y | 고객사 식별/인증을 위한 서비스 보안KEY / Secret Key ※ <인증키 발급 API>를 통해 전달받은 값 |
| productName | String | N | N | 업무시스템 제품명(제휴시스템 사용할 경우 입력) |
| productVersion | String | N | N | 업무시스템 제품버전(제휴시스템 사용할 경우 입력) |
| clientCompanyName | String | N | N | 업무시스템 고객사 식별정보(제휴시스템 사용할 경우 입력) |
| data | Object | Y | N | 근태 기록 정보 상세내용 JSON Object 배열 |
※ productName, productVersion, clientCompanyName은 외부업무시스템의 정보를 전달받아 문제 발생 시 다우기술에서 로그 확인을 위해 필요한 사항입니다. 필수 입력값은 아니므로 초기 개발 시 비워두고 정식 사용 시 값을 입력하는 것을 권장합니다.
- data
| 변수 (Parameter) |
타입(Type) | 필수 여부 |
사전 발급 |
설명 (Description) |
|---|---|---|---|---|
| employeeNumber | String | Y | N | 양사의 시스템 사원(인식)번호 / 근태관리와 사용자의 매핑키 ※ 영문자와 숫자구성만 지원 |
| workingDay | String | Y | N | 근태기록 기준일자 ( yyyy-MM-dd ) |
| clockInTime | String | N | N | 출근시간 ( yyyy-MM-dd HH:mm:ss ) |
| clockOutTime | String | N | N | 퇴근시간 ( yyyy-MM-dd HH:mm:ss ) |
| code | String | N | N | 근태상태 코드 ※ 기본코드 또는 <근태코드 연동>으로 생성된 코드 |
| checkTime | String | N | N | 근태기록 ( yyyy-MM-dd HH:mm:ss ) |
Request Example
예시 #1 (출/퇴근만 연동)
POST /public/v2/attnd/record HTTP/1.1
api.daouoffice.com
Content-Type: application/json
{
"clientId": "f255cbe0b4a9d12f",
"clientSecret": "bafdd7b4cff6fabdc417b8a6b0e4fff6",
"productName" : "제휴서비스/제품명",
"productVersion" : "제휴서비스/제품 버전",
"clientCompanyName" : "제휴서비스/제품 식별코드"
"data":[
{"employeeNumber":"D000001","workingDay":"2019-10-14", "clockInTime":"2019-10-14 08:13:22","clockOutTime":"2019-10-14 18:24:51"}
{"employeeNumber":"D000001","workingDay":"2019-10-15", "clockInTime":"2019-10-14 08:13:22","clockOutTime":"2019-10-14 18:24:51"}
{"employeeNumber":"D000002","workingDay":"2019-10-14", "clockInTime":"2019-10-14 08:32:51","clockOutTime":"2019-10-14 18:13:45"}
{"employeeNumber":"D000002","workingDay":"2019-10-15", "clockInTime":"2019-10-15 08:45:35","clockOutTime":"2019-10-16 01:10:13"}
// 익일 퇴근의 경우 workingDay를 기준일자로 전송
]
}
예시 #2 (타임라인 업무 연동)
POST /public/v2/attnd/record HTTP/1.1
api.daouoffice.com
Content-Type: application/json
{
"clientId":"f255cbe0b4a9d12f",
"clientSecret":"bafdd7b4cff6fabdc417b8a6b0e4fff6",
"productName":"제휴서비스/제품명",
"productVersion":"제휴서비스/제품 버전",
"clientCompanyName":"제휴서비스/제품 식별코드",
"data":[
{"employeeNumber":"D000001","workingDay":"2019-10-14", "clockInTime":"2019-10-14 08:13:22","clockOutTime":"2019-10-14 18:24:51",
"timelineHistories":[
{ "code":"defaultOffWorking","checkTime":"2019-10-14 08:30:00" }, // 업무종료(defaultOffWorking)
{ "code":"defaultOnWorking","checkTime":"2019-10-14 15:00:00" } // 업무시작(defaultOnWorking)
]},
{"employeeNumber":"D000002","workingDay":"2019-10-15", "clockInTime":"2019-10-15 08:45:35","clockOutTime":"2019-10-15 18:10:13",
"timelineHistories":[
{ "code":"defaultOffWorking","checkTime":"2019-10-15 08:50:00" }, // 업무종료(defaultOffWorking)
{ "code":"defaultOnWorking","checkTime":"2019-10-15 18:10:00" } // 업무시작(defaultOnWorking)
]}
// timelineHisttories에서 업무유형 출근(defaultClockIn), 퇴근(defaultClockOut)을 지정안됨
]
}
Response Parameters
| 변수 (Parameter) |
타입 (Type) |
필수 여부 |
사전 발급 |
설명 (Description) |
|---|---|---|---|---|
| code | String | Y | N | API 호출결과 코드 |
| message | String | Y | N | API 호출결과 메시지 |
| messageDetail | String | N | N | API 호출결과 상세내용 (실패한 경우만 리턴함) |
Response Example
Content-Type: application/json;charset=UTF-8
{
"code": "200",
"message": "OK"
}
Return Code
| 구분 | 코드 (Code) |
내용 (Message) |
설명 (Description) |
|---|---|---|---|
| 성공 (Success) |
200 | 성공 | OK |
| 실패 (Error) |
901 | 유효하지 않은 client ID | client ID를 확인하세요. |
| 902 | 유효하지 않은 client Secret | client Secret을 확인하세요. | |
| 970 | 유효하지 않은 데이터 포맷 | 데이터 포맷을 확인하세요. | |
| 971 | 중복 데이터 | 변경 내역이 없는 중복 데이터입니다. |
제약사항
| 구분 | 누적 호출 제한 횟수 | 비고 |
|---|---|---|
| 일간 | 50회 | 1회 호출당 근태기록 3,000건 이하 |
| 월간 | 1,500회 | 1회 호출당 근태기록 3,000건 이하 |
제공 서비스 유형
| 구분 | 제공 여부 |
|---|---|
| 다우오피스 단독형 | 제공 |
| 다우오피스 설치형 | 제공 |
| 다우오피스 구축형 | 제공 |
| 다우오피스 공유형 | 미제공 |