✅ 해당 기능이 제공되는 다우오피스 상품 유형
| 무료 | 서비스형 | 엔터프라이즈형 | HR형 | ||
|---|---|---|---|---|---|
| 스탠다드 | 스탠다드 | 프리미엄 | 스탠다드 | 프리미엄 | HR |
| ❌ | ❌ | ❌ | ❌ | ||
Works 데이터 조회 API
다우오피스 Works 데이터 조회 API는 외부 시스템에서 사용자가 권한을 가진 Works 앱, 문서, 컴포넌트, 상태 리스트를 조회할 수 있도록 제공되는 기능입니다. 예를 들어, 외부 ERP 시스템에서 Works '영업 관리' 앱에 등록된 계약 건을 조회하여 가져오거나, 사내 자체 대시보드에 Works '업무 요청' 앱의 진행 상태 리스트를 연동하여 보여줄 수 있습니다.
1️⃣ 사용 전 확인 사항
Works API는 기능에 따라 요구하는 인증 방식이 다릅니다. 데이터 연동 전 아래의 차이점을 확인해 주세요.
| 구분 | 인증 방식 | 설명 및 사용법 |
|---|---|---|
| 데이터 등록/수정/삭제 | Works 전용 토큰 | Works 앱 설정에서 개별적으로 발급하여 사용 📑Works 데이터 등록/수정/삭제 |
| 데이터 조회 (Read) | Access Token | 시스템 인증키(Client ID / Secret)를 통해 공통 발급하여 사용 ※ API 호출 시 Header에 Bearer 토큰 형태로 포함 |
2️⃣ 전체 연동 흐름 안내
Works 데이터를 조회하기 위해서는 아래의 순서대로 API를 호출해야 합니다.
-
인증키 발급 (최초 1회)
다우오피스 OpenAPI 연동을 위한 공통 인증키(Client ID / Secret)가 없다면 가장 먼저 발급
📑 인증키 발급 가이드 바로가기 -
Access Token 발행 (토큰 만료 시마다)
발급받은 인증키를 활용해 Works 조회를 위한 Access Token을 발급
이때 loginId 파라미터가 필수로 요구됨 -
Works 데이터 조회
발급받은 Access Token을 Header에 담아(Authorization: Bearer {access_token})
Works 앱 리스트, 문서, 컴포넌트 등의 데이터를 조회
Works Access Token 발행
Works 데이터를 조회하기 위해서는 Access Token을 발급 받아야 합니다.
전반적인 토큰 발급 방법은 📑 Access Token 발행 가이드와 동일하지만, Works 데이터 조회용 토큰을 발급할 때만 추가로 요구되는 필수 파라미터(loginId)가 있습니다. 본 항목에서는 공통 가이드와의 차이점을 중심으로 안내합니다.
✔️ Request URL
https://api.daouoffice.com/public/auth/v1/oauth2/token
✔️ HTTP Method
POST (Content-Type: application/json; charset=UTF-8)
✉️ Request Header & Params
Header
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| Authorization | String | ✅ | ✅ |
RFC 6749 표준의 Basic 인증 방식 사용. client_id와 client_secret을 :로 연결 후 Base64 인코딩하여 Authorization 헤더에 포함. 예) Authorization: Basic bXlfY2xpZW50X2lkOm15X2NsaWVudF9zZWNyZXQ= |
Parameter
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| grant_type | String | ✅ | ⛔ | 고정값 client_credentials 사용 |
| scope | String | ✅ | ⛔ | 고정값 groupware_user 사용 |
| loginId | String | ✅ | ⛔ | 그룹웨어 loginId (@도메인 은 제외) |
📬 Response Body
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| token_type | String | ✅ | ⛔ | 토큰 타입, DOAS에서는 bearer 고정 |
| expires_in | String | ✅ | ⛔ | 토큰 유효기간(초 단위), 현재 1일(86400초) |
| access_token | String | ✅ | ⛔ | Access Token, DOAS API 호출 시 Authorization 헤더에 포함 |
📬 Response 예시
{
"token_type": "bearer",
"access_token": "eyJhbGciOiJIUzI1NiJ9.eyJp....",
"expires_in": 86400
}
Works 앱 리스트 조회
사용자가 조회 권한을 가진 Works 앱(go_applets) 목록을 조회합니다.
✔️ Request URL
https://api.daouoffice.com/public/v1/works/applets
✔️ HTTP Method
GET Method로 별도 Content-Type 정의 없음 (Query String 기반)
✉️ Request Header
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| Authorization | String | ✅ | ✅ |
access_token Bearer <토큰값> 형식 (사이 공백 필수) 예) Bearer eyJhbGciOiJIUzI1NiJ9.eyJp… |
✉️ Request 예시
Authorization : Bearer {access_token}
📬Response Body
data 객체 (Array)
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| appletId | Long | ✅ | ⛔ | applet 식별자 |
| createdAt | String | ✅ | ⛔ | 생성시간 (yyyy-MM-dd'T'HH:mm:ss.SSSXXX) |
| updatedAt | String | ⛔ | ⛔ | 수정시간 (yyyy-MM-dd'T'HH:mm:ss.SSSXXX) |
| name | String | ✅ | ⛔ | 앱 이름 |
| favoriteFlag | boolean | ✅ | ⛔ | 앱 즐겨찾기 여부 |
| desc | String |
⛔ |
⛔ |
앱 설명 |
| template | boolean |
✅ | ⛔ | 앱 템플릿 여부 |
| admin | boolean |
✅ | ⛔ | 앱 운영자 여부 |
📬 Response 예시
[
{
"appletId": 1442318080368730112,
"createdAt": "2025-11-24T09:57:07.334+09:00",
"name": "DOAS 연동앱",
"favoriteFlag": false,
"desc": "빈 템플릿으로 새로운 앱을 만들 수 있습니다.",
"template": false,
"admin": true
},
{
"appletId": 1457999608977309696,
"createdAt": "2026-01-06T16:29:55.103+09:00",
"name": "V비즈링+V프로필 현황",
"favoriteFlag": false,
"desc": "V비즈링 및 V프로필 상품의 동/서부센터 영업현황을 집계하는 템플릿 입니다.",
"template": false,
"admin": true
}
]
Works 문서 목록 조회
특정 Works 앱 내의 문서(go_applet_docs) 데이터를 조회합니다.
✔️ Request URL
https://api.daouoffice.com/public/v1/works/applets/{appletId}/documents
✔️ HTTP Method
GET Method로 별도 Content-Type 정의 없음 (Query String 기반)
✉️ Request Header & Params
Header
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| Authorization | String | ✅ | ✅ |
access_token Bearer <토큰값> 형식 (사이 공백 필수) 예) Bearer eyJhbGciOiJIUzI1NiJ9.eyJp… |
Parameter
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| appletId | Long | ✅ | ⛔ | applet 식별자 (PathVariable) |
| page | Long | ⛔ | ⛔ | page 번호 (기본값: 0) |
| offset | Long | ⛔ | ⛔ | 페이지당 노출 개수 (기본값: 20) |
✉️ Request 예시
Authorization : Bearer {access_token}
📬 Response Body
pageInfo 객체
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| page | int | ✅ | ⛔ | 검색 페이지 |
| offset | int | ✅ | ⛔ | 페이지당 노출 개수 |
| total | int | ✅ | ⛔ | 전체 갯수 |
| lastPage | boolean | ✅ | ⛔ | 마지막 페이지 여부 |
| totalPage | int | ✅ | ⛔ | 전체 페이지 개수 |
content 배열 구조
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| appletId | Long | ✅ | ⛔ | 애플릿 식별자 |
| docId | Long | ✅ | ⛔ | 문서 식별자 |
| privateFlag | boolean | ✅ | ⛔ | 비공개여부 |
| status | String | ✅ | ⛔ | 문서 상태 |
| values | Array | ✅ | ⛔ | 문서 내용 |
| ↳ cid | String | ✅ | ⛔ | 입력항목 cid |
| ↳ label | String | ✅ | ⛔ | 입력항목 이름 |
| ↳ value | Object | ✅ | ⛔ | 입력항목 값 |
📬 Response 예시
{
"pageInfo": {
"page": 0,
"offset": 20,
"total": 27,
"lastPage": false,
"totalPage": 2
},
"content": [
{
"appletId": 1442318080368730112,
"docId": 1443096432121769984,
"privateFlag": false,
"status": "대기",
"values": [
{
"cid": "creator",
"label": "등록자",
"value": "그룹웨어관리자 (admin@i8jwcebrt7.co.co)"
},
{
"cid": "_u51s5ada8",
"label": "날짜",
"value": "2025-11-25"
},
{
"cid": "_v65c1sify",
"label": "체크박스",
"value": "a,b"
}
]
}
]
}
Works 앱 컴포넌트 목록 조회
특정 Works 앱을 구성하는 컴포넌트(go_applet_fields) 목록을 조회합니다.
✔️ Request URL
https://api.daouoffice.com/public/v1/works/applets/{appletId}/components
✔️ HTTP Method
GET Method로 별도 Content-Type 정의 없음 (Query String 기반)
✉️ Request Header & Params
Header
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| Authorization | String | ✅ | ✅ |
access_token Bearer <토큰값> 형식 (사이 공백 필수) 예) Bearer eyJhbGciOiJIUzI1NiJ9.eyJp… |
Parameter
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| appletId | Long | ✅ | ⛔ | applet 식별자 (PathVariable) |
✉️ Request 예시
Authorization : Bearer {access_token}
📬 Response Body
data 객체 (Array)
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| cid | String | ✅ | ⛔ | 입력 필드 식별자 |
| label | String | ✅ | ⛔ | 입력 항목 라벨 |
| fieldType | String | ✅ | ⛔ | 입력 항목 타입 |
| valueType | String | ✅ | ⛔ | 입력 항목 값 타입 enum[STEXT, STEXTS, TEXT, CONTENT, NUMBER, DATE, TIME, DATETIME, SELECT, SELECTS, FILES, USER, USERS, DEPTS, APPLETDOCS] |
| multiple | boolean | ✅ | ⛔ | 컴포넌트가 복수형인지 여부 |
| properties | Map<String, Object> | ⛔ | ⛔ | |
| options | Object | ⛔ | ⛔ | 선택형 옵션 배열 |
| ↳ value | Long | ⛔ | ⛔ | 내부적으로 갖는 값 |
| ↳ stringValue | String | ⛔ | ⛔ | value를 문자열로 캐스팅한 값 |
| ↳ displayText | String | ⛔ | ⛔ | 화면에 보여지는 값 |
| ↳ selected | boolean | ⛔ | ⛔ |
📬 Response 예시
{
[ {
"cid" : "status",
"label" : "상태",
"fieldType" : "status",
"valueType" : "SELECT",
"options" : [ {
"value" : 1442318080381313024,
"stringValue" : "1442318080381313024",
"displayText" : "대기",
"selected" : false
}, {
"value" : 1442318080381313025,
"stringValue" : "1442318080381313025",
"displayText" : "진행",
"selected" : false
}, {
"value" : 1442318080381313026,
"stringValue" : "1442318080381313026",
"displayText" : "완료",
"selected" : false
} ],
"multiple" : false
} ]
}
Works 앱 상태 목록 조회
특정 Works 앱의 프로세스 상태(go_applet_statuses) 목록을 조회합니다.
✔️ Request URL
https://api.daouoffice.com/public/v1/works/applets/{appletId}/statuses
✔️ HTTP Method
GET Method로 별도 Content-Type 정의 없음 (Query String 기반)
✉️ Request Header & Params
Header
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| Authorization | String | ✅ | ✅ |
access_token Bearer <토큰값> 형식 (사이 공백 필수) 예) Bearer eyJhbGciOiJIUzI1NiJ9.eyJp… |
Parameter
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| appletId | Long | ✅ | ⛔ | applet 식별자 (PathVariable) |
✉️ Request 예시
Authorization : Bearer {access_token}
📬 Response Body
data 객체 (Array)
| 변수 | 타입 | 필수 | 사전발급 | 설명 |
|---|---|---|---|---|
| id | String | ✅ | ⛔ | 상태 식별자 ID |
| name | String | ✅ | ⛔ | 입력 필드 식별자 |
| start | boolean | ✅ | ⛔ | 애플릿의 처음 상태인지 여부 |
| doing | boolean | ✅ | ⛔ | 애플릿의 중간 상태인지 여부 |
| end | boolean | ✅ | ⛔ | 애플릿의 마지막 상태인지 여부 |
| color | Long | ✅ | ⛔ | 해당 상태를 나타내는 색상 값 |
📬 Response 예시
[
{
"id": "1461540975062843392",
"name": "대기",
"start": true,
"doing": false,
"end": false,
"color": "0"
},
{
"id": "1461540975071232000",
"name": "진행",
"start": false,
"doing": true,
"end": false,
"color": "0"
},
{
"id": "1461540975071232001",
"name": "완료",
"start": false,
"doing": false,
"end": true,
"color": "0"
}
]
⚠️ 데이터 조회 제약 사항
Works API를 통해 데이터를 조회할 때, 컴포넌트 특성에 따라 일부 데이터가 반환되지 않거나 제한적으로 노출됩니다. 개발 시 시스템에 오류가 발생하지 않도록 아래 사항을 반드시 참고하여 예외 처리를 반영해 주세요.
| 구분 | 제약 사항 및 안내 |
|---|---|
| 빈 값 (Empty) 처리 | 입력된 데이터가 없는 항목은 values 배열(리스트) 자체가 아예 반환되지 않습니다. 👉 값을 찾을 수 없을 때(Null / Undefined)의 예외 처리가 반드시 필요합니다. |
| 조회 미지원 컴포넌트 | 멀티 텍스트, 첨부파일, 테이블(표) 및 테이블 내부에 속한 컴포넌트의 값은 OpenAPI를 통해 노출되지 않습니다. |
| 사용자 선택 컴포넌트 | 사용자의 '사번' 값은 미노출되며, '이름'과 '로그인 아이디'만 노출됩니다. |
| 부서 선택 컴포넌트 | 부서의 '부서 코드'는 미노출되며, '부서명'만 노출됩니다. |