格物 开放 API福豆任务

REST API · 接口参考

REST API 参考 · 员工福利购物

福豆任务

管理员发布任务(奖励型:员工完成后得额度;兑换型:员工用额度兑福利),员工报名、提交凭证、兑换,管理员审核与核销。奖励型发布时从企业额度池冻结预算。全部可选,做员工激励时再接。

#管理员:任务列表与概览

GETPOST/v1/enterprise/org/tasks

管理员:任务列表与概览(?filter=)/ 发布任务(带 idempotencyKey)

鉴权用户态可选

出现在员工福利 · 福豆任务、签到与生日

GET

任务列表与概览

可选。新建的在前,每页 20 条。overview 是顶部概览(进行中 / 待审核 / 待核销 / 已结束)。

查询参数

字段类型必填说明
filterstring否可选值:all / reward / consume / reviewing。默认 "all"
cursorstring否翻页游标:取上一页返回的 nextCursor,首页不传
返回字段57 个,点击展开
字段类型说明
overviewobject
overview.ongoinginteger
overview.pendingReviewinteger
overview.pendingWriteoffinteger
overview.endedinteger
itemsobject[]
items[].idstring
items[].titlestring
items[].categorystring
items[].categoryLabelstring
items[].descriptionstring
items[].coverUrlstring可能为 null
items[].settleModestring可选值:reward / consume
items[].pointsnumber每人奖励或消耗的额度(100 = 1 元)
items[].quotaintegernull = 不限。可能为 null
items[].remaininginteger可能为 null
items[].startAtstring
items[].endAtstring
items[].phasestring可选值:not_started / ongoing / ended
items[].needSignupboolean
items[].signupFullboolean
items[].completeModestring可选值:direct / submit
items[].reviewModestring可选值:auto / manual
items[].needWriteoffboolean
items[].scopeTextstring如「全体员工」「财务部、仓储部」
items[].submitSchemaobject[]
items[].submitSchema[].keystring
items[].submitSchema[].typestring可选值:text / image / file / link
items[].submitSchema[].labelstring最长 20
items[].submitSchema[].requiredboolean
items[].submitSchema[].maxintegertext 字数 / link 长度 / image、file 个数(≤9)上限
items[].pickupInfoobject消耗型任务的领取信息
items[].pickupInfo.locationstring
items[].pickupInfo.timeTextstring
items[].pickupInfo.startAtstring
items[].pickupInfo.endAtstring
items[].pickupInfo.rulesstring
items[].statusstring可选值:active / ended / cancelled
items[].scopeKindstring可选值:all / departments / members
items[].scopeIdsstring[]
items[].signupQuotainteger可能为 null
items[].budgetFrozennumber已冻结的预算
items[].statsobject
items[].stats.signedUpinteger
items[].stats.joinedinteger
items[].stats.completedinteger
items[].stats.redeemedinteger
items[].stats.pendingReviewinteger
items[].stats.pendingWriteoffinteger
items[].versioninteger编辑时作为 expectedVersion 带回
items[].editRulesobject前端据此置灰,服务端照样校验
items[].editRules.lockedstring[]当前不可改的字段名
items[].editRules.minQuotainteger
items[].editRules.pointsEditableboolean
items[].editRules.startAtEditableboolean
items[].editRules.minSignupQuotainteger
nextCursorstring下一页游标;null = 没有下一页。可能为 null

POST

发布任务

可选。奖励型在同一事务里从企业额度池冻结预算(每人额度 × 名额,不限名额时按范围人数),额度池不够返回 POOL_INSUFFICIENT、任务不建;任务结束时未用完的退回额度池。复制任务 = 拿详情预填后再发布。建议传 idempotencyKey。

请求体application/json · 发布与编辑任务的字段。消耗型恒为直接完成、自动审核;只有消耗型有核销与领取信息。

字段类型必填说明
titlestring是最长 30
descriptionstring否最长 500
coverUrlstring是封面图 http(s) 地址,发布时必填;用「上传任务封面」拿到
categorystring否奖励型可选 training / learning / survey / activity / other;消耗型可选 festival / daily / activity / other。可选值:training / learning / survey / activity / festival / daily / other
settleModestring是reward 奖励额度(员工做任务赚)· consume 消耗额度(员工用额度兑换)。可选值:reward / consume
pointsinteger是每人奖励或消耗的额度(100 = 1 元)。≥ 1,≤ 10000000
quotainteger否名额;不传 = 不限。≥ 1,≤ 100000。可能为 null
scopeKindstring否可选值:all / departments / members。默认 "all"
scopeIdsstring[]否部门 id 或员工平台账号 id(scopeKind 非 all 时必填)
startAtstring否不传 = 立即开始
endAtstring是截止时间,必填,须晚于开始时间与现在
needSignupboolean否
signupQuotainteger否≥ 1。可能为 null
completeModestring否仅奖励型:直接完成 / 提交结果。可选值:direct / submit。默认 "direct"
reviewModestring否仅奖励型 + submit:缺省 manual 人工审核。可选值:auto / manual
submitSchemaobject[]否completeMode = submit 时必填。最多 10 项
submitSchema[].keystring是
submitSchema[].typestring是可选值:text / image / file / link
submitSchema[].labelstring是最长 20
submitSchema[].requiredboolean否
submitSchema[].maxinteger否text 字数 / link 长度 / image、file 个数(≤9)上限
needWriteoffboolean否仅消耗型:兑换后是否需要线下核销(发领取码)
pickupInfoobject否消耗型任务的领取信息
pickupInfo.locationstring否
pickupInfo.timeTextstring否
pickupInfo.startAtstring否
pickupInfo.endAtstring否
pickupInfo.rulesstring否
idempotencyKeystring否最长 128
返回字段53 个,点击展开
字段类型说明
taskobject管理视角的任务
task.idstring
task.titlestring
task.categorystring
task.categoryLabelstring
task.descriptionstring
task.coverUrlstring可能为 null
task.settleModestring可选值:reward / consume
task.pointsnumber每人奖励或消耗的额度(100 = 1 元)
task.quotaintegernull = 不限。可能为 null
task.remaininginteger可能为 null
task.startAtstring
task.endAtstring
task.phasestring可选值:not_started / ongoing / ended
task.needSignupboolean
task.signupFullboolean
task.completeModestring可选值:direct / submit
task.reviewModestring可选值:auto / manual
task.needWriteoffboolean
task.scopeTextstring如「全体员工」「财务部、仓储部」
task.submitSchemaobject[]
task.submitSchema[].keystring
task.submitSchema[].typestring可选值:text / image / file / link
task.submitSchema[].labelstring最长 20
task.submitSchema[].requiredboolean
task.submitSchema[].maxintegertext 字数 / link 长度 / image、file 个数(≤9)上限
task.pickupInfoobject消耗型任务的领取信息
task.pickupInfo.locationstring
task.pickupInfo.timeTextstring
task.pickupInfo.startAtstring
task.pickupInfo.endAtstring
task.pickupInfo.rulesstring
task.statusstring可选值:active / ended / cancelled
task.scopeKindstring可选值:all / departments / members
task.scopeIdsstring[]
task.signupQuotainteger可能为 null
task.budgetFrozennumber已冻结的预算
task.statsobject
task.stats.signedUpinteger
task.stats.joinedinteger
task.stats.completedinteger
task.stats.redeemedinteger
task.stats.pendingReviewinteger
task.stats.pendingWriteoffinteger
task.versioninteger编辑时作为 expectedVersion 带回
task.editRulesobject前端据此置灰,服务端照样校验
task.editRules.lockedstring[]当前不可改的字段名
task.editRules.minQuotainteger
task.editRules.pointsEditableboolean
task.editRules.startAtEditableboolean
task.editRules.minSignupQuotainteger
poolBalancenumber发布后的企业额度池余额
budgetWarnstring超出预算预警线时的提示文案。可能为 null

