flex 동료 휴가 일정
플레이그라운드에서 수집 →채널 코드 flex_time_off · 수집 환경 windows
요청 파라미터
아래 값들을 POST /api/v1/collect 의 params 객체에 담아 보냅니다.
| 키 | 타입 | 필수 | 기본 | 설명 |
|---|---|---|---|---|
| server | text | — | — | 비우면 허브가 지금 flex 수집이 가능한 서버(온라인 · flex 로그인됨 · 대기 작업 적은 순) 중 하나를 골라 배정하고, 응답의 server 로 알려줌. 특정 서버로 보내려면 그 서버 ID(예: win-flex-01, GET /flex-servers 로 조회) |
| from_date | date (YYYY-MM-DD) | — | — | 포함. 비우면 오늘 |
| to_date | date (YYYY-MM-DD) | — | — | 포함. 비우면 시작일+30일. 기간은 최대 366일 |
| include_tentative | bool | — | true | 승인 전 휴가(화면의 "미확정", extra.status=TENTATIVE)도 포함 |
| include_anniversaries | bool | — | false | extra.kind=birthday / company_join_day 항목을 함께 |
요청 예시
응답 (202 Accepted)
요청은 즉시 큐에 적재되고 request_id 를 돌려줍니다. 실제 수집은 워커가 비동기로 처리합니다.
결과 조회 — GET /requests/{id}
같은 API 키로 request_id 를 조회합니다. 상태에 따라 응답이 달라집니다.
결과(items)는 요청별로 보관되므로 같은 글이 다른 요청(다른 키워드·재수집)에 겹쳐도 이 요청의 결과는 그대로입니다 —
여러 요청에 걸친 중복 정리는 post_id로 호출 쪽에서 하세요.
보존 기간은 완료 후 7일입니다. 이 채널은 '지금 상태'가 중요한 데이터라 짧게 보관합니다 — 결과는 받은 즉시 저장하세요.
보존 기간이 지나면 items 는 빈 배열이고 items_expired: true, items_keep_days 가 함께 옵니다(status 는 그대로 done).
진행 중 (pending / running)
아직 끝나지 않았으면 progress 로 진행 상황만 옵니다(items 없음).
완료 (done)
status 가 done 이면 data.items[] 에 결과가 담깁니다.
실패 시엔 status: "failed" 와 error 가 옵니다.
실패 (failed)
status 가 failed 면 error 에 사유가 옵니다(items 없음).
일시적 실패는 자동 재시도되며, 위 응답은 마지막 시도 기준입니다.
최상위 data에는 항상 request_id·channel·status·external_ref·result_count·started_at·finished_at·duration_ms·duration_sec·created_at·updated_at이 포함되고, 상태에 따라 items(done)·progress+elapsed_ms(진행 중)·error(failed/cancelled)가 추가됩니다. duration_*는 허브가 잰 수집 소요 시간(시작~종료) — 자세히는 비동기 & 콜백. 요청을 잘못 시작했다면 취소 API로 중단할 수 있습니다.
결과 필드 (items[])
| 필드 | 설명 |
|---|---|
| post_id | 일정 ID — 휴가는 하루 단위 이벤트 ID(여러 날 휴가는 날짜마다 다른 ID, 같은 휴가는 extra.task_key 로 묶임). 생일·입사 기념일은 이벤트ID@날짜 |
| url | null — 일정별 주소가 없습니다 |
| title / body | title=표시 이름 · 구분(시간 단위면 (09:00~14:00), 승인 대기면 [미확정] 을 붙임) / body=null |
| author | 구성원 표시 이름(flex 의 닉네임) |
| posted_at | 작성 시각 (ISO8601, KST) — 휴가 시작 시각. 하루 종일이면 그날 00:00 |
| views / comment_count | null / null |
| recommends | null |
| source | 구성원의 부서명 |
| extra.kind | time_off · birthday · company_join_day |
| extra.name / department / user_id | 구성원 표시 이름 · 부서 · 사용자 ID(구성원 채널 post_id 와 같은 값) |
| extra.date | 일정 날짜(KST, YYYY-MM-DD) |
| extra.start_at / end_at | 시작 · 끝(끝은 미포함, KST) |
| extra.all_day | 하루 종일 여부 |
| extra.time_range / minutes | 시간 단위 휴가의 시간대와 길이(분) — 반차 여부 판단에 사용 |
| extra.status / tentative | CONFIRMED(확정) · TENTATIVE(승인 대기, 화면의 "미확정") |
| extra.summary / title_raw | 구분(항상 휴가) · flex 원래 제목 |
| extra.task_key / leave_dates / leave_first / leave_last / leave_days_in_range | 같은 휴가 묶음 ID와 요청 기간 안의 그 휴가 날짜들 — 여러 날 휴가를 한 건으로 합칠 때 |
| extra.join_date / years | 입사일 · 근속 연수(company_join_day만) |
| extra.source_kind | flex_time_off |
- 수집 서버 자동 선택 —
server는 선택입니다. 비우면 허브가 지금 flex 수집이 가능한 서버(온라인 · flex 로그인됨 · 대기 작업 적은 순) 중 하나를 골라 배정하고 202 응답의server로 알려줍니다. 가능한 서버가 없으면 409no_flex_server(이유 포함). 특정 서버로 보내려면GET /flex-servers의 서버 이름을 넣으세요 — 그 서버가 오프라인이면 409server_offline, flex 로그인이 풀리고 자동 로그인까지 실패한 상태면 409account_login_required(추가 인증 화면이면account_blocked), flex 수집기가 없는 서버면 422not_flex_server. 배정은 요청 시점에 고정되므로 고른 서버가 그 뒤 꺼지면 그 요청은 실패로 끝납니다(다시 요청하면 살아 있는 서버로 갑니다). - 휴가 종류(연차·반차·병가 등)는 오지 않습니다 — flex 가 동료에게는 "휴가" 로만 보여 주기 때문입니다(홈 "동료 일정" 과 같은 범위). 반차 여부는
all_day=false와minutes로 판단하세요. - 기간은
from_date~to_date(둘 다 포함, 최대 366일). 비우면 오늘부터 30일. 기간 안에 걸친 날짜만 오므로, 여러 날 휴가가 기간 경계에 걸리면leave_dates도 기간 안의 날짜만 담깁니다. - 수집 계정 본인의 일정은 포함하지 않습니다(동료 캘린더 전체 = 수집 계정을 뺀 전 구성원). 다른 동료의 미팅 등 비공개 일정은 받지 않습니다.
결과 수신(폴링·콜백) 방식은 비동기 & 콜백을 참고하세요.