加载中
客户公司管理员可在设置 › 集成中创建 API 密钥和 Webhook。查询 API 为只读,不提供个人信息(手机号·出生日期·薪资·账户·地址)。所有请求均使用 HTTPS,响应为 JSON。
GET https://www.gijun.co.kr/api/v1/members Authorization: Bearer gj_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
如果密钥已废弃或服务不处于可用状态,将返回 401/403。速率限制:每个 IP 每分钟 600 次。
| 路径 | 说明 | 查询 |
|---|---|---|
GET /api/v1/company | 公司信息·使用状态·席位 | - |
GET /api/v1/members | 员工列表(在职·休职·离职等,不含个人信息) | status, department, limit(≤500), offset |
GET /api/v1/leave-requests | 休假申请·批准记录 | from, to, status, member_id, limit, offset |
GET /api/v1/schedules | 日历日程(标题·期间·时间·创建者·参与者,不含任务) | from, to, limit, offset |
GET /api/v1/holidays | 韩国公休日(按年份) | year |
GET /api/v1/leave-balances | 按成员查看剩余年假 | year, limit, offset |
GET /api/v1/attendance | 上下班记录 | from, to, member_id, limit, offset |
{ "data": [ { "id": "…", "name": "洪吉童", "department": "开发团队", "status": "active", "joined_at": "2026-01-02T00:00:00+00:00" } ],
"total": 42, "limit": 100, "offset": 0 }事件发生时,会向已登记的 URL POST JSON。如无 2xx 响应,将按 1 分钟·5 分钟·30 分钟·2 小时·12 小时间隔重试(共 6 次),连续失败 20 次的 Webhook 将自动停用。同一事件可能会被投递两次,请使用 delivery_id 来过滤重复项。
| 活动 | 发生时间 | 正文键 |
|---|---|---|
member.joined | 员工加入(注册批准·接受邀请·直接登记) | member |
member.resigned | 离职处理 | member |
member.on_leave | 休职处理 | member |
member.returned | 休职后复职 | member |
leave.requested | 提交休假申请 | leave_request |
leave.approved | 休假最终批准 | leave_request |
leave.rejected | 休假驳回 | leave_request |
leave.cancelled | 休假取消 | leave_request |
attendance.clock_in | 上班打卡 | work_session |
attendance.clock_out | 下班打卡 | work_session |
POST https://example.com/webhooks/gijun
Content-Type: application/json
X-Gijun-Event: leave.approved
X-Gijun-Delivery: 5f0c…
X-Gijun-Signature: t=1788660000,v1=3f1a… // HMAC-SHA256(secret, `${t}.${rawBody}`)
{ "event": "leave.approved", "company_id": "…", "occurred_at": "2026-09-06T02:00:00Z", "delivery_id": "5f0c…", "attempt": 1,
"leave_request": { "id": "…", "member_id": "…", "member_name": "洪吉童", "start_date": "2026-09-10", "end_date": "2026-09-11", "days_used": 2, "status": "approved" } }import { createHmac, timingSafeEqual } from 'node:crypto'
export function verify(rawBody, signatureHeader, secret) {
const t = /t=(\d+)/.exec(signatureHeader)?.[1], v1 = /v1=([a-f0-9]+)/.exec(signatureHeader)?.[1]
if (!t || !v1 || Math.abs(Date.now() / 1000 - Number(t)) > 300) return false // 拒绝超过 5 分钟的旧请求
const expected = createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex')
return expected.length === v1.length && timingSafeEqual(Buffer.from(expected), Buffer.from(v1))
}咨询:support@gijun.co.kr · 写入 API(登记休假申请等)如有需求,将排定优先级提供。