错误

  • 400 BAD_REQUEST(message 说明哪一项不合法)/ POOL_INSUFFICIENT 企业额度池不足

调用示例

1curl -X GET "https://api.gowu.net/v1/enterprise/org/tasks" \2  -H "x-app-key: $GOWU_APP_KEY" \3  -H "x-timestamp: $TS" \4  -H "x-nonce: $NONCE" \5  -H "x-sign-version: 2" \6  -H "x-signature: $SIG" \7  -H "x-open-user: u-001"

返回示例

1{2  "overview": {3    "ongoing": 0,4    "pendingReview": 0,5    "pendingWriteoff": 0,6    "ended": 07  },8  "items": [9    {10      "id": "string",11      "title": "string",12      "category": "string",13      "categoryLabel": "string",14      "description": "string",15      "coverUrl": "string",16      "settleMode": "reward",17      "points": 0,18      "quota": 0,19      "remaining": 0,20      "startAt": "string",21      "endAt": "string",22      "phase": "not_started",23      "needSignup": true,24      "signupFull": true,25      "completeMode": "direct",26      "reviewMode": "auto",27      "needWriteoff": true,28      "scopeText": "string",29      "submitSchema": [30        {}31      ],32      "pickupInfo": {33        "location": "string",34        "timeText": "string",35        "startAt": "string",36        "endAt": "string",37        "rules": "string"38      },39      "status": "active",40      "scopeKind": "all",41      "scopeIds": [42        "string"43      ],44      "signupQuota": 0,45      "budgetFrozen": 0,46      "stats": {47        "signedUp": 0,48        "joined": 0,49        "completed": 0,50        "redeemed": 0,51        "pendingReview": 0,52        "pendingWriteoff": 053      },54      "version": 0,55      "editRules": {56        "locked": [],57        "minQuota": 0,58        "pointsEditable": true,59        "startAtEditable": true,60        "minSignupQuota": 061      }62    }63  ],64  "nextCursor": "string"65}

#管理员:发布前试算预计最高支出与额度池余额

GET/v1/enterprise/org/tasks/budget-preview

鉴权用户态可选

可选。发布页底部的「预计最高支出 / 额度池余额」,与发布同一套算法。编辑时带 taskId(结算方式取任务本身),另返回 delta:本次修改需追加(正)或释放(负)的额度。

查询参数

字段类型必填说明
settleModestring否可选值:reward / consume。默认 "reward"
pointsinteger否每人额度
quotainteger否名额;不传 = 不限
scopeKindstring否可选值:all / departments / members。默认 "all"
scopeIdsstring否逗号分隔
taskIdstring否编辑预览时传

返回字段

字段类型说明
maxSpendnumber预计最高支出;消耗型为 0
capinteger按名额与范围人数算出的最多发放人数
poolBalancenumber
budgetWarnstring可能为 null
deltanumber仅带 taskId 时返回

错误

  • 400 BAD_REQUEST
  • 404 TASK_NOT_FOUND:任务不存在、已下架或不属于本企业

调用示例

1curl -X GET "https://api.gowu.net/v1/enterprise/org/tasks/budget-preview" \2  -H "x-app-key: $GOWU_APP_KEY" \3  -H "x-timestamp: $TS" \4  -H "x-nonce: $NONCE" \5  -H "x-sign-version: 2" \6  -H "x-signature: $SIG" \7  -H "x-open-user: u-001"

返回示例

1{2  "maxSpend": 0,3  "cap": 0,4  "poolBalance": 0,5  "budgetWarn": "string",6  "delta": 07}

#管理员:任务详情与参与人 / 编辑、提前结束

GETPOST/v1/enterprise/org/tasks/{taskId}

鉴权用户态可选

GET

任务详情与参与人

可选。

路径参数

字段类型必填说明
taskIdstring是
返回字段64 个,点击展开
字段类型说明
taskobject管理视角的任务
task.idstring
task.titlestring
task.categorystring
task.categoryLabelstring
task.descriptionstring
task.coverUrlstring可能为 null
task.settleModestring可选值:reward / consume
task.pointsnumber每人奖励或消耗的额度(100 = 1 元)
task.quotaintegernull = 不限。可能为 null
task.remaininginteger可能为 null
task.startAtstring
task.endAtstring
task.phasestring可选值:not_started / ongoing / ended
task.needSignupboolean
task.signupFullboolean
task.completeModestring可选值:direct / submit
task.reviewModestring可选值:auto / manual
task.needWriteoffboolean
task.scopeTextstring如「全体员工」「财务部、仓储部」
task.submitSchemaobject[]
task.submitSchema[].keystring
task.submitSchema[].typestring可选值:text / image / file / link
task.submitSchema[].labelstring最长 20
task.submitSchema[].requiredboolean
task.submitSchema[].maxintegertext 字数 / link 长度 / image、file 个数(≤9)上限
task.pickupInfoobject消耗型任务的领取信息
task.pickupInfo.locationstring
task.pickupInfo.timeTextstring
task.pickupInfo.startAtstring
task.pickupInfo.endAtstring
task.pickupInfo.rulesstring
task.statusstring可选值:active / ended / cancelled
task.scopeKindstring可选值:all / departments / members
task.scopeIdsstring[]
task.signupQuotainteger可能为 null
task.budgetFrozennumber已冻结的预算
task.statsobject
task.stats.signedUpinteger
task.stats.joinedinteger
task.stats.completedinteger
task.stats.redeemedinteger
task.stats.pendingReviewinteger
task.stats.pendingWriteoffinteger
task.versioninteger编辑时作为 expectedVersion 带回
task.editRulesobject前端据此置灰,服务端照样校验
task.editRules.lockedstring[]当前不可改的字段名
task.editRules.minQuotainteger
task.editRules.pointsEditableboolean
task.editRules.startAtEditableboolean
task.editRules.minSignupQuotainteger
participantsobject[]
participants[].memberobject
participants[].member.accountIdstring
participants[].member.namestring
participants[].member.avatarUrlstring可能为 null
participants[].member.departmentNamestring可能为 null
participants[].entryobject员工在某个任务上的参与记录
participants[].entry.idstring
participants[].entry.statusstring可选值:signed_up / in_progress / submitted / rejected / completed / pending_writeoff / refunded / expired
participants[].entry.redeemCodestring需核销的兑换才有领取码。可能为 null
participants[].entry.rewardAmountnumber可能为 null
participants[].entry.spentAmountnumber可能为 null
participants[].entry.updatedAtstring

错误

  • 404 TASK_NOT_FOUND:任务不存在、已下架或不属于本企业

POST

提前结束 / 编辑任务

可选。action: "end" 提前结束,释放未用预算(待审核的份额先扣留),返回 released。 action: "update" 编辑:带上详情里的 version 作为 expectedVersion(乐观锁),只传要改的字段;结算方式、完成方式、审核方式、是否核销发布后不可改(见 task.editRules.locked)。奖励型改额度 / 名额 / 范围时按差额追加冻结或释放,返回 budgetDelta。

路径参数

字段类型必填说明
taskIdstring是

请求体application/json · 发布与编辑任务的字段。消耗型恒为直接完成、自动审核;只有消耗型有核销与领取信息。

字段类型必填说明
actionstring是可选值:end / update
expectedVersioninteger否update 时必传
titlestring否最长 30
descriptionstring否最长 500
coverUrlstring否封面图 http(s) 地址,发布时必填;用「上传任务封面」拿到
categorystring否奖励型可选 training / learning / survey / activity / other;消耗型可选 festival / daily / activity / other。可选值:training / learning / survey / activity / festival / daily / other
settleModestring否reward 奖励额度(员工做任务赚)· consume 消耗额度(员工用额度兑换)。可选值:reward / consume
pointsinteger否每人奖励或消耗的额度(100 = 1 元)。≥ 1,≤ 10000000
quotainteger否名额;不传 = 不限。≥ 1,≤ 100000。可能为 null
scopeKindstring否可选值:all / departments / members。默认 "all"
scopeIdsstring[]否部门 id 或员工平台账号 id(scopeKind 非 all 时必填)
startAtstring否不传 = 立即开始
endAtstring否截止时间,必填,须晚于开始时间与现在
needSignupboolean否
signupQuotainteger否≥ 1。可能为 null
completeModestring否仅奖励型:直接完成 / 提交结果。可选值:direct / submit。默认 "direct"
reviewModestring否仅奖励型 + submit:缺省 manual 人工审核。可选值:auto / manual
submitSchemaobject[]否completeMode = submit 时必填。最多 10 项
submitSchema[].keystring是
submitSchema[].typestring是可选值:text / image / file / link
submitSchema[].labelstring是最长 20
submitSchema[].requiredboolean否
submitSchema[].maxinteger否text 字数 / link 长度 / image、file 个数(≤9)上限
needWriteoffboolean否仅消耗型:兑换后是否需要线下核销(发领取码)
pickupInfoobject否消耗型任务的领取信息
pickupInfo.locationstring否
pickupInfo.timeTextstring否
pickupInfo.startAtstring否
pickupInfo.endAtstring否
pickupInfo.rulesstring否
返回字段54 个,点击展开
字段类型说明
taskobject管理视角的任务
task.idstring
task.titlestring
task.categorystring
task.categoryLabelstring
task.descriptionstring
task.coverUrlstring可能为 null
task.settleModestring可选值:reward / consume
task.pointsnumber每人奖励或消耗的额度(100 = 1 元)
task.quotaintegernull = 不限。可能为 null
task.remaininginteger可能为 null
task.startAtstring
task.endAtstring
task.phasestring可选值:not_started / ongoing / ended
task.needSignupboolean
task.signupFullboolean
task.completeModestring可选值:direct / submit
task.reviewModestring可选值:auto / manual
task.needWriteoffboolean
task.scopeTextstring如「全体员工」「财务部、仓储部」
task.submitSchemaobject[]
task.submitSchema[].keystring
task.submitSchema[].typestring可选值:text / image / file / link
task.submitSchema[].labelstring最长 20
task.submitSchema[].requiredboolean
task.submitSchema[].maxintegertext 字数 / link 长度 / image、file 个数(≤9)上限
task.pickupInfoobject消耗型任务的领取信息
task.pickupInfo.locationstring
task.pickupInfo.timeTextstring
task.pickupInfo.startAtstring
task.pickupInfo.endAtstring
task.pickupInfo.rulesstring
task.statusstring可选值:active / ended / cancelled
task.scopeKindstring可选值:all / departments / members
task.scopeIdsstring[]
task.signupQuotainteger可能为 null
task.budgetFrozennumber已冻结的预算
task.statsobject
task.stats.signedUpinteger
task.stats.joinedinteger
task.stats.completedinteger
task.stats.redeemedinteger
task.stats.pendingReviewinteger
task.stats.pendingWriteoffinteger
task.versioninteger编辑时作为 expectedVersion 带回
task.editRulesobject前端据此置灰,服务端照样校验
task.editRules.lockedstring[]当前不可改的字段名
task.editRules.minQuotainteger
task.editRules.pointsEditableboolean
task.editRules.startAtEditableboolean
task.editRules.minSignupQuotainteger
poolBalancenumber
releasednumberend:释放回额度池的额度
budgetDeltanumberupdate:追加(正)或释放(负)的额度

错误

  • 400 BAD_REQUEST / FIELD_LOCKED / QUOTA_TOO_SMALL / TASK_NOT_EDITABLE / POOL_INSUFFICIENT
  • 404 TASK_NOT_FOUND:任务不存在、已下架或不属于本企业
  • 409 VERSION_CONFLICT:任务已被他人修改,刷新后重试

调用示例

1curl -X GET "https://api.gowu.net/v1/enterprise/org/tasks/{taskId}" \2  -H "x-app-key: $GOWU_APP_KEY" \3  -H "x-timestamp: $TS" \4  -H "x-nonce: $NONCE" \5  -H "x-sign-version: 2" \6  -H "x-signature: $SIG" \7  -H "x-open-user: u-001"

返回示例

1{2  "task": {3    "id": "string",4    "title": "string",5    "category": "string",6    "categoryLabel": "string",7    "description": "string",8    "coverUrl": "string",9    "settleMode": "reward",10    "points": 0,11    "quota": 0,12    "remaining": 0,13    "startAt": "string",14    "endAt": "string",15    "phase": "not_started",16    "needSignup": true,17    "signupFull": true,18    "completeMode": "direct",19    "reviewMode": "auto",20    "needWriteoff": true,21    "scopeText": "string",22    "submitSchema": [23      {24        "key": "string",25        "type": "text",26        "label": "string",27        "required": true,28        "max": 029      }30    ],31    "pickupInfo": {32      "location": "string",33      "timeText": "string",34      "startAt": "string",35      "endAt": "string",36      "rules": "string"37    },38    "status": "active",39    "scopeKind": "all",40    "scopeIds": [41      "string"42    ],43    "signupQuota": 0,44    "budgetFrozen": 0,45    "stats": {46      "signedUp": 0,47      "joined": 0,48      "completed": 0,49      "redeemed": 0,50      "pendingReview": 0,51      "pendingWriteoff": 052    },53    "version": 0,54    "editRules": {55      "locked": [56        "string"57      ],58      "minQuota": 0,59      "pointsEditable": true,60      "startAtEditable": true,61      "minSignupQuota": 062    }63  },64  "participants": [65    {66      "member": {67        "accountId": "string",68        "name": "string",69        "avatarUrl": "string",70        "departmentName": "string"71      },72      "entry": {73        "id": "string",74        "status": "signed_up",75        "redeemCode": "string",76        "rewardAmount": 0,77        "spentAmount": 0,78        "updatedAt": "string"79      }80    }81  ]82}

#管理员:上传任务封面

POST/v1/enterprise/org/task-cover

管理员:上传任务封面(先换上传票据,再上传文件)

鉴权用户态可选

可选。两段式上传:先用本接口(签名 JSON)换一张 10 分钟有效、用一次即作废的票据,再把图片 POST multipart(字段名 file)或 PUT 裸 body 到返回的 putPath(凭票据鉴权,不需要签名),得到 { ok, url, key },把 url 填进任务的 coverUrl。只收 jpg / png / webp,按文件头识别。

请求体application/json

字段类型必填说明
fileNamestring否
contentTypestring否例:image/jpeg
sizeinteger否字节数,超限直接拒

返回字段

字段类型说明
okboolean
ticketstring
putPathstring上传地址(相对路径,拼在 API 域名后)
maxBytesinteger
expiresInSecinteger

错误

  • 400 TOO_LARGE
  • 503 STORAGE_UNAVAILABLE

调用示例

1curl -X POST "https://api.gowu.net/v1/enterprise/org/task-cover" \2  -H "x-app-key: $GOWU_APP_KEY" \3  -H "x-timestamp: $TS" \4  -H "x-nonce: $NONCE" \5  -H "x-sign-version: 2" \6  -H "x-signature: $SIG" \7  -H "x-open-user: u-001"

返回示例

1{2  "ok": true,3  "ticket": "string",4  "putPath": "string",5  "maxBytes": 0,6  "expiresInSec": 07}

#管理员:待审核的提交 / 批量通过或驳回

GETPOST/v1/enterprise/org/task-reviews

管理员:待审核的提交 / 批量通过或驳回(驳回须填原因)

鉴权用户态可选

GET

待审核的提交

可选。员工提交的结果,图片与文件带短时签名链接;task.submitSchema 用来把 payload 渲染成表单。rejected 只列每人最新一版。

查询参数

字段类型必填说明
statusstring否可选值:pending / rejected / all。默认 "pending"
taskIdstring否
cursorstring否翻页游标:取上一页返回的 nextCursor,首页不传
返回字段32 个,点击展开
字段类型说明
countsobject
counts.allinteger
counts.pendinginteger
counts.rejectedinteger
itemsobject[]
items[].submissionobject
items[].submission.idstring
items[].submission.versioninteger
items[].submission.statusstring可选值:pending / approved / rejected / superseded
items[].submission.payloadobjecttext / link 为字符串;image / file 为 [{ key, url, name }],url 为短时签名链接
items[].submission.rejectReasonstring可能为 null
items[].submission.createdAtstring
items[].submission.reviewedAtstring可能为 null
items[].memberobject
items[].member.accountIdstring
items[].member.namestring
items[].member.avatarUrlstring可能为 null
items[].member.departmentNamestring可能为 null
items[].taskobject
items[].task.idstring
items[].task.titlestring
items[].task.categorystring
items[].task.categoryLabelstring
items[].task.settleModestring
items[].task.pointsnumber
items[].task.submitSchemaobject[]
items[].task.submitSchema[].keystring
items[].task.submitSchema[].typestring可选值:text / image / file / link
items[].task.submitSchema[].labelstring最长 20
items[].task.submitSchema[].requiredboolean
items[].task.submitSchema[].maxintegertext 字数 / link 长度 / image、file 个数(≤9)上限
nextCursorstring下一页游标;null = 没有下一页。可能为 null

POST

审核通过 / 驳回

可选。批量审核,逐条各自处理:成功的 id 在 ok 数组里,失败的在 failed。通过即发放奖励;驳回必须填原因,员工可重新提交。

请求体application/json

字段类型必填说明
actionstring是可选值:approve / reject
submissionIdsstring[]是
reasonstring否reject 时必填

返回字段

字段类型说明
okstring[]处理成功的 submissionId(注意此处 ok 是数组)
failedobject[]
failed[].idstring
failed[].codestring
failed[].messagestring

错误

  • 400 BAD_REQUEST:action 不对、没选提交或驳回没填原因

调用示例

1curl -X GET "https://api.gowu.net/v1/enterprise/org/task-reviews" \2  -H "x-app-key: $GOWU_APP_KEY" \3  -H "x-timestamp: $TS" \4  -H "x-nonce: $NONCE" \5  -H "x-sign-version: 2" \6  -H "x-signature: $SIG" \7  -H "x-open-user: u-001"

返回示例

1{2  "counts": {3    "all": 0,4    "pending": 0,5    "rejected": 06  },7  "items": [8    {9      "submission": {10        "id": "string",11        "version": 0,12        "status": "pending",13        "payload": null,14        "rejectReason": "string",15        "createdAt": "string",16        "reviewedAt": "string"17      },18      "member": {19        "accountId": "string",20        "name": "string",21        "avatarUrl": "string",22        "departmentName": "string"23      },24      "task": {25        "id": "string",26        "title": "string",27        "category": "string",28        "categoryLabel": "string",29        "settleMode": "string",30        "points": 0,31        "submitSchema": []32      }33    }34  ],35  "nextCursor": "string"36}

#管理员:待核销兑换

GETPOST/v1/enterprise/org/task-redemptions

管理员:待核销兑换(可按码查)/ 核销或撤销(撤销退额度)

鉴权用户态可选

GET

兑换核销列表 / 按领取码查

可选。消耗型任务的兑换记录。缺省列待核销的;带 code 时按领取码查(查不到 items 为空)。

查询参数

字段类型必填说明
statusstring否entry 状态,如 pending_writeoff / completed / refunded / all;缺省 pending_writeoff(带 code 时缺省 all)
codestring否领取码
cursorstring否翻页游标:取上一页返回的 nextCursor,首页不传
返回字段26 个,点击展开
字段类型说明
itemsobject[]
items[].entryobject员工在某个任务上的参与记录
items[].entry.idstring
items[].entry.statusstring可选值:signed_up / in_progress / submitted / rejected / completed / pending_writeoff / refunded / expired
items[].entry.redeemCodestring需核销的兑换才有领取码。可能为 null
items[].entry.rewardAmountnumber可能为 null
items[].entry.spentAmountnumber可能为 null
items[].entry.updatedAtstring
items[].memberobject
items[].member.accountIdstring
items[].member.namestring
items[].member.avatarUrlstring可能为 null
items[].member.departmentNamestring可能为 null
items[].taskobject
items[].task.idstring
items[].task.titlestring
items[].task.coverUrlstring可能为 null
items[].task.pointsnumber
items[].task.pickupInfoobject消耗型任务的领取信息
items[].task.pickupInfo.locationstring
items[].task.pickupInfo.timeTextstring
items[].task.pickupInfo.startAtstring
items[].task.pickupInfo.endAtstring
items[].task.pickupInfo.rulesstring
items[].redeemedAtstring
nextCursorstring下一页游标;null = 没有下一页。可能为 null

POST

核销 / 撤销兑换

可选。writeoff 核销(员工线下领取后);revoke 撤销兑换,额度退回员工、名额回补。用 entryId 或 code 指定。

请求体application/json

字段类型必填说明
actionstring是可选值:writeoff / revoke
entryIdstring否
codestring否领取码;与 entryId 二选一

返回字段

字段类型说明
entryobject员工在某个任务上的参与记录
entry.idstring
entry.statusstring可选值:signed_up / in_progress / submitted / rejected / completed / pending_writeoff / refunded / expired
entry.redeemCodestring需核销的兑换才有领取码。可能为 null
entry.rewardAmountnumber可能为 null
entry.spentAmountnumber可能为 null
entry.updatedAtstring

错误

  • 400 BAD_REQUEST / INVALID_CODE / INVALID_STATE
  • 404 TASK_NOT_FOUND:任务不存在、已下架或不属于本企业

调用示例

1curl -X GET "https://api.gowu.net/v1/enterprise/org/task-redemptions" \2  -H "x-app-key: $GOWU_APP_KEY" \3  -H "x-timestamp: $TS" \4  -H "x-nonce: $NONCE" \5  -H "x-sign-version: 2" \6  -H "x-signature: $SIG" \7  -H "x-open-user: u-001"

返回示例

1{2  "items": [3    {4      "entry": {5        "id": "string",6        "status": "signed_up",7        "redeemCode": "string",8        "rewardAmount": 0,9        "spentAmount": 0,10        "updatedAt": "string"11      },12      "member": {13        "accountId": "string",14        "name": "string",15        "avatarUrl": "string",16        "departmentName": "string"17      },18      "task": {19        "id": "string",20        "title": "string",21        "coverUrl": "string",22        "points": 0,23        "pickupInfo": {}24      },25      "redeemedAt": "string"26    }27  ],28  "nextCursor": "string"29}

#员工:可参与的任务

GET/v1/enterprise/tasks

员工:可参与的任务(?tab=earn|redeem)

鉴权用户态可选

出现在员工福利 · 福豆任务、签到与生日

可选。tab=earn 赚额度(奖励型)· tab=redeem 兑福利(消耗型)。只返回本人范围内、进行中的任务,带 myEntry。每页 20 条。

查询参数

字段类型必填说明
tabstring否可选值:earn / redeem。默认 "earn"
cursorstring否翻页游标:取上一页返回的 nextCursor,首页不传
返回字段49 个,点击展开
字段类型说明
itemsobject[]
items[].idstring
items[].titlestring
items[].categorystring
items[].categoryLabelstring
items[].descriptionstring
items[].coverUrlstring可能为 null
items[].settleModestring可选值:reward / consume
items[].pointsnumber每人奖励或消耗的额度(100 = 1 元)
items[].quotaintegernull = 不限。可能为 null
items[].remaininginteger可能为 null
items[].startAtstring
items[].endAtstring
items[].phasestring可选值:not_started / ongoing / ended
items[].needSignupboolean
items[].signupFullboolean
items[].completeModestring可选值:direct / submit
items[].reviewModestring可选值:auto / manual
items[].needWriteoffboolean
items[].scopeTextstring如「全体员工」「财务部、仓储部」
items[].submitSchemaobject[]
items[].submitSchema[].keystring
items[].submitSchema[].typestring可选值:text / image / file / link
items[].submitSchema[].labelstring最长 20
items[].submitSchema[].requiredboolean
items[].submitSchema[].maxintegertext 字数 / link 长度 / image、file 个数(≤9)上限
items[].pickupInfoobject消耗型任务的领取信息
items[].pickupInfo.locationstring
items[].pickupInfo.timeTextstring
items[].pickupInfo.startAtstring
items[].pickupInfo.endAtstring
items[].pickupInfo.rulesstring
items[].myEntryobject员工在某个任务上的参与记录
items[].myEntry.idstring
items[].myEntry.statusstring可选值:signed_up / in_progress / submitted / rejected / completed / pending_writeoff / refunded / expired
items[].myEntry.redeemCodestring需核销的兑换才有领取码。可能为 null
items[].myEntry.rewardAmountnumber可能为 null
items[].myEntry.spentAmountnumber可能为 null
items[].myEntry.updatedAtstring
items[].lastSubmissionobject仅详情接口返回
items[].lastSubmission.idstring
items[].lastSubmission.versioninteger
items[].lastSubmission.statusstring可选值:pending / approved / rejected / superseded
items[].lastSubmission.payloadobjecttext / link 为字符串;image / file 为 [{ key, url, name }],url 为短时签名链接
items[].lastSubmission.rejectReasonstring可能为 null
items[].lastSubmission.createdAtstring
items[].lastSubmission.reviewedAtstring可能为 null
nextCursorstring下一页游标;null = 没有下一页。可能为 null
balancenumber员工当前额度余额

调用示例

1curl -X GET "https://api.gowu.net/v1/enterprise/tasks" \2  -H "x-app-key: $GOWU_APP_KEY" \3  -H "x-timestamp: $TS" \4  -H "x-nonce: $NONCE" \5  -H "x-sign-version: 2" \6  -H "x-signature: $SIG" \7  -H "x-open-user: u-001"

返回示例

1{2  "items": [3    {4      "id": "string",5      "title": "string",6      "category": "string",7      "categoryLabel": "string",8      "description": "string",9      "coverUrl": "string",10      "settleMode": "reward",11      "points": 0,12      "quota": 0,13      "remaining": 0,14      "startAt": "string",15      "endAt": "string",16      "phase": "not_started",17      "needSignup": true,18      "signupFull": true,19      "completeMode": "direct",20      "reviewMode": "auto",21      "needWriteoff": true,22      "scopeText": "string",23      "submitSchema": [24        {}25      ],26      "pickupInfo": {27        "location": "string",28        "timeText": "string",29        "startAt": "string",30        "endAt": "string",31        "rules": "string"32      },33      "myEntry": {34        "id": "string",35        "status": "signed_up",36        "redeemCode": "string",37        "rewardAmount": 0,38        "spentAmount": 0,39        "updatedAt": "string"40      },41      "lastSubmission": {42        "id": "string",43        "version": 0,44        "status": "pending",45        "payload": null,46        "rejectReason": "string",47        "createdAt": "string",48        "reviewedAt": "string"49      }50    }51  ],52  "nextCursor": "string",53  "balance": 054}

#员工:我参与的任务 / 我的兑换

GET/v1/enterprise/tasks/mine

鉴权用户态可选

可选。参与过的任务,按最近变动倒序,每页 20 条。

查询参数

字段类型必填说明
kindstring否可选值:earn / redeem。默认 "earn"
cursorstring否翻页游标:取上一页返回的 nextCursor,首页不传
返回字段56 个,点击展开
字段类型说明
itemsobject[]
items[].taskobject员工视角的任务
items[].task.idstring
items[].task.titlestring
items[].task.categorystring
items[].task.categoryLabelstring
items[].task.descriptionstring
items[].task.coverUrlstring可能为 null
items[].task.settleModestring可选值:reward / consume
items[].task.pointsnumber每人奖励或消耗的额度(100 = 1 元)
items[].task.quotaintegernull = 不限。可能为 null
items[].task.remaininginteger可能为 null
items[].task.startAtstring
items[].task.endAtstring
items[].task.phasestring可选值:not_started / ongoing / ended
items[].task.needSignupboolean
items[].task.signupFullboolean
items[].task.completeModestring可选值:direct / submit
items[].task.reviewModestring可选值:auto / manual
items[].task.needWriteoffboolean
items[].task.scopeTextstring如「全体员工」「财务部、仓储部」
items[].task.submitSchemaobject[]
items[].task.submitSchema[].keystring
items[].task.submitSchema[].typestring可选值:text / image / file / link
items[].task.submitSchema[].labelstring最长 20
items[].task.submitSchema[].requiredboolean
items[].task.submitSchema[].maxintegertext 字数 / link 长度 / image、file 个数(≤9)上限
items[].task.pickupInfoobject消耗型任务的领取信息
items[].task.pickupInfo.locationstring
items[].task.pickupInfo.timeTextstring
items[].task.pickupInfo.startAtstring
items[].task.pickupInfo.endAtstring
items[].task.pickupInfo.rulesstring
items[].task.myEntryobject员工在某个任务上的参与记录
items[].task.myEntry.idstring
items[].task.myEntry.statusstring可选值:signed_up / in_progress / submitted / rejected / completed / pending_writeoff / refunded / expired
items[].task.myEntry.redeemCodestring需核销的兑换才有领取码。可能为 null
items[].task.myEntry.rewardAmountnumber可能为 null
items[].task.myEntry.spentAmountnumber可能为 null
items[].task.myEntry.updatedAtstring
items[].task.lastSubmissionobject仅详情接口返回
items[].task.lastSubmission.idstring
items[].task.lastSubmission.versioninteger
items[].task.lastSubmission.statusstring可选值:pending / approved / rejected / superseded
items[].task.lastSubmission.payloadobjecttext / link 为字符串;image / file 为 [{ key, url, name }],url 为短时签名链接
items[].task.lastSubmission.rejectReasonstring可能为 null
items[].task.lastSubmission.createdAtstring
items[].task.lastSubmission.reviewedAtstring可能为 null
items[].entryobject员工在某个任务上的参与记录
items[].entry.idstring
items[].entry.statusstring可选值:signed_up / in_progress / submitted / rejected / completed / pending_writeoff / refunded / expired
items[].entry.redeemCodestring需核销的兑换才有领取码。可能为 null
items[].entry.rewardAmountnumber可能为 null
items[].entry.spentAmountnumber可能为 null
items[].entry.updatedAtstring
nextCursorstring下一页游标;null = 没有下一页。可能为 null

调用示例

1curl -X GET "https://api.gowu.net/v1/enterprise/tasks/mine" \2  -H "x-app-key: $GOWU_APP_KEY" \3  -H "x-timestamp: $TS" \4  -H "x-nonce: $NONCE" \5  -H "x-sign-version: 2" \6  -H "x-signature: $SIG" \7  -H "x-open-user: u-001"

返回示例

1{2  "items": [3    {4      "task": {5        "id": "string",6        "title": "string",7        "category": "string",8        "categoryLabel": "string",9        "description": "string",10        "coverUrl": "string",11        "settleMode": "reward",12        "points": 0,13        "quota": 0,14        "remaining": 0,15        "startAt": "string",16        "endAt": "string",17        "phase": "not_started",18        "needSignup": true,19        "signupFull": true,20        "completeMode": "direct",21        "reviewMode": "auto",22        "needWriteoff": true,23        "scopeText": "string",24        "submitSchema": [],25        "pickupInfo": {},26        "myEntry": {},27        "lastSubmission": {}28      },29      "entry": {30        "id": "string",31        "status": "signed_up",32        "redeemCode": "string",33        "rewardAmount": 0,34        "spentAmount": 0,35        "updatedAt": "string"36      }37    }38  ],39  "nextCursor": "string"40}

#员工:任务详情 / 报名、完成、提交、兑换

GETPOST/v1/enterprise/tasks/{taskId}

员工:任务详情 / 报名、完成、提交、兑换(带 idempotencyKey)

鉴权用户态可选

GET

任务详情

可选。含我的参与记录与最近一次提交(含驳回原因)。

路径参数

字段类型必填说明
taskIdstring是
返回字段48 个,点击展开
字段类型说明
taskobject员工视角的任务
task.idstring
task.titlestring
task.categorystring
task.categoryLabelstring
task.descriptionstring
task.coverUrlstring可能为 null
task.settleModestring可选值:reward / consume
task.pointsnumber每人奖励或消耗的额度(100 = 1 元)
task.quotaintegernull = 不限。可能为 null
task.remaininginteger可能为 null
task.startAtstring
task.endAtstring
task.phasestring可选值:not_started / ongoing / ended
task.needSignupboolean
task.signupFullboolean
task.completeModestring可选值:direct / submit
task.reviewModestring可选值:auto / manual
task.needWriteoffboolean
task.scopeTextstring如「全体员工」「财务部、仓储部」
task.submitSchemaobject[]
task.submitSchema[].keystring
task.submitSchema[].typestring可选值:text / image / file / link
task.submitSchema[].labelstring最长 20
task.submitSchema[].requiredboolean
task.submitSchema[].maxintegertext 字数 / link 长度 / image、file 个数(≤9)上限
task.pickupInfoobject消耗型任务的领取信息
task.pickupInfo.locationstring
task.pickupInfo.timeTextstring
task.pickupInfo.startAtstring
task.pickupInfo.endAtstring
task.pickupInfo.rulesstring
task.myEntryobject员工在某个任务上的参与记录
task.myEntry.idstring
task.myEntry.statusstring可选值:signed_up / in_progress / submitted / rejected / completed / pending_writeoff / refunded / expired
task.myEntry.redeemCodestring需核销的兑换才有领取码。可能为 null
task.myEntry.rewardAmountnumber可能为 null
task.myEntry.spentAmountnumber可能为 null
task.myEntry.updatedAtstring
task.lastSubmissionobject仅详情接口返回
task.lastSubmission.idstring
task.lastSubmission.versioninteger
task.lastSubmission.statusstring可选值:pending / approved / rejected / superseded
task.lastSubmission.payloadobjecttext / link 为字符串;image / file 为 [{ key, url, name }],url 为短时签名链接
task.lastSubmission.rejectReasonstring可能为 null
task.lastSubmission.createdAtstring
task.lastSubmission.reviewedAtstring可能为 null
balancenumber

错误

  • 404 TASK_NOT_FOUND:任务不存在、已下架或不属于本企业

POST

报名 / 完成 / 提交 / 兑换

可选。signup 报名 · complete 直接完成(发奖励)· submit 提交结果(payload 按任务 submitSchema 组织:text / link 填字符串,image / file 填 [{ key, name }],key 来自「上传任务凭证」)· redeem 用额度兑换(消耗型)。重复操作返回第一次的结果。

路径参数

字段类型必填说明
taskIdstring是

请求体application/json

字段类型必填说明
actionstring是可选值:signup / complete / submit / redeem
payloadobject否仅 submit:键为 submitSchema[].key
idempotencyKeystring否

返回字段

字段类型说明
entryobject员工在某个任务上的参与记录
entry.idstring
entry.statusstring可选值:signed_up / in_progress / submitted / rejected / completed / pending_writeoff / refunded / expired
entry.redeemCodestring需核销的兑换才有领取码。可能为 null
entry.rewardAmountnumber可能为 null
entry.spentAmountnumber可能为 null
entry.updatedAtstring
balancenumber操作后余额
rewardednumber本次获得的额度
spentnumber本次消耗的额度

错误

  • 400 TASK_NOT_STARTED / TASK_ENDED / SIGNUP_REQUIRED / SIGNUP_FULL / QUOTA_FULL / INSUFFICIENT_POINTS / ALREADY_DONE / INVALID_STATE / BAD_REQUEST
  • 404 TASK_NOT_FOUND:任务不存在、已下架或不属于本企业

调用示例

1curl -X GET "https://api.gowu.net/v1/enterprise/tasks/{taskId}" \2  -H "x-app-key: $GOWU_APP_KEY" \3  -H "x-timestamp: $TS" \4  -H "x-nonce: $NONCE" \5  -H "x-sign-version: 2" \6  -H "x-signature: $SIG" \7  -H "x-open-user: u-001"

返回示例

1{2  "task": {3    "id": "string",4    "title": "string",5    "category": "string",6    "categoryLabel": "string",7    "description": "string",8    "coverUrl": "string",9    "settleMode": "reward",10    "points": 0,11    "quota": 0,12    "remaining": 0,13    "startAt": "string",14    "endAt": "string",15    "phase": "not_started",16    "needSignup": true,17    "signupFull": true,18    "completeMode": "direct",19    "reviewMode": "auto",20    "needWriteoff": true,21    "scopeText": "string",22    "submitSchema": [23      {24        "key": "string",25        "type": "text",26        "label": "string",27        "required": true,28        "max": 029      }30    ],31    "pickupInfo": {32      "location": "string",33      "timeText": "string",34      "startAt": "string",35      "endAt": "string",36      "rules": "string"37    },38    "myEntry": {39      "id": "string",40      "status": "signed_up",41      "redeemCode": "string",42      "rewardAmount": 0,43      "spentAmount": 0,44      "updatedAt": "string"45    },46    "lastSubmission": {47      "id": "string",48      "version": 0,49      "status": "pending",50      "payload": null,51      "rejectReason": "string",52      "createdAt": "string",53      "reviewedAt": "string"54    }55  },56  "balance": 057}

#员工:上传任务凭证

POST/v1/enterprise/task-proof

员工:上传任务凭证(先换上传票据,再上传文件)

鉴权用户态可选

可选。两段式上传:先用本接口(签名 JSON)换一张 10 分钟有效的票据,再把文件 POST multipart(字段名 file)或 PUT 裸 body 到返回的 putPath(凭票据鉴权,不需要签名),得到 { ok, key, url, name }。提交任务时 payload 里传 { key, name };url 是短时签名链接,只用于立即预览。支持 jpg / png / webp 图片(≤10MB)与 pdf / doc(x) / xls(x) 文件(≤20MB),按文件头识别。

请求体application/json

字段类型必填说明
taskIdstring是
fileNamestring否Office 文件靠后缀区分格式,建议带上
contentTypestring否image/* 按图片限额,其余按文件限额
sizeinteger否字节数,超限直接拒

返回字段

字段类型说明
okboolean
ticketstring
putPathstring上传地址(相对路径,拼在 API 域名后)
maxBytesinteger
expiresInSecinteger

错误

  • 400 BAD_REQUEST 缺 taskId / TOO_LARGE / INVALID_STATE 该任务无需提交凭证 / TASK_ENDED
  • 404 TASK_NOT_FOUND:任务不存在、已下架或不属于本企业
  • 503 STORAGE_UNAVAILABLE

调用示例

1curl -X POST "https://api.gowu.net/v1/enterprise/task-proof" \2  -H "x-app-key: $GOWU_APP_KEY" \3  -H "x-timestamp: $TS" \4  -H "x-nonce: $NONCE" \5  -H "x-sign-version: 2" \6  -H "x-signature: $SIG" \7  -H "x-open-user: u-001" \8  -H "content-type: application/json" \9  -d '{"taskId":"string"}'

返回示例

1{2  "ok": true,3  "ticket": "string",4  "putPath": "string",5  "maxBytes": 0,6  "expiresInSec": 07}