--- title: 职来后端接口 language_tabs: - shell: Shell - http: HTTP - javascript: JavaScript - ruby: Ruby - python: Python - php: PHP - java: Java - go: Go toc_footers: [] includes: [] search: true code_clipboard: true highlight_theme: darkula headingLevel: 2 generator: "@tarslib/widdershins v4.0.30" --- # 职来后端接口 Base URLs: # Authentication - HTTP Authentication, scheme: bearer
通过 /auth/login 获取的 Access Token,请求头格式:Authorization: Bearer <token> # Default ## GET 评分完整性概览(ADMIN) GET /admin/scoring/fairness/overview ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |period|query|string| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "basis": "string", "scope": "string", "period": "string", "capturedAt": "2019-08-24T14:15:22Z", "populationSize": 0, "computableSnapshotRatio": 0, "confidence": "string", "riskLevel": "string", "versionCounts": { "property1": 0, "property2": 0 }, "mixedVersionCount": 0, "unknownVersionCount": 0, "distribution": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" }, "distributionsByRulesVersion": { "property1": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" }, "property2": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" } }, "coherentVersionSubset": [ "string" ], "availability": "string", "reason": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseFairnessResponseOverview](#schemaapiresponsefairnessresponseoverview)| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|非法 period|None| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|None| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 ADMIN|None| ## GET 评分维度分布(ADMIN) GET /admin/scoring/fairness/dimensions ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |period|query|string| 是 |none| |dimension|query|string| 否 |none| |Authorization|header|string| 否 |none| #### 枚举值 |属性|值| |---|---| |dimension|EDUCATION| |dimension|INTERNSHIP| |dimension|ABILITY| |dimension|COMPLIANCE| |dimension|STABILITY| |dimension|GROWTH| |dimension|INTEGRITY| |dimension|ACTIVITY| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "basis": "string", "scope": "string", "period": "string", "capturedAt": "2019-08-24T14:15:22Z", "dimensions": [ { "dimension": "string", "populationSize": 0, "rowCount": 0, "missingRowCount": 0, "validSampleSize": 0, "confidence": "string", "missingRowRate": 0, "nullScoreRate": 0, "validCoverage": 0, "statusCounts": { "property1": 0, "property2": 0 }, "versionCounts": { "property1": 0, "property2": 0 }, "inconsistentRecordCount": 0, "unknownStatusCount": 0, "outOfRangeScoreCount": 0, "unknownRulesVersionCount": 0, "distribution": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": {}, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" }, "distributionsByRulesVersion": { "property1": { "sampleSize": null, "mean": null, "median": null, "p10": null, "p25": null, "p75": null, "p90": null, "min": null, "max": null, "standardDeviation": null, "buckets": null, "concentrationRate": null, "riskLevel": null, "availability": null, "reason": null }, "property2": { "sampleSize": null, "mean": null, "median": null, "p10": null, "p25": null, "p75": null, "p90": null, "min": null, "max": null, "standardDeviation": null, "buckets": null, "concentrationRate": null, "riskLevel": null, "availability": null, "reason": null } }, "availability": "string", "reason": "string" } ], "availability": "string", "reason": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseFairnessResponseDimensions](#schemaapiresponsefairnessresponsedimensions)| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|非法参数|None| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|None| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 ADMIN|None| ## GET 评分历史漂移(ADMIN) GET /admin/scoring/fairness/drift ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "availability": "UNAVAILABLE", "reason": "string", "capturedAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseFairnessResponseUnavailable](#schemaapiresponsefairnessresponseunavailable)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|None| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 ADMIN|None| ## GET 排名稳定性(ADMIN) GET /admin/scoring/fairness/ranking-stability ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "availability": "UNAVAILABLE", "reason": "string", "capturedAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseFairnessResponseUnavailable](#schemaapiresponsefairnessresponseunavailable)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|None| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 ADMIN|None| ## GET 申诉纠错聚合(ADMIN) GET /admin/scoring/fairness/appeals ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |from|query|string(date)| 否 |none| |to|query|string(date)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "basis": "string", "from": "2019-08-24", "to": "2019-08-24", "capturedAt": "2019-08-24T14:15:22Z", "appealCount": 0, "sampleSize": 0, "statusCounts": { "property1": 0, "property2": 0 }, "statusEventCounts": { "property1": 0, "property2": 0 }, "statusCandidateCounts": { "property1": 0, "property2": 0 }, "confidence": "string", "approvedEverCount": 0, "approvalRate": 0, "rollbackExecutionRate": 0, "duplicateAppealCount": 0, "duplicateAppealRate": 0, "comparableRollbackCount": 0, "comparableRollbackCandidateCount": 0, "changedCount": 0, "changedCandidateCount": 0, "actualScoreChangeRate": 0, "meanDelta": 0, "meanAbsoluteDelta": 0, "duplicateRollbackHistoryCount": 0, "invalidScoreRollbackCount": 0, "ruleVersionChangedRollbackCount": 0, "reasonCounts": { "property1": 0, "property2": 0 }, "availability": "string", "reason": "string", "exposureAppealRateAvailability": "string", "exposureAppealRateReason": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseFairnessResponseAppeals](#schemaapiresponsefairnessresponseappeals)| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|非法日期范围|None| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|None| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 ADMIN|None| # 个人资料 ## GET 查询当前学生资料 GET /profile/me 查询当前登录学生(仅 STUDENT 角色)自己的学生资料。身份仅从 JWT/SecurityContext 获取,不接受 userId、studentUserId 等请求参数;本接口无 Path、Query、Body 参数。若尚未创建个人资料:HTTP 200,data 为空对象 {}(非 null),且不会自动创建数据库记录。当前未设置接口级限流。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 成功;有资料返回资料对象,无资料返回空对象 \{\};message=ok ```json { "code": 200, "message": "ok", "data": { "id": 1, "userId": 2, "realName": "张三", "education": "本科", "school": "某某大学", "graduationYear": 2026, "resumeUrl": "/uploads/resumes/2/resume.pdf", "skills": "[Java, Spring Boot]", "createdAt": "2026-08-24T10:00:00" }, "timestamp": "2026-08-24T10:00:00Z" } ``` > 未登录、Token 缺失/非法/过期;运行时实际返回 code=401、message=not authenticated ```json { "code": 401, "message": "not authenticated", "timestamp": "2026-08-24T10:00:00Z" } ``` > 已登录但不是 STUDENT 角色(COMPANY/ADMIN);code=2002、message=forbidden ```json { "code": 2002, "message": "forbidden", "data": null, "timestamp": "2026-08-24T10:00:00Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功;有资料返回资料对象,无资料返回空对象 {};message=ok|[ApiResponseStudentProfileResponse](#schemaapiresponsestudentprofileresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录、Token 缺失/非法/过期;运行时实际返回 code=401、message=not authenticated|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|已登录但不是 STUDENT 角色(COMPANY/ADMIN);code=2002、message=forbidden|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» code|integer(int32)|false|none||none| |» message|string|false|none||none| |» data|[StudentProfileResponse](#schemastudentprofileresponse)|false|none||none| |»» id|integer(int64)|false|none||none| |»» userId|integer(int64)|false|none||none| |»» realName|string|false|none||none| |»» bio|string|false|none||none| |»» location|string|false|none||none| |»» education|string|false|none||none| |»» school|string|false|none||none| |»» graduationYear|integer(int32)|false|none||none| |»» resumeUrl|string|false|none||none| |»» skills|string|false|none||none| |»» createdAt|string(date-time)|false|none||none| |» requestId|string|false|none||none| |» timestamp|string(date-time)|false|none||none| ## PUT 更新学生资料 PUT /profile/me 仅更新传入的非 null 字段;不存在则自动创建 > Body 请求参数 ```json { "realName": "string", "bio": "string", "location": "string", "education": "string", "school": "string", "graduationYear": 0, "resumeUrl": "string", "skills": [ "string" ] } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[StudentProfileUpdateRequest](#schemastudentprofileupdaterequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 下载简历 GET /profile/me/resume 下载当前学生上传的简历文件,仅 STUDENT 角色 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` "string" ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|string| ## POST 上传简历 POST /profile/me/resume 仅 STUDENT 角色;PDF/DOC/DOCX,≤10MB;上传新简历时替换旧文件 > Body 请求参数 ```yaml file: "" ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|object| 否 |none| |» file|body|string(binary)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## DELETE 删除简历 DELETE /profile/me/resume 删除当前学生的简历文件并清空 resumeUrl,仅 STUDENT 角色 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # 岗位 ## GET 查询已发布岗位列表 GET /jobs 仅返回 PUBLISHED 岗位,支持关键词、城市、用工类型、薪资筛选和分页 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |keyword|query|string| 否 |none| |city|query|string| 否 |none| |employmentType|query|string| 否 |none| |salaryMin|query|integer(int32)| 否 |none| |salaryMax|query|integer(int32)| 否 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 创建岗位 POST /jobs 仅企业账号可调用,新岗位默认 DRAFT 状态 > Body 请求参数 ```json { "title": "string", "description": "string", "requirements": "string", "city": "string", "employmentType": "string", "salaryMin": 0, "salaryMax": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[JobCreateRequest](#schemajobcreaterequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 岗位筛选选项 GET /jobs/filters 返回当前 PUBLISHED 岗位可用的城市、用工类型和薪资范围 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 查询岗位详情(公开) GET /jobs/public/{jobId} 仅返回 PUBLISHED 岗位详情;CLOSED 也可查看详情 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 岗位高级搜索 GET /jobs/search 仅返回 PUBLISHED 岗位,支持关键词、城市、用工类型、薪资、公司筛选、排序和分页 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |keyword|query|string| 否 |none| |city|query|string| 否 |none| |employmentType|query|string| 否 |none| |salaryMin|query|integer(int32)| 否 |none| |salaryMax|query|integer(int32)| 否 |none| |companyId|query|integer(int64)| 否 |none| |sort|query|string| 否 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 查询岗位详情 GET /jobs/{jobId} 企业可查看自己管理的岗位详情 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PUT 更新岗位 PUT /jobs/{jobId} 仅岗位所属企业可修改 > Body 请求参数 ```json { "title": "string", "description": "string", "requirements": "string", "city": "string", "employmentType": "string", "salaryMin": 0, "salaryMax": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[JobUpdateRequest](#schemajobupdaterequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PATCH 发布/关闭岗位 PATCH /jobs/{jobId}/status DRAFT→PUBLISHED,PUBLISHED→CLOSED;禁止非法回退 > Body 请求参数 ```json { "status": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[JobStatusRequest](#schemajobstatusrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # 企业 ## GET 查询当前企业资料 GET /companies/me 返回当前登录用户绑定的企业资料,未绑定企业返回 404 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PUT 更新企业资料 PUT /companies/me 仅更新传入的非 null 字段;未绑定企业时返回 404 > Body 请求参数 ```json { "name": "string", "logoUrl": "string", "description": "string", "industry": "string", "website": "string", "address": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[CompanyUpdateRequest](#schemacompanyupdaterequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 创建企业资料 POST /companies/me 仅 COMPANY 角色可调用;已存在时返回 409 > Body 请求参数 ```json { "name": "string", "logoUrl": "string", "description": "string", "industry": "string", "website": "string", "address": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[CompanyCreateRequest](#schemacompanycreaterequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 查询企业公开详情 GET /companies/{companyId} 匿名可访问,仅返回 6 个公开字段 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |companyId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"id":0,"name":"string","logoUrl":"string","description":"string","industry":"string","verified":true},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCompanyPublicView](#schemaapiresponsecompanypublicview)| ## GET 查询企业公开岗位列表 GET /companies/{companyId}/jobs 匿名可访问,仅返回 PUBLISHED 岗位 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |companyId|path|integer(int64)| 是 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |sort|query|string| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 查询企业入驻状态 GET /companies/me/onboarding 返回当前企业资料、认证状态和允许动作 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"company":{"id":0,"name":"string","logoUrl":"string","description":"string","industry":"string","website":"string","address":"string","verified":true},"onboardingStatus":"string","latestVerification":{"id":0,"status":"string","submittedAt":"2019-08-24T14:15:22Z","decidedAt":"2019-08-24T14:15:22Z"},"missingFields":["string"],"allowedActions":["string"]},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCompanyOnboardingResponse](#schemaapiresponsecompanyonboardingresponse)| # 认证 ## POST 手机号验证码登录 POST /auth/login 手机号验证码登录;新手机号创建 UNASSIGNED 统一账号,identitySelectionRequired=true 时前端必须进入首次身份选择;旧角色保持不变。保留原字段及成功码 200。 > Body 请求参数 ```json { "phone": "string", "code": "string", "purpose": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[LoginRequest](#schemaloginrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 当前用户信息 GET /auth/me 需要 JWT 认证 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 发送短信验证码 POST /auth/sms/send 开发/测试使用 Mock 发送实现;生产环境未接入短信网关时返回服务不可用。验证码不会写入日志。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |phone|query|string| 是 |none| |purpose|query|string| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":"string","property2":"string"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringString](#schemaapiresponsemapstringstring)| ## POST 刷新 Token POST /auth/refresh 使用 Refresh Token 换取新的 Access/Refresh Token 对;旧 Refresh Token 立即失效 > Body 请求参数 ```json { "refreshToken": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[RefreshTokenRequest](#schemarefreshtokenrequest)| 是 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "accessToken": "string", "refreshToken": "string", "expiresIn": 0 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[ApiResponseTokenPairResponse](#schemaapiresponsetokenpairresponse)| ## POST 登出 POST /auth/logout 撤销当前登录会话;需要 Access Token,不接受任何请求体 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "property1": "string", "property2": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[ApiResponseMapStringString](#schemaapiresponsemapstringstring)| ## POST 首次设置密码 POST /auth/password/set > Body 请求参数 ```json { "smsCode": "string", "newPassword": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[PasswordSetRequest](#schemapasswordsetrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"passwordConfigured":true,"reauthenticationRequired":true},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponsePasswordOperationResponse](#schemaapiresponsepasswordoperationresponse)| ## POST 短信找回并重置密码 POST /auth/password/reset > Body 请求参数 ```json { "phone": "string", "smsCode": "string", "newPassword": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[PasswordResetRequest](#schemapasswordresetrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"passwordConfigured":true,"reauthenticationRequired":true},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponsePasswordOperationResponse](#schemaapiresponsepasswordoperationresponse)| ## POST 手机号密码登录 POST /auth/password/login 使用手机号和密码登录,返回 Access/Refresh Token;不自动创建账号 > Body 请求参数 ```json { "phone": "string", "password": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[PasswordLoginRequest](#schemapasswordloginrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 修改密码 POST /auth/password/change > Body 请求参数 ```json { "currentPassword": "string", "newPassword": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[PasswordChangeRequest](#schemapasswordchangerequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"passwordConfigured":true,"reauthenticationRequired":true},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponsePasswordOperationResponse](#schemaapiresponsepasswordoperationresponse)| ## POST 企业注册 POST /auth/company/register 使用 company-register 短信验证码创建企业账号和企业资料 > Body 请求参数 ```json { "phone": "string", "code": "string", "password": "stringstring", "company": { "name": "string", "logoUrl": "string", "description": "string", "industry": "string", "website": "string", "address": "string" } } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[CompanyRegistrationRequest](#schemacompanyregistrationrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"userId":0,"companyId":0,"role":"string","onboardingStatus":"string","accessToken":"string","refreshToken":"string","expiresIn":0},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCompanyRegistrationResponse](#schemaapiresponsecompanyregistrationresponse)| ## POST 首次选择账号身份 POST /auth/identity/select 统一账号一次性选择 STUDENT 或 COMPANY;COMPANY 必须提交 company 资料且注册开关开启。首次成功撤销全部旧会话并返回新凭证;同身份重复请求只返回状态,不重复颁发凭证。 > Body 请求参数 ```json { "identity": "STUDENT", "company": { "name": "string", "logoUrl": "string", "description": "string", "industry": "string", "website": "string", "address": "string" } } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[IdentitySelectionRequest](#schemaidentityselectionrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"userId":0,"role":"string","identitySelectionRequired":true,"companyId":0,"onboardingStatus":"string","accessToken":"string","refreshToken":"string","expiresIn":0,"reauthenticationRequired":true},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseIdentitySelectionResponse](#schemaapiresponseidentityselectionresponse)| # 投递 ## POST 投递岗位 POST /applications 只能投递 PUBLISHED 状态的岗位,不可重复投递 > Body 请求参数 ```json { "jobId": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[ApplicationCreateRequest](#schemaapplicationcreaterequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 我的投递列表 GET /applications/me 查看当前学生自己的投递记录,支持 status 筛选和分页 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |status|query|string| 否 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 投递详情 GET /applications/{id} 查看自己的投递记录详情 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PATCH 更新投递状态(企业) PATCH /applications/{id}/status SUBMITTED→VIEWED→INTERVIEW→REJECTED/HIRED > Body 请求参数 ```json { "status": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[ApplicationStatusRequest](#schemaapplicationstatusrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 投递状态时间线 GET /applications/{id}/timeline 学生本人或岗位所属企业可查看状态变更历史 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":[{"property1":null,"property2":null}],"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListMapStringObject](#schemaapiresponselistmapstringobject)| ## POST 撤回投递 POST /applications/{id}/withdraw 仅 SUBMITTED/VIEWED 状态可撤回,撤回后不可逆 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 查看岗位投递列表(企业) GET /company/applications 企业查看自己发布的某个岗位收到的投递,支持 status 筛选和分页 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|query|integer(int64)| 是 |none| |status|query|string| 否 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 企业候选人列表 GET /company/candidates 跨岗位查询本企业所有候选人投递,支持按岗位、状态、关键词筛选,支持分页和排序 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|query|integer(int64)| 否 |none| |status|query|string| 否 |none| |keyword|query|string| 否 |none| |sort|query|string| 否 |none| |order|query|string| 否 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"items":[{"applicationId":0,"jobId":0,"jobTitle":"string","status":"string","candidateName":"string","candidateSchool":"string","candidateEducation":"string","candidateGraduationYear":0,"candidateAvatarUrl":"string","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"}],"total":0,"page":0,"size":0,"totalPages":0},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCandidateListResponse](#schemaapiresponsecandidatelistresponse)| ## GET 企业候选人详情 GET /company/candidates/{applicationId} 查看投递详情及候选人公开资料,只能查看本企业岗位下的投递 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |applicationId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"applicationId":0,"jobId":0,"jobTitle":"string","jobCity":"string","jobEmploymentType":"string","status":"string","coverLetter":"string","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","candidateName":"string","candidateAvatarUrl":"string","candidateBio":"string","candidateLocation":"string","candidateSchool":"string","candidateEducation":"string","candidateGraduationYear":0,"candidateSkills":["string"]},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCandidateDetailView](#schemaapiresponsecandidatedetailview)| ## GET 企业下载候选人简历 GET /company/candidates/{applicationId}/resume 按候选人隐私设置授权后返回简历文件流;不返回存储路径、学生 ID 或联系方式 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |applicationId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` "string" ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|string| # 系统 ## GET 应用健康检查 GET /health 返回应用及依赖服务状态 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 应用信息 GET /info 返回应用版本、运行时信息 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # health-controller ## GET healthDetails GET /health/details ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # API ## GET API 信息 GET / 返回 API v0.1 基本信息 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # 简历版本 ## GET 简历版本列表 GET /profile/me/resume-versions 本人 ACTIVE 版本,version_no 倒序 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":[{"property1":null,"property2":null}],"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListMapStringObject](#schemaapiresponselistmapstringobject)| ## POST 创建简历版本 POST /profile/me/resume-versions 仅本人(STUDENT);PDF/DOC/DOCX ≤10MB;可附版本名 > Body 请求参数 ```yaml file: "" ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |name|query|string| 否 |none| |Authorization|header|string| 否 |none| |body|body|object| 否 |none| |» file|body|string(binary)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 简历版本详情 GET /profile/me/resume-versions/{id} 仅本人可查看;他人 403,不存在 404 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PUT 修改简历版本 PUT /profile/me/resume-versions/{id} 本人;可选重命名 + 可选替换文件(替换时删除旧文件) > Body 请求参数 ```yaml file: "" ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |name|query|string| 否 |none| |Authorization|header|string| 否 |none| |body|body|object| 否 |none| |» file|body|string(binary)| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## DELETE 删除简历版本 DELETE /profile/me/resume-versions/{id} 默认版本需先设其他默认;导出进行中不可删;删除文件并移除记录 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 设为默认简历 POST /profile/me/resume-versions/{id}/default 同用户最多一个默认;已默认幂等;并发冲突 409 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 创建简历导出任务 POST /profile/me/resume-versions/{id}/export 异步复制该版本文件到导出目录;返回任务状态 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 导出任务状态 GET /resume-export-tasks/{taskId} 仅本人可查询;SUCCESS 含输出文件,FAILED 含失败原因 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |taskId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 下载导出产物 GET /resume-export-tasks/{taskId}/download 仅本人且任务 SUCCESS 可下载;attachment;不暴露内部路径 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |taskId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` "string" ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|string| # 求职偏好 ## GET 查询求职偏好 GET /profile/me/preferences 仅 STUDENT;无记录时返回空偏好对象 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PUT 保存求职偏好 PUT /profile/me/preferences 仅 STUDENT;upsert,完全替换传入字段 > Body 请求参数 ```json { "expectedSalaryMin": 0, "expectedSalaryMax": 0, "preferredCities": [ "string" ], "employmentTypes": [ "string" ], "preferredIndustries": [ "string" ], "preferredJobTypes": [ "string" ], "remoteAllowed": true, "salaryRangeValid": true } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[StudentPreferenceRequest](#schemastudentpreferencerequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # Offer ## GET Offer 列表 GET /offers 候选人查看收到的、企业查看发出的 Offer;支持 status、applicationId 筛选与分页 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |status|query|string| 否 |none| |applicationId|query|integer(int64)| 否 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 创建 Offer POST /offers 仅企业账号;投递存在、岗位属于本企业、投递状态可发、无有效 Offer;默认 DRAFT > Body 请求参数 ```json { "applicationId": 0, "title": "string", "salaryMin": 0, "salaryMax": 0, "salaryCurrency": "string", "salaryPeriod": "string", "workCity": "string", "employmentType": "string", "probationMonths": 0, "benefits": "string", "description": "string", "expireAt": "2019-08-24T14:15:22Z", "onboardingDate": "2019-08-24", "baseSalary": 0, "housingAllowance": 0, "annualBonusMonths": 0, "otherAllowances": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[OfferCreateRequest](#schemaoffercreaterequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET Offer 比较 GET /offers/compare 仅候选人本人;比较 2-5 个非 DRAFT 的 Offer ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |ids|query|string| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":[{"property1":null,"property2":null}],"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListMapStringObject](#schemaapiresponselistmapstringobject)| ## GET Offer 统计 GET /offers/statistics 仅企业;统计本企业 Offer 状态分布、接受率、平均响应时间 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |months|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET Offer 详情 GET /offers/{id} 仅目标候选人、所属企业可访问;其他账号返回无权限错误 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PUT 修改 Offer PUT /offers/{id} 仅所属企业、仅 DRAFT 状态可修改;其余状态返回业务错误 > Body 请求参数 ```json { "title": "string", "salaryMin": 0, "salaryMax": 0, "salaryCurrency": "string", "salaryPeriod": "string", "workCity": "string", "employmentType": "string", "probationMonths": 0, "benefits": "string", "description": "string", "expireAt": "2019-08-24T14:15:22Z", "onboardingDate": "2019-08-24", "baseSalary": 0, "housingAllowance": 0, "annualBonusMonths": 0, "otherAllowances": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[OfferUpdateRequest](#schemaofferupdaterequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 还价列表 GET /offers/{id}/counter-offers 候选人查看本人 Offer 的还价、企业查看本企业 Offer 的还价 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":[{"property1":null,"property2":null}],"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListMapStringObject](#schemaapiresponselistmapstringobject)| ## POST 发起还价 POST /offers/{id}/counter-offers 仅候选人本人;仅 SENT/NEGOTIATING 可发起;SENT 时自动进入 NEGOTIATING > Body 请求参数 ```json { "proposedSalaryMin": 0, "proposedSalaryMax": 0, "proposedOnboardingDate": "2019-08-24", "reason": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[CounterOfferCreateRequest](#schemacounteroffercreaterequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PATCH 接受还价 PATCH /offers/{id}/counter-offers/{coId}/accept 仅所属企业;接受后更新 Offer 薪资/入职日期并变为 ACCEPTED ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |coId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PATCH 拒绝还价 PATCH /offers/{id}/counter-offers/{coId}/reject 仅所属企业;拒绝后 Offer 保持 NEGOTIATING ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |coId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 手动提醒 POST /offers/{id}/remind 仅所属企业;仅 SENT/NEGOTIATING 可提醒;相同提醒不重复创建 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PATCH Offer 状态变更 PATCH /offers/{id}/status DRAFT→SENT 企业;SENT/NEGOTIATING→ACCEPTED/REJECTED/NEGOTIATING 候选人;重复提交幂等 > Body 请求参数 ```json { "status": "string", "reason": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[OfferStatusRequest](#schemaofferstatusrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET Offer 状态时间线 GET /offers/{id}/timeline 完整状态变更历史,含操作者、原因与请求 ID ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":[{"property1":null,"property2":null}],"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListMapStringObject](#schemaapiresponselistmapstringobject)| # 岗位评价 ## GET 岗位对比 GET /jobs/compare 公开访问;ids 为 2-3 个公开岗位;返回公开岗位字段与公开评分 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |ids|query|string| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":[{"property1":null,"property2":null}],"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListMapStringObject](#schemaapiresponselistmapstringobject)| ## GET 查询岗位评价列表 GET /jobs/{jobId}/reviews 公开访问;仅返回 PUBLISHED 评价,分页;每条含八维评分 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 创建岗位评价 POST /jobs/{jobId}/reviews 仅 STUDENT;同一学生对同一岗位只能评价一次 > Body 请求参数 ```json { "rating": 1, "content": "string", "tags": [ "string" ], "dimensionScores": { "property1": 0, "property2": 0 } } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[JobReviewCreateRequest](#schemajobreviewcreaterequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 评分汇总 GET /jobs/{jobId}/reviews/summary 公开访问;统计 PUBLISHED 评价的平均分、分布和热门标签 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 岗位评价详情 GET /jobs/{jobId}/reviews/{reviewId} 公开访问;返回单条 PUBLISHED 评价与八维评分 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |reviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PUT 修改评价 PUT /jobs/{jobId}/reviews/{reviewId} 仅评价本人可以修改 > Body 请求参数 ```json { "rating": 1, "content": "string", "tags": [ "string" ], "status": "string", "dimensionScores": { "property1": 0, "property2": 0 } } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |reviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[JobReviewUpdateRequest](#schemajobreviewupdaterequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## DELETE 删除评价 DELETE /jobs/{jobId}/reviews/{reviewId} 仅评价本人可以删除 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |reviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # 候选人反馈 ## GET 查询候选人反馈 GET /applications/{applicationId}/feedback 该投递的企业或学生可查看 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |applicationId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"id":1,"applicationId":31,"rating":5,"content":"沟通良好","tags":["string"],"createdAt":"2026-08-25T10:00:00","updatedAt":"2026-08-25T10:00:00"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCandidateFeedbackResponse](#schemaapiresponsecandidatefeedbackresponse)| ## PUT 修改候选人反馈 PUT /applications/{applicationId}/feedback 仅岗位所属企业 > Body 请求参数 ```json { "rating": 1, "content": "string", "tags": [ "string" ] } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |applicationId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[CandidateFeedbackRequest](#schemacandidatefeedbackrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"id":1,"applicationId":31,"rating":5,"content":"沟通良好","tags":["string"],"createdAt":"2026-08-25T10:00:00","updatedAt":"2026-08-25T10:00:00"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCandidateFeedbackResponse](#schemaapiresponsecandidatefeedbackresponse)| ## POST 创建候选人反馈 POST /applications/{applicationId}/feedback 仅岗位所属企业;同一投递只能反馈一次 > Body 请求参数 ```json { "rating": 1, "content": "string", "tags": [ "string" ] } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |applicationId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[CandidateFeedbackRequest](#schemacandidatefeedbackrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"id":1,"applicationId":31,"rating":5,"content":"沟通良好","tags":["string"],"createdAt":"2026-08-25T10:00:00","updatedAt":"2026-08-25T10:00:00"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCandidateFeedbackResponse](#schemaapiresponsecandidatefeedbackresponse)| ## DELETE 删除候选人反馈 DELETE /applications/{applicationId}/feedback 仅岗位所属企业 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |applicationId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # 通知 ## GET 通知列表 GET /notifications 当前用户的通知,分页,按时间倒序 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 全部已读 POST /notifications/read-all 标记当前用户全部通知已读(幂等) ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 未读数 GET /notifications/unread-count 当前用户未读通知数 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 标记已读 POST /notifications/{id}/read 标记单条通知已读(幂等) ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # 岗位收藏 ## GET 我的收藏列表 GET /jobs/favorites 仅 STUDENT;分页,按收藏时间倒序 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 收藏岗位 POST /jobs/{jobId}/favorite 仅 STUDENT;仅 PUBLISHED;幂等 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## DELETE 取消收藏 DELETE /jobs/{jobId}/favorite 仅 STUDENT;幂等,未收藏也返回 200 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # 消息 ## GET 会话列表 GET /conversations 当前用户参与的所有会话 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":[{"property1":null,"property2":null}],"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListMapStringObject](#schemaapiresponselistmapstringobject)| ## POST 创建/获取会话 POST /conversations 创建或返回与另一用户的 DIRECT 会话 > Body 请求参数 ```json { "participantUserId": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[CreateConversationRequest](#schemacreateconversationrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 发送消息 POST /conversations/messages 在会话中发送消息,仅成员可发送 > Body 请求参数 ```json { "conversationId": 0, "content": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[SendMessageRequest](#schemasendmessagerequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 会话详情 GET /conversations/{id} 查看会话信息和未读数 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 消息列表 GET /conversations/{id}/messages 分页查询会话消息,倒序;仅成员可查看 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"items":[{"id":0,"conversationId":0,"senderUserId":0,"senderScope":"string","content":"string","status":"SENT","recalledAt":"2019-08-24T14:15:22Z","createdAt":"2019-08-24T14:15:22Z","isRead":true}],"total":0,"page":0,"size":0,"totalPages":0},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMessagePageResponse](#schemaapiresponsemessagepageresponse)| ## POST 标记已读 POST /conversations/{id}/read 将当前会话所有消息标记为已读 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 撤回消息 POST /conversations/{conversationId}/messages/{messageId}/recall 仅原发送者可在发送后两分钟内撤回消息;重复撤回幂等返回当前状态 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |conversationId|path|integer(int64)| 是 |none| |messageId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"id":0,"conversationId":0,"senderUserId":0,"senderScope":"string","content":"string","status":"SENT","recalledAt":"2019-08-24T14:15:22Z","createdAt":"2019-08-24T14:15:22Z","isRead":true},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMessageResponse](#schemaapiresponsemessageresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|None| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非会话成员或非原发送者|None| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|会话或消息不存在|None| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|撤回窗口已过期或并发冲突|None| # 岗位匹配 ## GET 岗位匹配诊断 GET /jobs/{jobId}/match 仅 STUDENT;返回匹配分、硬性条件、缺口和说明 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # student-review-weight-controller ## GET getPersonalizedScore GET /jobs/{jobId}/personalized-review-score ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"jobId":0,"score":0,"status":"string","source":"string","templateCode":"string","configuredWeights":{"property1":0,"property2":0},"effectiveWeights":{"property1":0,"property2":0},"dimensionScores":{"property1":0,"property2":0},"coveredWeight":0,"missingDimensions":["string"]},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponsePersonalizedScoreResponse](#schemaapiresponsepersonalizedscoreresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 STUDENT 角色|[ApiResponse](#schemaapiresponse)| ## GET getMyWeights GET /profile/me/review-weights ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"source":"string","templateCode":"string","configuredWeights":{"property1":0,"property2":0},"updatedAt":"2019-08-24T14:15:22Z"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseReviewWeightResponse](#schemaapiresponsereviewweightresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 STUDENT 角色|[ApiResponse](#schemaapiresponse)| ## PUT saveWeights PUT /profile/me/review-weights > Body 请求参数 ```json { "templateCode": "string", "weights": { "property1": 0, "property2": 0 } } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[SaveWeightRequest](#schemasaveweightrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"source":"string","templateCode":"string","configuredWeights":{"property1":0,"property2":0},"updatedAt":"2019-08-24T14:15:22Z"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseReviewWeightResponse](#schemaapiresponsereviewweightresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 STUDENT 角色|[ApiResponse](#schemaapiresponse)| ## GET getTemplates GET /review-weight-templates ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":[{"code":"string","name":"string","description":"string","weights":{"property1":0,"property2":0}}],"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListWeightTemplateResponse](#schemaapiresponselistweighttemplateresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| # 双向匹配阈值 ## GET 查询企业匹配阈值 GET /companies/me/match-rule 未配置返回默认 60 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PUT 更新企业匹配阈值 PUT /companies/me/match-rule requiredCandidateScore 0-100;首次更新创建配置 > Body 请求参数 ```json { "requiredCandidateScore": 100 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[CompanyMatchRuleRequest](#schemacompanymatchrulerequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 查询学生匹配阈值 GET /profile/me/match-rule 未配置返回默认 60 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PUT 更新学生匹配阈值 PUT /profile/me/match-rule requiredHrScore 0-100;首次更新创建配置 > Body 请求参数 ```json { "requiredHrScore": 100 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[StudentMatchRuleRequest](#schemastudentmatchrulerequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # 面试 ## GET 查询投递的面试列表 GET /applications/{applicationId}/interviews 学生本人或岗位所属企业可查看 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |applicationId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":[{"property1":null,"property2":null}],"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListMapStringObject](#schemaapiresponselistmapstringobject)| ## POST 创建面试邀请 POST /applications/{applicationId}/interviews 企业为投递记录创建面试邀请 > Body 请求参数 ```json { "roundNo": 0, "title": "string", "interviewType": "string", "startAt": "2019-08-24T14:15:22Z", "endAt": "2019-08-24T14:15:22Z", "timezone": "string", "meetingUrl": "string", "address": "string", "interviewerName": "string", "notes": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |applicationId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[InterviewCreateRequest](#schemainterviewcreaterequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 我的面试列表 GET /interviews/me 查看当前用户相关的面试,支持 status/from/to 筛选和分页 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |status|query|string| 否 |none| |from|query|string(date-time)| 否 |none| |to|query|string(date-time)| 否 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 面试详情 GET /interviews/{interviewId} 学生本人或企业可查看面试详情 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |interviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PUT 修改面试 PUT /interviews/{interviewId} 企业修改面试时间、地点等信息,仅 SCHEDULED/CONFIRMED 状态可修改 > Body 请求参数 ```json { "title": "string", "startAt": "2019-08-24T14:15:22Z", "endAt": "2019-08-24T14:15:22Z", "timezone": "string", "meetingUrl": "string", "address": "string", "interviewerName": "string", "notes": "string", "timeRangeValid": true } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |interviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[InterviewUpdateRequest](#schemainterviewupdaterequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 取消面试 POST /interviews/{interviewId}/cancel 企业取消已安排的面试 > Body 请求参数 ```json { "reason": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |interviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[InterviewCancelRequest](#schemainterviewcancelrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 完成面试 POST /interviews/{interviewId}/complete 企业在面试时间结束后将面试标记为完成 > Body 请求参数 ```json { "property1": "string", "property2": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |interviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|object| 否 |none| |» **additionalProperties**|body|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 响应面试邀请 POST /interviews/{interviewId}/respond 学生接受、拒绝或申请改期 > Body 请求参数 ```json { "action": "string", "reason": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |interviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[InterviewRespondRequest](#schemainterviewrespondrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 面试状态时间线 GET /interviews/{interviewId}/timeline 查看面试状态变更历史 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |interviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":[{"property1":null,"property2":null}],"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListMapStringObject](#schemaapiresponselistmapstringobject)| # 双向匹配 ## PUT 提交求职者岗位意愿分 PUT /applications/{id}/candidate-interest-score 仅投递本人(STUDENT);0-100;MATCHED/CLOSED 后不可修改 > Body 请求参数 ```json { "score": 100 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[ScoreRequest](#schemascorerequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## PUT 提交企业 HR 适配分 PUT /applications/{id}/hr-suitability-score 仅岗位所属企业;0-100;MATCHED/CLOSED 后不可修改 > Body 请求参数 ```json { "score": 100 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[ScoreRequest](#schemascorerequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 查询投递匹配状态 GET /applications/{id}/match 仅投递求职者或岗位所属企业;不暴露内部路径/事件 ID ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # 企业认证 ## GET 待审核认证列表 GET /admin/companies/verifications 管理员查看认证申请列表,支持 status/from/to 筛选和分页 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |status|query|string| 否 |none| |from|query|string(date-time)| 否 |none| |to|query|string(date-time)| 否 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 认证审核历史 GET /admin/companies/verifications/history 管理员查看某个认证申请的审核历史 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |verificationId|query|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":[{"property1":null,"property2":null}],"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListMapStringObject](#schemaapiresponselistmapstringobject)| ## GET 认证详情 GET /admin/companies/verifications/{id} 管理员查看认证申请详情 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 审核决定 POST /admin/companies/verifications/{id}/decision 管理员通过或拒绝认证申请,拒绝时必须填写原因 > Body 请求参数 ```json { "decision": "string", "reason": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[VerificationDecisionRequest](#schemaverificationdecisionrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 查询企业认证状态 GET /companies/me/verification 企业查询自己的认证状态和历史 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 提交企业认证 POST /companies/me/verification 企业提交认证材料(营业执照等),只能提交自己的认证 > Body 请求参数 ```json { "materialsJson": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[VerificationSubmitRequest](#schemaverificationsubmitrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # 双向匹配沟通 ## POST 创建/获取匹配会话 POST /applications/{id}/conversation 仅 MATCHED 双方可调用;重复调用返回同一会话 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| # 评价审核 ## GET 待审评价列表 GET /admin/reviews/pending 仅 ADMIN;分页 + jobId/riskLevel/createdFrom/createdTo 筛选;不返回明文 IP/UA ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|query|integer(int64)| 否 |none| |riskLevel|query|string| 否 |none| |createdFrom|query|string(date-time)| 否 |none| |createdTo|query|string(date-time)| 否 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 评价审核决策 POST /admin/reviews/{reviewId}/decision 仅 ADMIN;仅 PENDING 可审,重复提交 409;决策写入历史与 audit_logs > Body 请求参数 ```json { "decision": "string", "reason": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |reviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[ReviewDecisionRequest](#schemareviewdecisionrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## GET 审核历史 GET /admin/reviews/history 仅 ADMIN;分页返回审核结果、审核人、时间与原因 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 企业回复审核决策 POST /admin/reviews/replies/{replyId}/decision 仅 ADMIN;仅 PENDING 可审,重复提交 409 > Body 请求参数 ```json { "decision": "APPROVED", "reason": "内容合规,同意公开" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |replyId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[ReviewDecisionRequest](#schemareviewdecisionrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"id":0,"content":"string","status":"string","version":0,"updatedAt":"2019-08-24T14:15:22Z","rejectionReason":"string"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCompanyReviewReplyResponse](#schemaapiresponsecompanyreviewreplyresponse)| ## GET 待审企业回复列表 GET /admin/reviews/replies/pending 仅 ADMIN;分页 + 企业/岗位/回复状态/创建时间范围筛选;moderationStatus 缺省为 PENDING ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |companyId|query|integer(int64)| 否 |none| |jobId|query|integer(int64)| 否 |none| |moderationStatus|query|string| 否 |none| |createdFrom|query|string(date-time)| 否 |none| |createdTo|query|string(date-time)| 否 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"items":[{"id":1,"reviewId":100,"companyUserId":5,"content":"感谢您的反馈,我们会持续改进","moderationStatus":"PENDING","moderationReason":"内容合规","createdAt":"2026-09-01T10:00:00","updatedAt":"2026-09-01T10:00:00","moderationUpdatedAt":"2026-09-01T10:00:00","jobId":50,"jobTitle":"Java 后端工程师","companyId":2,"companyName":"本源科技","reviewRating":3,"reviewContent":"整体体验不错","studentUserId":2}],"total":0,"page":0,"size":0,"totalPages":0},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponsePageResponseAdminCompanyReviewReplyResponse](#schemaapiresponsepageresponseadmincompanyreviewreplyresponse)| # 求职者评分卡 ## GET 查询百分位 GET /profile/me/candidate-percentile 仅 STUDENT;返回自己在候选人中的评分百分位 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"candidateId":0,"status":"string","scoreType":"string","score":0,"percentile":0,"cohortSize":0,"sampleCount":0,"minimumSampleCount":0},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCandidatePercentileResponse](#schemaapiresponsecandidatepercentileresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 STUDENT 角色|[ApiResponse](#schemaapiresponse)| ## GET 查询求职者评分卡 GET /profile/me/candidate-score-card 仅 STUDENT;返回自己的评价聚合卡 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"candidateId":0,"status":"string","overallScore":0,"sampleCount":0,"feedbackSummary":{"totalCount":0,"averageRating":0,"ratingDistribution":{"property1":0,"property2":0},"tags":[{"name":"string","count":0}]},"matchSignals":{"candidateInterestScore":{"average":0,"sampleCount":0},"hrSuitabilityScore":{"average":0,"sampleCount":0}},"unsupportedDimensions":["string"],"generatedAt":"2019-08-24T14:15:22Z"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCandidateScoreCardResponse](#schemaapiresponsecandidatescorecardresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 STUDENT 角色|[ApiResponse](#schemaapiresponse)| ## GET 查询评分趋势 GET /profile/me/candidate-score-trend 仅 STUDENT;返回最近月份的反馈趋势 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |months|query|integer(int32)| 否 |统计月数,默认 6,范围 1-24| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"candidateId":0,"months":0,"items":[{"month":"string","feedbackCount":0,"averageRating":0,"ratingScore":0}]},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCandidateScoreTrendResponse](#schemaapiresponsecandidatescoretrendresponse)| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|参数不合法|[ApiResponseCandidateScoreTrendResponse](#schemaapiresponsecandidatescoretrendresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 STUDENT 角色|[ApiResponse](#schemaapiresponse)| # 求职者评分体系 ## GET 企业候选人评分卡 GET /company/candidates/{applicationId}/scoring 仅岗位所属企业;只读,仅返回 applicationId/overallScore/status/dimensions/generatedAt/rulesVersion,不泄露候选人敏感信息 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |applicationId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"applicationId":0,"overallScore":0,"status":"string","dimensions":[{"dimension":"string","score":0,"status":"string"}],"generatedAt":"2019-08-24T14:15:22Z","rulesVersion":"string"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCompanyCandidateScoringResponse](#schemaapiresponsecompanycandidatescoringresponse)| ## GET 综合评分卡 GET /profile/me/candidate-scoring 仅 STUDENT;返回本人 8 维评分、综合分、权重与状态 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"candidateId":0,"status":"string","overallScore":0,"weights":{"property1":0,"property2":0},"dimensions":[{"dimension":"string","score":0,"status":"string","weight":0,"summary":"string"}],"rulesVersion":"string","generatedAt":"2019-08-24T14:15:22Z","explanationVersion":"string","coverage":{"computableDimensions":0,"totalDimensions":0,"includedDimensions":["string"],"excludedDimensions":[{"dimension":"string","status":"string","reason":"string"}]},"comparabilityNotice":"string"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCandidateScoringOverviewResponse](#schemaapiresponsecandidatescoringoverviewresponse)| ## GET 单维度明细 GET /profile/me/candidate-scoring/dimensions/{dimension} 仅 STUDENT;返回某维度分项、归因与数据源;非法 dimension 返回 400 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |dimension|path|string| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"dimension":"string","score":0,"status":"string","subScores":[{"name":"string","score":0,"weight":0,"description":"string"}],"reasons":["string"],"dataSources":[{"source":"string","time":"2019-08-24T14:15:22Z","note":"string"}],"updatedAt":"2019-08-24T14:15:22Z","rulesVersion":"string","displayName":"string","whatItMeasures":"string","interpretation":"string","limitations":["string"],"evidenceLevel":"DIRECT_RULE","ruleContributions":[{"ruleCode":"string","outcome":"APPLIED","contribution":0,"maxContribution":0,"label":"string","observation":"string","explanation":"string"}],"improvementActions":["string"],"explanationVersion":"string","validity":{"completedAt":"2019-08-24T14:15:22Z","validUntil":"2019-08-24T14:15:22Z","expired":true},"calculatedAt":"2019-08-24T14:15:22Z"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseDimensionScoreDetailResponse](#schemaapiresponsedimensionscoredetailresponse)| ## GET 评分趋势 GET /profile/me/candidate-scoring/trend 仅 STUDENT;基于快照按月返回综合分与维度分(months 1-24) ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |months|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"candidateId":0,"months":0,"items":[{"period":"string","overallScore":0,"rulesVersion":"string","dimensions":{"property1":0,"property2":0}}]},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCandidateScoringTrendResponse](#schemaapiresponsecandidatescoringtrendresponse)| # 评分治理 ## GET 全部申诉列表 GET /admin/candidate-scoring/appeals 仅 ADMIN ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |status|query|string| 否 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 审核决定 POST /admin/candidate-scoring/appeals/{appealId}/decision 仅 ADMIN;APPROVE/REJECT,REJECT 必须填 reason > Body 请求参数 ```json { "decision": "string", "reason": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |appealId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[AppealDecisionRequest](#schemaappealdecisionrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"appealId":0,"candidateId":0,"dimension":"string","period":"string","status":"string","reason":"string","decision":"string","decisionReason":"string","reviewerId":0,"reviewedAt":"2019-08-24T14:15:22Z","rollbackAt":"2019-08-24T14:15:22Z","scoreAtAppeal":0,"snapshotVersionAtAppeal":0,"rulesVersion":"string","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseAppealResponse](#schemaapiresponseappealresponse)| ## GET 申诉历史 GET /admin/candidate-scoring/appeals/{appealId}/history 本人(脱敏,无 actorUserId)或 ADMIN(全量);此路径的本人放行先于 ADMIN 通用规则 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |appealId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":[{"id":0,"fromStatus":"string","toStatus":"string","actorUserId":0,"actorRole":"string","reason":"string","createdAt":"2019-08-24T14:15:22Z"}],"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListAppealHistoryItem](#schemaapiresponselistappealhistoryitem)| ## POST 执行回滚 POST /admin/candidate-scoring/appeals/{appealId}/rollback 仅 ADMIN;记录前态+确定性重算+新版本;年 3 次上限 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |appealId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"appealId":0,"candidateId":0,"dimension":"string","period":"string","status":"string","reason":"string","decision":"string","decisionReason":"string","reviewerId":0,"reviewedAt":"2019-08-24T14:15:22Z","rollbackAt":"2019-08-24T14:15:22Z","scoreAtAppeal":0,"snapshotVersionAtAppeal":0,"rulesVersion":"string","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseAppealResponse](#schemaapiresponseappealresponse)| ## GET 快照变更审计 GET /admin/candidate-scoring/snapshots/{candidateUserId}/{dimension}/{period}/history 仅 ADMIN;按学生+维度+周期查看回滚前后完整变化 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |candidateUserId|path|integer(int64)| 是 |none| |dimension|path|string| 是 |none| |period|path|string| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":[{"id":0,"appealId":0,"action":"string","dimension":"string","period":"string","beforeScore":0,"afterScore":0,"beforeVersion":0,"afterVersion":0,"beforeRulesVersion":"string","afterRulesVersion":"string","createdAt":"2019-08-24T14:15:22Z"}],"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListSnapshotHistoryItem](#schemaapiresponselistsnapshothistoryitem)| ## GET 我的申诉列表 GET /profile/me/candidate-scoring/appeals 仅 STUDENT 本人 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |status|query|string| 否 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"property1":null,"property2":null},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseMapStringObject](#schemaapiresponsemapstringobject)| ## POST 提交评分申诉 POST /profile/me/candidate-scoring/appeals 仅 STUDENT 本人;同一学生+维度+周期 PENDING/APPROVED 唯一 > Body 请求参数 ```json { "dimension": "string", "period": "string", "reason": "string", "idempotencyKey": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[CreateAppealRequest](#schemacreateappealrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"appealId":0,"candidateId":0,"dimension":"string","period":"string","status":"string","reason":"string","decision":"string","decisionReason":"string","reviewerId":0,"reviewedAt":"2019-08-24T14:15:22Z","rollbackAt":"2019-08-24T14:15:22Z","scoreAtAppeal":0,"snapshotVersionAtAppeal":0,"rulesVersion":"string","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseAppealResponse](#schemaapiresponseappealresponse)| ## GET 申诉详情 GET /profile/me/candidate-scoring/appeals/{appealId} 本人或 ADMIN ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |appealId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"appealId":0,"candidateId":0,"dimension":"string","period":"string","status":"string","reason":"string","decision":"string","decisionReason":"string","reviewerId":0,"reviewedAt":"2019-08-24T14:15:22Z","rollbackAt":"2019-08-24T14:15:22Z","scoreAtAppeal":0,"snapshotVersionAtAppeal":0,"rulesVersion":"string","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseAppealResponse](#schemaapiresponseappealresponse)| ## POST 撤销申诉 POST /profile/me/candidate-scoring/appeals/{appealId}/cancel 仅本人;仅 PENDING 可撤销 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |appealId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"appealId":0,"candidateId":0,"dimension":"string","period":"string","status":"string","reason":"string","decision":"string","decisionReason":"string","reviewerId":0,"reviewedAt":"2019-08-24T14:15:22Z","rollbackAt":"2019-08-24T14:15:22Z","scoreAtAppeal":0,"snapshotVersionAtAppeal":0,"rulesVersion":"string","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseAppealResponse](#schemaapiresponseappealresponse)| # 评分运营看板 ## GET 全局运营概览 GET /admin/scoring/dashboard/overview 仅 ADMIN ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"totalCompanies":0,"totalJobs":0,"totalCandidates":0,"avgCandidateScore":0,"topCompanies":[{"companyId":0,"companyName":"string","avgCandidateScore":0,"jobCount":0}]},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseAdminDashboardOverviewResponse](#schemaapiresponseadmindashboardoverviewresponse)| ## GET 候选人评分排名 GET /company/scoring/dashboard/candidate-rankings 仅 COMPANY;按学生去重;overallScore DESC, applicationId DESC ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"items":[{"applicationId":0,"jobId":0,"candidateName":"string","candidateSchool":"string","overallScore":0,"percentile":0,"sampleCount":0}],"total":0,"page":0,"size":0,"totalPages":0},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCandidateRankingListResponse](#schemaapiresponsecandidaterankinglistresponse)| ## GET 单候选人评分排名明细 GET /company/scoring/dashboard/candidate-rankings/{applicationId} 仅 COMPANY;跨企业 403/8004 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |applicationId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"applicationId":0,"jobId":0,"candidateName":"string","candidateSchool":"string","overallScore":0,"percentile":0,"cohortSize":0,"dimensionScores":[{"dimension":"string","score":0,"status":"string"}]},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCandidateRankingDetailResponse](#schemaapiresponsecandidaterankingdetailresponse)| ## GET 岗位评分排名 GET /company/scoring/dashboard/job-rankings 仅 COMPANY;avgRating DESC, jobId DESC;审核通过评价 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"items":[{"jobId":0,"title":"string","city":"string","employmentType":"string","avgRating":0,"reviewCount":0,"rank":0,"cohortSize":0,"dimensionAverages":{"property1":0,"property2":0}}],"total":0,"page":0,"size":0,"totalPages":0},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseJobRankingListResponse](#schemaapiresponsejobrankinglistresponse)| ## GET 单岗位评分排名 GET /company/scoring/dashboard/job-rankings/{jobId} 仅 COMPANY;跨企业 403/8004 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"jobId":0,"title":"string","city":"string","employmentType":"string","avgRating":0,"reviewCount":0,"rank":0,"cohortSize":0,"dimensionAverages":{"property1":0,"property2":0}},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseJobRankingItem](#schemaapiresponsejobrankingitem)| ## GET 企业评分运营概览 GET /company/scoring/dashboard/overview 仅 COMPANY;只返回本企业数据 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"companyId":0,"totalJobs":0,"publishedJobs":0,"avgJobScore":0,"totalCandidates":0,"avgCandidateScore":0,"scoreDistribution":{"property1":0,"property2":0},"updatedAt":"2019-08-24T14:15:22Z"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseDashboardOverviewResponse](#schemaapiresponsedashboardoverviewresponse)| ## GET 企业评分趋势 GET /company/scoring/dashboard/trend 仅 COMPANY;months 1–24 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |months|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"companyId":0,"months":0,"items":[{"period":"string","overallScore":0,"rulesVersion":"string","dimensions":{"property1":0,"property2":0}}]},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseScoreTrendResponse](#schemaapiresponsescoretrendresponse)| ## GET 企业回复率统计 GET /company/review-reply/stats 仅企业;返回本公司本月回复率、行业平均回复率、本月待回复条数 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 # 账号 ## GET 查询注销状态 GET /account/deletion-request 查询注销状态 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 200, "message": "success", "requestId": "string", "timestamp": "string", "data": { "id": 0, "userId": 0, "status": "string", "applyTime": "string", "expireTime": "string" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» code|integer|true|none||none| |» message|string|true|none||none| |» requestId|string|true|none||none| |» timestamp|string(date‑time)|true|none||none| |» data|object¦null|true|none||none| |»» id|integer|false|none||none| |»» userId|integer|false|none||none| |»» status|string|false|none||PENDING待注销 / CANCELLED已撤销 / COMPLETED已注销| |»» applyTime|string(date‑time)|false|none||none| |»» expireTime|string(date‑time)|false|none||none| ## POST 注销账号 POST /account/deletion-request 注销账号 > Body 请求参数 ```json { "reason": "ad exercitation ex in in" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|object| 是 |none| |» reason|body|string| 是 |none| > 返回示例 > 200 Response ```json {"code":200,"message":"ok","data":{"reason":"ad exercitation ex in in","completedAt":"2026-08-26T17:01:31.7861713","requestedAt":"2026-08-26T17:01:31.7861713","status":"COMPLETED"},"requestId":"dade5739b05d4fd2","timestamp":"2026-08-26T09:01:31.946347100Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|none|Inline| ### 返回数据结构 状态码 **200** |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |» code|integer|true|none||none| |» message|string|true|none||none| |» requestId|string|true|none||none| |» timestamp|string(date-time)|true|none||none| |» data|object|true|none||none| |»» id|integer|false|none||none| |»» userId|integer|false|none||none| |»» status|string|false|none||COMPLETED‑立即注销完成| |»» applyTime|string(date-time)|false|none||none| |»» reason|string¦null|false|none||用户填写的注销原因,非必填| # 同岗位竞争力排名 ## GET 同岗位竞争力排名 GET /jobs/{jobId}/competition-ranking 仅 STUDENT 且已投递该(PUBLISHED)岗位的学生可查看。返回本人排名/综合分/百分位/维度/缺口及匿名 Top 5。COMPANY/ADMIN 或未投递学生返回 403;岗位不存在或非 PUBLISHED 返回 404。身份仅取自 JWT,不接收 userId/studentUserId/candidateId 参数。topCandidates 每项仅含 rank 与 overallScore,不含任何身份字段(studentUserId/candidateId/name/school/phone/email/resumeUrl/applicationId)。cohort 排除 WITHDRAWN/REJECTED 投递。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":null,"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponse](#schemaapiresponse)| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|jobId 为空或 <=0|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 STUDENT 角色或学生未投递该岗位|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|岗位不存在或岗位状态非 PUBLISHED|[ApiResponse](#schemaapiresponse)| # 求职进度 ## GET 统一求职进度聚合 GET /profile/me/career-progress 只读学生端接口:汇总当前学生的投递分页、岗位摘要、下一场面试、最近已提交结构化面试评分、可展示 Offer、同岗位竞争力排名,以及待办/通知计数(仅计数,不含通知标题/正文/详情)。仅 STUDENT 可访问,身份仅从 JWT/SecurityContext 获取,不接受 userId/studentUserId/candidateId 参数;COMPANY/ADMIN 返回 403/2002,未登录返回 401,参数非法返回 400/1001。通知详情仍由既有 /notifications 提供。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |status|query|string| 否 |none| |Authorization|header|string| 否 |none| #### 枚举值 |属性|值| |---|---| |status|SUBMITTED| |status|VIEWED| |status|INTERVIEW| |status|HIRED| |status|REJECTED| |status|WITHDRAWN| > 返回示例 > 200 Response ``` {"code":200,"message":"ok","data":{"todo":{"pendingInterviewResponseCount":0,"upcomingConfirmedInterviewCount":0,"pendingOfferResponseCount":0,"unreadNotificationCount":0,"unreadReportDecisionCount":0},"applications":{"items":[{"applicationId":0,"applicationStatus":"string","appliedAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","job":{},"nextInterview":{},"latestSubmittedInterviewScore":{},"offer":{},"competition":{}}],"total":0,"page":0,"size":0,"totalPages":0},"generatedAt":"2019-08-24T14:15:22Z"},"requestId":"req-1","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCareerProgressResponse](#schemaapiresponsecareerprogressresponse)| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|page/size/status 参数非法|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 STUDENT 角色|[ApiResponse](#schemaapiresponse)| # account-deletion-controller ## GET getStatus GET /profile/me/deletion ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":200,"message":"ok","data":{"userId":2,"status":"PENDING","requestedAt":"2019-08-24T14:15:22Z","effectiveAt":"2019-08-24T14:15:22Z","cancelledAt":"2019-08-24T14:15:22Z","completedAt":"2019-08-24T14:15:22Z","version":0},"requestId":"req-1","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|success|[ApiResponseAccountDeletionResponse](#schemaapiresponseaccountdeletionresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|error|[ApiResponse](#schemaapiresponse)| ## POST initiate POST /profile/me/deletion ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":200,"message":"ok","data":{"userId":2,"status":"PENDING","requestedAt":"2019-08-24T14:15:22Z","effectiveAt":"2019-08-24T14:15:22Z","cancelledAt":"2019-08-24T14:15:22Z","completedAt":"2019-08-24T14:15:22Z","version":0},"requestId":"req-1","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|success|[ApiResponseAccountDeletionResponse](#schemaapiresponseaccountdeletionresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|error|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|error|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|error|[ApiResponse](#schemaapiresponse)| ## POST cancelAccountDeletion POST /profile/me/deletion/cancel ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":200,"message":"ok","data":{"userId":2,"status":"PENDING","requestedAt":"2019-08-24T14:15:22Z","effectiveAt":"2019-08-24T14:15:22Z","cancelledAt":"2019-08-24T14:15:22Z","completedAt":"2019-08-24T14:15:22Z","version":0},"requestId":"req-1","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|success|[ApiResponseAccountDeletionResponse](#schemaapiresponseaccountdeletionresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|error|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|error|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|error|[ApiResponse](#schemaapiresponse)| # personal-data-export-controller ## GET 查询个人数据导出任务列表 GET /profile/me/data-export-tasks 仅本人;按创建时间倒序分页;status 可选:PENDING/PROCESSING/COMPLETED/FAILED/EXPIRED/CANCELLED ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |page|query|integer| 否 |none| |size|query|integer| 否 |none| |status|query|string| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"items":[{"taskId":0,"status":"string","format":"string","requestedAt":"2019-08-24T14:15:22Z","startedAt":"2019-08-24T14:15:22Z","completedAt":"2019-08-24T14:15:22Z","expiresAt":"2019-08-24T14:15:22Z","sizeBytes":0,"downloadAvailable":true,"errorCode":"string"}],"totalElements":0,"page":0,"size":0},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|success|[ApiResponsePageResponseDataExportTaskResponse](#schemaapiresponsepageresponsedataexporttaskresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|error|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|error|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|error|[ApiResponse](#schemaapiresponse)| ## POST 创建个人数据导出任务 POST /profile/me/data-export-tasks 异步生成 ZIP;同 idempotencyKey 重放返回原任务;注销 PENDING/COMPLETED 禁止创建 > Body 请求参数 ```json { "format": "string", "idempotencyKey": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[CreateDataExportRequest](#schemacreatedataexportrequest)| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"taskId":0,"status":"string","format":"string","requestedAt":"2019-08-24T14:15:22Z","startedAt":"2019-08-24T14:15:22Z","completedAt":"2019-08-24T14:15:22Z","expiresAt":"2019-08-24T14:15:22Z","sizeBytes":0,"downloadAvailable":true,"errorCode":"string"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|success|[ApiResponseDataExportTaskResponse](#schemaapiresponsedataexporttaskresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|error|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|error|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|error|[ApiResponse](#schemaapiresponse)| ## GET 查询个人数据导出任务详情 GET /profile/me/data-export-tasks/{taskId} 仅本人;不暴露 storageKey 与内部字段 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |taskId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"taskId":0,"status":"string","format":"string","requestedAt":"2019-08-24T14:15:22Z","startedAt":"2019-08-24T14:15:22Z","completedAt":"2019-08-24T14:15:22Z","expiresAt":"2019-08-24T14:15:22Z","sizeBytes":0,"downloadAvailable":true,"errorCode":"string"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|success|[ApiResponseDataExportTaskResponse](#schemaapiresponsedataexporttaskresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|error|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|error|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|error|[ApiResponse](#schemaapiresponse)| ## GET 下载个人数据导出 ZIP GET /profile/me/data-export-tasks/{taskId}/download 仅本人且 COMPLETED 未过期;attachment;需 JWT ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |taskId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response > 401 Response ``` {"code":0,"message":"string","data":null,"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|success|string| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|error|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|error|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|error|[ApiResponse](#schemaapiresponse)| # 结构化面试评分 ## PUT 保存评分草稿 PUT /interviews/{interviewId}/score 企业 owner 为已完成的面试保存/更新草稿;草稿阶段五个维度可为空;overallScore 由服务端计算;SUBMITTED 后再次 PUT 返回 409/9503 > Body 请求参数 ```json { "technicalScore": 1, "communicationScore": 1, "problemSolvingScore": 1, "roleFitScore": 1, "professionalismScore": 1, "recommendation": "STRONG_HIRE", "comment": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |interviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[InterviewScoreSaveRequest](#schemainterviewscoresaverequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"id":0,"interviewId":0,"applicationId":0,"status":"DRAFT","technicalScore":0,"communicationScore":0,"problemSolvingScore":0,"roleFitScore":0,"professionalismScore":0,"overallScore":0,"recommendation":"STRONG_HIRE","comment":"string","submittedAt":"2019-08-24T14:15:22Z","version":0,"createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|success|[ApiResponseInterviewScoreResponse](#schemaapiresponseinterviewscoreresponse)| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|非法维度或推荐值|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非企业/跨企业/非岗位 owner|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|面试不存在 8401|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|未完成 9502 / 已提交 9503 / 并发冲突 9501|[ApiResponse](#schemaapiresponse)| ## GET 查看评分 GET /interviews/{interviewId}/score 企业 owner 可看 DRAFT/SUBMITTED;目标学生仅可看 SUBMITTED;无评分返回 404/9504 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |interviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"id":0,"interviewId":0,"applicationId":0,"status":"DRAFT","technicalScore":0,"communicationScore":0,"problemSolvingScore":0,"roleFitScore":0,"professionalismScore":0,"overallScore":0,"recommendation":"STRONG_HIRE","comment":"string","submittedAt":"2019-08-24T14:15:22Z","version":0,"createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|success|[ApiResponseInterviewScoreResponse](#schemaapiresponseinterviewscoreresponse)| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|请求体校验失败|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非目标学生 / 跨企业 / 非岗位 owner / ADMIN|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|无评分 9504 / 面试不存在 8401|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|未完成 9502|[ApiResponse](#schemaapiresponse)| ## POST 提交评分 POST /interviews/{interviewId}/score/submit 将 DRAFT 提交为 SUBMITTED,提交后不可逆;并发冲突 409;重复提交幂等返回原评分 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |interviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"id":0,"interviewId":0,"applicationId":0,"status":"DRAFT","technicalScore":0,"communicationScore":0,"problemSolvingScore":0,"roleFitScore":0,"professionalismScore":0,"overallScore":0,"recommendation":"STRONG_HIRE","comment":"string","submittedAt":"2019-08-24T14:15:22Z","version":0,"createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|success|[ApiResponseInterviewScoreResponse](#schemaapiresponseinterviewscoreresponse)| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|缺维度 1001|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非企业/跨企业/非岗位 owner|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|面试不存在 8401|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|未完成 9502 / 并发冲突 9501|[ApiResponse](#schemaapiresponse)| ## GET 评分历史 GET /interviews/{interviewId}/score/history 企业 owner 可查看全部历史;目标学生仅在 SUBMITTED 后可见;无历史返回 200 空数组;不返回内部用户标识 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |interviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":[{"id":0,"scoreId":0,"interviewId":0,"fromStatus":"DRAFT","toStatus":"DRAFT","actorRole":"COMPANY","snapshot":{"property1":null,"property2":null},"createdAt":"2019-08-24T14:15:22Z"}],"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|success|[ApiResponseListInterviewScoreHistoryItem](#schemaapiresponselistinterviewscorehistoryitem)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非目标学生 / 跨企业 / 非岗位 owner / ADMIN|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|面试不存在 8401|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|未完成 9502|[ApiResponse](#schemaapiresponse)| # 举报与屏蔽 ## POST 提交举报 POST /reports targetType=USER 必填 targetUserId;MESSAGE 必填 messageId;reportedUserId 由服务端推导。同 reporter+idempotencyKey+相同请求体返回原举报 200;不同请求体 409/9606;同目标同分类已有 PENDING 409/9603。限流:每用户每小时 10 次,超限 429/9609。 > Body 请求参数 ```json { "targetType": "USER", "targetUserId": 0, "messageId": 0, "category": "string", "reason": "string", "evidenceUrls": [ "string" ], "idempotencyKey": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[CreateReportRequest](#schemacreatereportrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"id":0,"targetType":"USER","targetUserId":0,"messageId":0,"reportedUserId":0,"category":"string","reason":"string","evidenceUrls":["string"],"status":"PENDING","decision":"RESOLVED","decisionNote":"string","decidedAt":"2019-08-24T14:15:22Z","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","messagePreview":"string","reportedUser":{"userId":0,"nickname":"string","role":"string"},"history":[{"id":0,"fromStatus":"string","toStatus":"string","actorUserId":0,"actorRole":"string","note":"string","createdAt":"2019-08-24T14:15:22Z"}]},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseReportResponse](#schemaapiresponsereportresponse)| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|BAD_REQUEST(1001)/举报自己 9602/理由缺失 9607|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|无权访问消息(2002,不泄露消息是否存在)|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|重复举报 9603 / 幂等冲突 9606|[ApiResponse](#schemaapiresponse)| |429|[Too Many Requests](https://tools.ietf.org/html/rfc6585#section-4)|频率超限 9609|[ApiResponse](#schemaapiresponse)| ## GET 我的举报列表 GET /reports/me 仅返回当前用户创建的举报;身份来自 JWT;不返回举报人内部信息/phone/email/passwordHash/resumeUrl/消息全文;支持 status/page/size。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |status|query|string| 否 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"items":[{"id":0,"targetType":"USER","targetUserId":0,"messageId":0,"reportedUserId":0,"category":"string","reason":"string","evidenceUrls":["string"],"status":"PENDING","decision":"RESOLVED","decisionNote":"string","decidedAt":"2019-08-24T14:15:22Z","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","messagePreview":"string","reportedUser":{"userId":0,"nickname":"string","role":"string"},"history":[{"id":null,"fromStatus":null,"toStatus":null,"actorUserId":null,"actorRole":null,"note":null,"createdAt":null}]}],"totalElements":0,"page":0,"size":0},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponsePageResponseReportResponse](#schemaapiresponsepageresponsereportresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| ## GET 举报详情(本人/ADMIN) GET /reports/{id} 当前举报人本人或 ADMIN 可查看;其他 403/2002;非 ADMIN 不显示举报人内部 ID/手机号/邮箱;MESSAGE 仅返回脱敏 messagePreview。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"id":0,"targetType":"USER","targetUserId":0,"messageId":0,"reportedUserId":0,"category":"string","reason":"string","evidenceUrls":["string"],"status":"PENDING","decision":"RESOLVED","decisionNote":"string","decidedAt":"2019-08-24T14:15:22Z","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","messagePreview":"string","reportedUser":{"userId":0,"nickname":"string","role":"string"},"history":[{"id":0,"fromStatus":"string","toStatus":"string","actorUserId":0,"actorRole":"string","note":"string","createdAt":"2019-08-24T14:15:22Z"}]},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseReportResponse](#schemaapiresponsereportresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非本人非 ADMIN(2002)|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|举报不存在(9601)|[ApiResponse](#schemaapiresponse)| ## PUT 屏蔽用户 PUT /blocks/{blockedUserId} 屏蔽自己 400/9608;目标不存在复用用户不存在错误码;已存在返回 200 不新增;不影响系统通知/投递/Offer/面试/评分/评价。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |blockedUserId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"id":0,"blockedUserId":0,"nickname":"string","createdAt":"2019-08-24T14:15:22Z"},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseBlockRelationResponse](#schemaapiresponseblockrelationresponse)| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|屏蔽自己 9608|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| ## DELETE 解除屏蔽 DELETE /blocks/{blockedUserId} 幂等:不存在时返回 200 不报错。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |blockedUserId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":null,"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK(幂等)|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| ## GET 我的屏蔽列表 GET /blocks/me 仅返回当前用户主动屏蔽的用户;不返回对方手机号/邮箱/密码/简历地址;支持 page/size。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"items":[{"id":0,"blockedUserId":0,"nickname":"string","createdAt":"2019-08-24T14:15:22Z"}],"totalElements":0,"page":0,"size":0},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponsePageResponseBlockRelationResponse](#schemaapiresponsepageresponseblockrelationresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| # 举报管理 ## GET 举报列表(ADMIN) GET /admin/reports 仅 ADMIN;COMPANY/STUDENT/未登录分别 403/403/401;支持 status/targetType/category/page/size;响应脱敏。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |status|query|string| 否 |none| |targetType|query|string| 否 |none| |category|query|string| 否 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"items":[{"id":0,"targetType":"USER","targetUserId":0,"messageId":0,"reportedUserId":0,"category":"string","reason":"string","evidenceUrls":["string"],"status":"PENDING","decision":"RESOLVED","decisionNote":"string","decidedAt":"2019-08-24T14:15:22Z","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","messagePreview":"string","reportedUser":{"userId":0,"nickname":"string","role":"string"},"history":[{"id":null,"fromStatus":null,"toStatus":null,"actorUserId":null,"actorRole":null,"note":null,"createdAt":null}]}],"totalElements":0,"page":0,"size":0},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponsePageResponseReportResponse](#schemaapiresponsepageresponsereportresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 ADMIN|[ApiResponse](#schemaapiresponse)| ## GET 举报详情(ADMIN) GET /admin/reports/{id} 仅 ADMIN;可见类型/分类/理由/脱敏证据 URL/MESSAGE 脱敏内容/会话最小信息/处理历史;不返回密码/JWT/手机号/邮箱/resumeUrl。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"id":0,"targetType":"USER","targetUserId":0,"messageId":0,"reportedUserId":0,"category":"string","reason":"string","evidenceUrls":["string"],"status":"PENDING","decision":"RESOLVED","decisionNote":"string","decidedAt":"2019-08-24T14:15:22Z","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","messagePreview":"string","reportedUser":{"userId":0,"nickname":"string","role":"string"},"history":[{"id":0,"fromStatus":"string","toStatus":"string","actorUserId":0,"actorRole":"string","note":"string","createdAt":"2019-08-24T14:15:22Z"}]},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseReportResponse](#schemaapiresponsereportresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 ADMIN|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|举报不存在(9601)|[ApiResponse](#schemaapiresponse)| ## POST 举报处理决定(ADMIN) POST /admin/reports/{id}/decision 仅 ADMIN;decision 仅 RESOLVED/REJECTED;REJECTED 必填 note;仅 PENDING 可处理,重复 409/9604,非法流转 409/9605;处理后发送一条 REPORT_DECISION 通知。 > Body 请求参数 ```json { "decision": "RESOLVED", "note": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[ReportDecisionRequest](#schemareportdecisionrequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":{"id":0,"targetType":"USER","targetUserId":0,"messageId":0,"reportedUserId":0,"category":"string","reason":"string","evidenceUrls":["string"],"status":"PENDING","decision":"RESOLVED","decisionNote":"string","decidedAt":"2019-08-24T14:15:22Z","createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z","messagePreview":"string","reportedUser":{"userId":0,"nickname":"string","role":"string"},"history":[{"id":0,"fromStatus":"string","toStatus":"string","actorUserId":0,"actorRole":"string","note":"string","createdAt":"2019-08-24T14:15:22Z"}]},"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseReportResponse](#schemaapiresponsereportresponse)| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|参数错误(REJECTED 缺 note)|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 ADMIN|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|举报不存在(9601)|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|重复决定 9604 / 非法流转 9605|[ApiResponse](#schemaapiresponse)| # 企业回复评价 ## GET 查询回复 GET /reviews/{reviewId}/reply 公开访问;回复所属企业可见任意状态,其他用户仅见已审核通过的回复 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |reviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## PUT 更新回复 PUT /reviews/{reviewId}/reply 仅回复所属企业;更新后需重新审核 > Body 请求参数 ```json { "content": "感谢您的反馈,我们会持续改进。" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |reviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|object| 是 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## POST 创建回复 POST /reviews/{reviewId}/reply 仅岗位所属企业;一条评价只能回复一次 > Body 请求参数 ```json { "content": "感谢您的反馈,我们会持续改进。" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |reviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|object| 是 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## DELETE 删除回复 DELETE /reviews/{reviewId}/reply 仅回复所属企业 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |reviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 # RIASEC 职业兴趣测评 ## GET 测评类型列表 GET /assessments/types 返回全部 ACTIVE 测评定义。任意已登录用户可访问;未登录 401。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":null,"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| ## GET 题目列表 GET /assessments/{type}/questions 返回指定测评的 ACTIVE 题目,隐藏维度/reverseScored/source/版本等内部字段。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |type|path|string| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":null,"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|测评类型不存在(9701)|[ApiResponse](#schemaapiresponse)| ## POST 创建答卷 POST /assessments/attempts 照六维各抽 5 题共 30 道并持久化,刷新不重抽。幂等键重放返回原答卷;同键不同定义 409/9709;已有活跃答卷 409/9708。仅 STUDENT。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":null,"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 STUDENT(2002)|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|测评类型不存在(9701)|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|活跃答卷/幂等冲突(9708/9709)|[ApiResponse](#schemaapiresponse)| ## GET 答卷详情 GET /assessments/attempts/{attemptId} 返回本次抽中的 30 道题(固定顺序)、已保存答案、进度与当前状态。仅本人可访问;非 STUDENT 403。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |attemptId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":null,"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非本人或非 STUDENT(2002)|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|答卷不存在(9702)|[ApiResponse](#schemaapiresponse)| ## PATCH 保存答案 PATCH /assessments/attempts/{attemptId}/answers 单题或批量保存,重复保存 upsert;value 1-5;题目必须属于本答卷;版本冲突 409/9707;首次保存后状态置为 IN_PROGRESS。仅本人。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |attemptId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":null,"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非本人或非 STUDENT(2002)|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|答卷不存在(9702)|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|非法状态/并发(9703/9707)|[ApiResponse](#schemaapiresponse)| ## POST 提交答卷 POST /assessments/attempts/{attemptId}/submit 30 题全答且每维各 5 题后方可提交(否则 400/9706);提交后生成结果并写审计;重复提交返回原结果,不重复生成与审计。仅本人。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |attemptId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":null,"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponse](#schemaapiresponse)| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|未完成(9706)|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非本人或非 STUDENT(2002)|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|答卷不存在(9702)|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|非法状态(9703)|[ApiResponse](#schemaapiresponse)| ## GET 查看结果 GET /assessments/attempts/{attemptId}/result 答卷 COMPLETED 后返回聚合分、类型排名、探索方向。仅本人可访问。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |attemptId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":null,"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非本人或非 STUDENT(2002)|[ApiResponse](#schemaapiresponse)| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|答卷不存在(9702)|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|答卷未完成(9703)|[ApiResponse](#schemaapiresponse)| ## GET 我的测评历史 GET /assessments/me 分页返回当前学生的全部答卷与结果概要。仅 STUDENT 本人可访问。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":0,"message":"string","data":null,"requestId":"string","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 STUDENT(2002)|[ApiResponse](#schemaapiresponse)| # privacy-settings-controller ## GET getMyPrivacySettings GET /profile/me/privacy ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {"code":200,"message":"ok","data":{"id":1,"studentUserId":2,"resumeVisibility":"APPLIED_COMPANIES","contactVisible":true,"version":0,"createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"},"requestId":"req-1","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功;无记录时返回默认对象(PRIVATE/contactVisible=false/version=0)|[ApiResponsePrivacySettingsResponse](#schemaapiresponseprivacysettingsresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 STUDENT 角色|[ApiResponse](#schemaapiresponse)| ## PUT updateMyPrivacySettings PUT /profile/me/privacy > Body 请求参数 ```json { "resumeVisibility": "APPLIED_COMPANIES", "contactVisible": true, "version": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[PrivacySettingsUpdateRequest](#schemaprivacysettingsupdaterequest)| 是 |none| > 返回示例 > 200 Response ``` {"code":200,"message":"ok","data":{"id":1,"studentUserId":2,"resumeVisibility":"APPLIED_COMPANIES","contactVisible":true,"version":0,"createdAt":"2019-08-24T14:15:22Z","updatedAt":"2019-08-24T14:15:22Z"},"requestId":"req-1","timestamp":"2019-08-24T14:15:22Z"} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功;返回更新后的隐私设置对象|[ApiResponsePrivacySettingsResponse](#schemaapiresponseprivacysettingsresponse)| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|请求体校验失败(缺少必填字段或非法枚举)|[ApiResponse](#schemaapiresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|[ApiResponse](#schemaapiresponse)| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|非 STUDENT 角色|[ApiResponse](#schemaapiresponse)| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|乐观锁版本冲突(9201)|[ApiResponse](#schemaapiresponse)| # 四维能力测评 ## GET 能力测评类型列表 GET /abilities/types ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "typeCode": "string", "displayName": "string", "description": "string", "questionCount": 0, "attemptQuestionCount": 0, "timeLimitMinutes": 0, "resultValidDays": 0, "status": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseAbilityTypeResponse](#schemaapiresponseabilitytyperesponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|None| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|None| ## POST 创建能力测评答卷 POST /abilities/attempts > Body 请求参数 ```json { "typeCode": "string", "idempotencyKey": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[CreateAbilityAttemptRequest](#schemacreateabilityattemptrequest)| 是 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "attemptId": 0, "status": "string", "answeredCount": 0, "totalQuestions": 0, "completionRate": 0, "startedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "remainingSeconds": 0, "questions": [ { "attemptQuestionId": 0, "position": 0, "itemType": "string", "stem": "string", "options": [ { "optionId": null, "text": null } ], "selectedOptionId": "string" } ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseAbilityAttemptResponse](#schemaapiresponseabilityattemptresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|None| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|None| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|9801|None| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|9808/9809/9810|None| |429|[Too Many Requests](https://tools.ietf.org/html/rfc6585#section-4)|9811|None| ## GET getAbilityAttempt GET /abilities/attempts/{attemptId} ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |attemptId|path|string| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "attemptId": 0, "status": "string", "answeredCount": 0, "totalQuestions": 0, "completionRate": 0, "startedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "remainingSeconds": 0, "questions": [ { "attemptQuestionId": 0, "position": 0, "itemType": "string", "stem": "string", "options": [ { "optionId": null, "text": null } ], "selectedOptionId": "string" } ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseAbilityAttemptResponse](#schemaapiresponseabilityattemptresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|None| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|None| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|404|None| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|409|None| ## PATCH saveAbilityAnswers PATCH /abilities/attempts/{attemptId}/answers > Body 请求参数 ```json { "answers": [ { "attemptQuestionId": 0, "selectedOptionId": "stri" } ] } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |attemptId|path|string| 是 |none| |Authorization|header|string| 否 |none| |body|body|[SaveAbilityAnswersRequest](#schemasaveabilityanswersrequest)| 是 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "attemptId": 0, "status": "string", "answeredCount": 0, "totalQuestions": 0, "completionRate": 0, "startedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "remainingSeconds": 0, "questions": [ { "attemptQuestionId": 0, "position": 0, "itemType": "string", "stem": "string", "options": [ { "optionId": null, "text": null } ], "selectedOptionId": "string" } ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseAbilityAttemptResponse](#schemaapiresponseabilityattemptresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|None| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|None| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|404|None| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|409|None| ## POST submitAbilityAttempt POST /abilities/attempts/{attemptId}/submit ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |attemptId|path|string| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "attemptId": 0, "typeCode": "string", "status": "string", "validityStatus": "string", "validUntil": "2019-08-24T14:15:22Z", "dimensionScores": [ { "code": "string", "score": 0, "answeredCount": 0 } ], "overallScore": 0, "weaknesses": [ { "code": "string", "score": 0 } ], "improvementAreas": [ { "dimension": "string", "currentScore": 0, "summary": "string", "actions": [ "string" ] } ], "radar": [ { "code": "string", "value": 0 } ], "answeredCount": 0, "completionRate": 0, "questionFeedback": [ { "attemptQuestionId": 0, "position": 0, "stem": "string", "selectedOptionId": "string", "awardedScore": 0, "maxScore": 0, "explanation": "string" } ], "questionSetVersion": "string", "rulesVersion": "string", "generatedAt": "2019-08-24T14:15:22Z", "disclaimer": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseAbilityResultResponse](#schemaapiresponseabilityresultresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|None| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|None| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|404|None| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|409|None| ## GET getAbilityResult GET /abilities/attempts/{attemptId}/result ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |attemptId|path|string| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "attemptId": 0, "typeCode": "string", "status": "string", "validityStatus": "string", "validUntil": "2019-08-24T14:15:22Z", "dimensionScores": [ { "code": "string", "score": 0, "answeredCount": 0 } ], "overallScore": 0, "weaknesses": [ { "code": "string", "score": 0 } ], "improvementAreas": [ { "dimension": "string", "currentScore": 0, "summary": "string", "actions": [ "string" ] } ], "radar": [ { "code": "string", "value": 0 } ], "answeredCount": 0, "completionRate": 0, "questionFeedback": [ { "attemptQuestionId": 0, "position": 0, "stem": "string", "selectedOptionId": "string", "awardedScore": 0, "maxScore": 0, "explanation": "string" } ], "questionSetVersion": "string", "rulesVersion": "string", "generatedAt": "2019-08-24T14:15:22Z", "disclaimer": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseAbilityResultResponse](#schemaapiresponseabilityresultresponse)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|None| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|None| |404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|404|None| |409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|409|None| ## GET 我的能力测评历史 GET /abilities/me ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "items": [ { "attemptId": 0, "typeCode": "string", "status": "string", "validityStatus": "string", "overallScore": 0, "answeredCount": 0, "completionRate": 0, "startedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "completedAt": "2019-08-24T14:15:22Z", "validUntil": "2019-08-24T14:15:22Z" } ], "totalElements": 0, "page": 0, "size": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponsePageResponseAbilityHistoryItem](#schemaapiresponsepageresponseabilityhistoryitem)| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|None| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|None| # 风险治理 ## GET 风险概览(ADMIN) GET /admin/scoring/risk/overview ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |from|query|string| 否 |none| |to|query|string| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "openCount": 0, "bySeverity": [ { "severity": "string", "count": 0 } ], "byRule": [ { "ruleCode": "string", "count": 0 } ], "lastDetectedAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseRiskOverviewResponse](#schemaapiresponseriskoverviewresponse)| ## GET 风险趋势(ADMIN) GET /admin/scoring/risk/trend ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |bucket|query|string| 否 |none| |from|query|string| 否 |none| |to|query|string| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "bucket": "string", "items": [ { "time": "2019-08-24T14:15:22Z", "count": 0 } ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseRiskTrendResponse](#schemaapiresponserisktrendresponse)| ## GET 风险分布(ADMIN) GET /admin/scoring/risk/distribution ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |from|query|string| 否 |none| |to|query|string| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "items": [ { "ruleCode": "string", "severity": "string", "count": 0 } ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseRiskDistributionResponse](#schemaapiresponseriskdistributionresponse)| ## GET 风险事件分页(ADMIN) GET /admin/scoring/risk/events ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |page|query|string| 否 |none| |size|query|string| 否 |none| |status|query|string| 否 |none| |severity|query|string| 否 |none| |ruleCode|query|string| 否 |none| |from|query|string| 否 |none| |to|query|string| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "items": [ { "eventId": 0, "ruleCode": "string", "sourceAction": "string", "severity": "string", "status": "string", "occurrenceCount": 0, "windowStartedAt": "2019-08-24T14:15:22Z", "windowEndedAt": "2019-08-24T14:15:22Z", "detectedAt": "2019-08-24T14:15:22Z", "version": 0 } ], "totalElements": 0, "page": 0, "size": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponsePageResponseRiskEventResponse](#schemaapiresponsepageresponseriskeventresponse)| ## GET 风险规则列表(ADMIN) GET /admin/scoring/risk/rules ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": [ { "ruleCode": "string", "sourceAction": "string", "thresholdCount": 0, "windowMinutes": 0, "severity": "string", "enabled": true, "version": 0 } ], "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListRiskRuleResponse](#schemaapiresponselistriskruleresponse)| ## PUT 更新风险规则(ADMIN) PUT /admin/scoring/risk/rules/{ruleCode} > Body 请求参数 ```json { "enabled": true, "thresholdCount": 0, "windowMinutes": 0, "severity": "string", "expectedVersion": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |ruleCode|path|string| 是 |none| |Authorization|header|string| 否 |none| |body|body|[RiskRuleUpdateRequest](#schemariskruleupdaterequest)| 是 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "ruleCode": "string", "sourceAction": "string", "thresholdCount": 0, "windowMinutes": 0, "severity": "string", "enabled": true, "version": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseRiskRuleResponse](#schemaapiresponseriskruleresponse)| ## POST 风险事件人工操作(ADMIN) POST /admin/scoring/risk/events/{eventId}/actions > Body 请求参数 ```json { "action": "string", "reasonCode": "string", "expectedVersion": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |eventId|path|string| 是 |none| |Authorization|header|string| 否 |none| |body|body|[RiskEventActionRequest](#schemariskeventactionrequest)| 是 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "eventId": 0, "ruleCode": "string", "sourceAction": "string", "severity": "string", "status": "string", "occurrenceCount": 0, "windowStartedAt": "2019-08-24T14:15:22Z", "windowEndedAt": "2019-08-24T14:15:22Z", "detectedAt": "2019-08-24T14:15:22Z", "version": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseRiskEventResponse](#schemaapiresponseriskeventresponse)| # 岗位推荐 ## GET recommendationTaxonomies GET /job-recommendation-taxonomies ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": [ { "code": "string", "parentCode": "string", "type": "string", "displayName": "string" } ] } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseListTaxonomyResponse](#schemaapiresponselisttaxonomyresponse)| ## GET myJobRecommendations GET /profile/me/job-recommendations ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |page|query|integer| 否 |none| |size|query|integer| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "items": [ { "jobId": 0, "title": "string", "city": "string", "employmentType": "string", "salaryMin": 0, "salaryMax": 0, "mode": "PERSONALIZED", "score": 0, "reasons": [ "string" ] } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponsePageJobRecommendationItem](#schemaapiresponsepagejobrecommendationitem)| ## POST createRecommendationFeedback POST /profile/me/job-recommendations/{jobId}/feedback > Body 请求参数 ```json { "feedbackType": "string", "reasonType": "string", "idempotencyKey": "string", "expectedVersion": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|string| 是 |none| |Authorization|header|string| 否 |none| |body|body|[RecommendationFeedbackRequest](#schemarecommendationfeedbackrequest)| 是 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "jobId": 0, "feedbackType": "string", "reasonType": "string", "status": "string", "version": 0 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseRecommendationFeedbackResponse](#schemaapiresponserecommendationfeedbackresponse)| ## DELETE revokeNotInterestedFeedback DELETE /profile/me/job-recommendations/{jobId}/feedback ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|string| 是 |none| |expectedVersion|query|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|None| ## GET companyRecommendationProfile GET /companies/me/jobs/{jobId}/recommendation-profile ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|string| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "jobId": 0, "industryCode": "string", "jobFamilyCode": "string", "riasecWeights": { "property1": 0, "property2": 0 }, "abilityExpectations": { "property1": 0, "property2": 0 }, "enabled": true, "reviewStatus": "string", "reviewReason": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseRecommendationProfileResponse](#schemaapiresponserecommendationprofileresponse)| ## PUT updateCompanyRecommendationProfile PUT /companies/me/jobs/{jobId}/recommendation-profile > Body 请求参数 ```json { "industryCode": "string", "jobFamilyCode": "string", "riasecWeights": { "property1": 0, "property2": 0 }, "abilityExpectations": { "property1": 0, "property2": 0 }, "enabled": true, "expectedVersion": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|string| 是 |none| |Authorization|header|string| 否 |none| |body|body|[RecommendationProfileRequest](#schemarecommendationprofilerequest)| 是 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "jobId": 0, "industryCode": "string", "jobFamilyCode": "string", "riasecWeights": { "property1": 0, "property2": 0 }, "abilityExpectations": { "property1": 0, "property2": 0 }, "enabled": true, "reviewStatus": "string", "reviewReason": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseRecommendationProfileResponse](#schemaapiresponserecommendationprofileresponse)| ## GET adminRecommendationProfiles GET /admin/job-recommendation-profiles ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "items": [ { "jobId": 0, "industryCode": "string", "jobFamilyCode": "string", "riasecWeights": { "property1": 0, "property2": 0 }, "abilityExpectations": { "property1": 0, "property2": 0 }, "enabled": true, "reviewStatus": "string", "reviewReason": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z" } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponsePageRecommendationProfileResponse](#schemaapiresponsepagerecommendationprofileresponse)| ## POST decideRecommendationProfile POST /admin/job-recommendation-profiles/{jobId}/decision > Body 请求参数 ```json { "decision": "APPROVE", "reasonCode": "string", "expectedVersion": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|string| 是 |none| |Authorization|header|string| 否 |none| |body|body|[RecommendationDecisionRequest](#schemarecommendationdecisionrequest)| 是 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "jobId": 0, "industryCode": "string", "jobFamilyCode": "string", "riasecWeights": { "property1": 0, "property2": 0 }, "abilityExpectations": { "property1": 0, "property2": 0 }, "enabled": true, "reviewStatus": "string", "reviewReason": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z" } } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseRecommendationProfileResponse](#schemaapiresponserecommendationprofileresponse)| # 企业评价管理 ## GET listCompanyJobReviews GET /companies/me/job-reviews ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|query|integer(int64)| 否 |none| |rating|query|integer| 否 |none| |reviewModerationStatus|query|string| 否 |none| |replyStatus|query|string| 否 |none| |createdFrom|query|string(date-time)| 否 |none| |createdTo|query|string(date-time)| 否 |none| |page|query|integer| 否 |none| |size|query|integer| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "items": [ { "reviewId": 0, "job": { "id": 0, "title": "string" }, "rating": 0, "content": "string", "tags": [ "string" ], "dimensionScores": { "property1": 0, "property2": 0 }, "reviewStatus": "string", "reviewCreatedAt": "2019-08-24T14:15:22Z", "reply": { "id": 0, "content": "string", "status": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z", "rejectionReason": "string" } } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseReviewReplyPageResponse](#schemaapiresponsereviewreplypageresponse)| ## GET getCompanyJobReview GET /companies/me/job-reviews/{reviewId} ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |reviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "reviewId": 0, "job": { "id": 0, "title": "string" }, "rating": 0, "content": "string", "tags": [ "string" ], "dimensionScores": { "property1": 0, "property2": 0 }, "reviewStatus": "string", "reviewCreatedAt": "2019-08-24T14:15:22Z", "reply": { "id": 0, "content": "string", "status": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z", "rejectionReason": "string" } }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCompanyReviewDetailResponse](#schemaapiresponsecompanyreviewdetailresponse)| ## POST createCompanyReviewReply POST /companies/me/job-reviews/{reviewId}/reply > Body 请求参数 ```json { "content": "string", "idempotencyKey": "0c14c6a6-6f50-4d1e-b0c4-b46ff43ba6a1" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |reviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[CreateCompanyReviewReplyRequest](#schemacreatecompanyreviewreplyrequest)| 是 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "id": 0, "content": "string", "status": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z", "rejectionReason": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCompanyReviewReplyResponse](#schemaapiresponsecompanyreviewreplyresponse)| ## PUT reviseCompanyReviewReply PUT /companies/me/job-reviews/{reviewId}/reply > Body 请求参数 ```json { "content": "string", "expectedVersion": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |reviewId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[UpdateCompanyReviewReplyRequest](#schemaupdatecompanyreviewreplyrequest)| 是 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "id": 0, "content": "string", "status": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z", "rejectionReason": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseCompanyReviewReplyResponse](#schemaapiresponsecompanyreviewreplyresponse)| # 官方回复审核 ## GET listPendingReviewReplies GET /admin/review-replies/pending ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |companyId|query|integer(int64)| 否 |none| |jobId|query|integer(int64)| 否 |none| |riskLevel|query|string| 否 |none| |createdFrom|query|string(date-time)| 否 |none| |createdTo|query|string(date-time)| 否 |none| |page|query|integer| 否 |none| |size|query|integer| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "items": [ { "replyId": 0, "reviewId": 0, "jobId": 0, "jobTitle": "string", "companyId": 0, "companyName": "string", "rating": 0, "reviewContent": "string", "reviewModerationStatus": "string", "replyContent": "string", "replyStatus": "string", "version": 0, "riskScore": 0, "riskLevel": "string", "reasonCodes": [ "string" ], "createdAt": "2019-08-24T14:15:22Z" } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseAdminReviewReplyPageResponse](#schemaapiresponseadminreviewreplypageresponse)| ## POST decideReviewReply POST /admin/review-replies/{replyId}/decision > Body 请求参数 ```json { "decision": "APPROVE", "reason": "string" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |replyId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[ReviewReplyDecisionRequest](#schemareviewreplydecisionrequest)| 是 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "replyId": 0, "reviewId": 0, "jobId": 0, "jobTitle": "string", "companyId": 0, "companyName": "string", "rating": 0, "reviewContent": "string", "reviewModerationStatus": "string", "replyContent": "string", "replyStatus": "string", "version": 0, "riskScore": 0, "riskLevel": "string", "reasonCodes": [ "string" ], "createdAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ApiResponseAdminReviewReplyResponse](#schemaapiresponseadminreviewreplyresponse)| # 企业人才发现 ## GET 查询人才发现授权 GET /profile/me/talent-discovery ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "enabled": true, "version": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[ApiResponseTalentDiscoveryPreferenceResponse](#schemaapiresponsetalentdiscoverypreferenceresponse)| ## PUT 更新人才发现授权 PUT /profile/me/talent-discovery > Body 请求参数 ```json { "enabled": true, "expectedVersion": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|[TalentDiscoveryPreferenceUpdateRequest](#schematalentdiscoverypreferenceupdaterequest)| 是 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "enabled": true, "version": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[ApiResponseTalentDiscoveryPreferenceResponse](#schemaapiresponsetalentdiscoverypreferenceresponse)| ## GET 查询岗位人才发现推荐 GET /companies/me/jobs/{jobId}/talent-recommendations ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "mode": "PERSONALIZED", "items": [ { "candidateKey": "string", "candidateLabel": "string", "city": "string", "education": "string", "graduationYear": 0, "skills": [ "string" ], "fitBand": "HIGH", "summary": "string", "signalsAvailable": [ "PREFERENCE" ] } ], "total": 0, "page": 0, "size": 0, "totalPages": 0, "message": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[ApiResponseTalentDiscoveryPageResponse](#schemaapiresponsetalentdiscoverypageresponse)| # 企业人才邀约 ## POST 创建人才邀约 POST /companies/me/jobs/{jobId}/talent-invitations > Body 请求参数 ```json { "candidateKey": "string", "message": "string", "idempotencyKey": "0c14c6a6-6f50-4d1e-b0c4-b46ff43ba6a1" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |jobId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[CreateTalentInvitationRequest](#schemacreatetalentinvitationrequest)| 是 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "invitationId": 0, "jobId": 0, "jobTitle": "string", "candidateLabel": "string", "message": "string", "status": "PENDING", "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z", "conversationId": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[ApiResponseCompanyTalentInvitationResponse](#schemaapiresponsecompanytalentinvitationresponse)| ## GET 企业邀约列表 GET /companies/me/talent-invitations ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "items": [ { "invitationId": 0, "jobId": 0, "jobTitle": "string", "candidateLabel": "string", "message": "string", "status": "PENDING", "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z", "conversationId": 0 } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[ApiResponseCompanyTalentInvitationPageResponse](#schemaapiresponsecompanytalentinvitationpageresponse)| ## GET 企业邀约详情 GET /companies/me/talent-invitations/{invitationId} ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |invitationId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "invitationId": 0, "jobId": 0, "jobTitle": "string", "candidateLabel": "string", "message": "string", "status": "PENDING", "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z", "conversationId": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[ApiResponseCompanyTalentInvitationResponse](#schemaapiresponsecompanytalentinvitationresponse)| ## GET 学生收到的邀约列表 GET /profile/me/talent-invitations ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "items": [ { "invitationId": 0, "companyId": 0, "companyName": "string", "jobId": 0, "jobTitle": "string", "jobCity": "string", "message": "string", "status": "PENDING", "version": 0, "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z", "conversationId": 0 } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[ApiResponseStudentTalentInvitationPageResponse](#schemaapiresponsestudenttalentinvitationpageresponse)| ## GET 学生邀约详情 GET /profile/me/talent-invitations/{invitationId} ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |invitationId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "invitationId": 0, "companyId": 0, "companyName": "string", "jobId": 0, "jobTitle": "string", "jobCity": "string", "message": "string", "status": "PENDING", "version": 0, "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z", "conversationId": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[ApiResponseStudentTalentInvitationResponse](#schemaapiresponsestudenttalentinvitationresponse)| ## POST 处理人才邀约 POST /profile/me/talent-invitations/{invitationId}/decision > Body 请求参数 ```json { "decision": "ACCEPT", "expectedVersion": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |invitationId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|[TalentInvitationDecisionRequest](#schematalentinvitationdecisionrequest)| 是 |none| > 返回示例 > 200 Response ```json { "code": 0, "message": "string", "data": { "invitationId": 0, "companyId": 0, "companyName": "string", "jobId": 0, "jobTitle": "string", "jobCity": "string", "message": "string", "status": "PENDING", "version": 0, "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z", "conversationId": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[ApiResponseStudentTalentInvitationResponse](#schemaapiresponsestudenttalentinvitationresponse)| # 行业技能词云 ## GET 查询行业技能词云 GET /skills/word-cloud 返回当前筛选范围内的全部技能,按热度降序排列;前端取前十条作为 TOP10。仅 STUDENT 可访问。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |industryId|query|integer(int64)| 是 |行业 ID,必填正整数| |occupationId|query|integer(int64)| 是 |职位 ID,必填正整数| |categoryId|query|integer(int64)| 否 |技能分类 ID,可选正整数;省略时返回职位下全部分类| |Authorization|header|string| 否 |none| > 返回示例 > 成功返回筛选范围内的全部技能 ```json { "code": 200, "message": "ok", "data": { "industry": { "id": 1, "code": "INTERNET", "name": "互联网" }, "occupation": { "id": 1, "code": "FRONTEND_DEVELOPER", "name": "前端开发工程师" }, "category": null, "total": 1, "items": [ { "rank": 1, "skillId": 26, "skillCode": "REACT", "nameZh": "React", "nameEn": "React", "sourceType": "O*NET", "sourceCode": "15-1254.00|React|2.E.7.h", "categoryId": 103, "categoryName": "前端框架", "heat": 4.38, "heatSourceCode": "15-1254.00", "heatElementId": "2.E.7.h", "heatProxy": true } ] } } ``` > 400 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功返回筛选范围内的全部技能|Inline| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|筛选参数缺失、非正整数或节点关系非法|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|已登录但不是 STUDENT 角色|Inline| ### 返回数据结构 ## GET 查询个人技能匹配度 GET /skills/match 使用当前 STUDENT 的个人技能,与筛选结果热度 TOP10 比对并返回命中、缺失和匹配度。仅 STUDENT 可访问。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |industryId|query|integer(int64)| 是 |行业 ID,必填正整数| |occupationId|query|integer(int64)| 是 |职位 ID,必填正整数| |categoryId|query|integer(int64)| 否 |技能分类 ID,可选正整数;省略时使用职位下全部技能| |Authorization|header|string| 否 |none| > 返回示例 > 成功返回个人技能匹配结果 ```json { "code": 200, "message": "ok", "data": { "matchScore": 50, "matchedCount": 1, "totalCount": 2, "matchedSkills": [ { "rank": 1, "skillId": 26, "skillCode": "REACT", "nameZh": "React", "nameEn": "React", "sourceType": "O*NET", "sourceCode": "15-1254.00|React|2.E.7.h", "categoryId": 103, "categoryName": "前端框架", "heat": 4.38, "heatSourceCode": "15-1254.00", "heatElementId": "2.E.7.h", "heatProxy": true } ], "missingSkills": [ { "rank": 2, "skillId": 31, "skillCode": "DOCKER", "nameZh": "Docker", "nameEn": "Docker", "sourceType": "O*NET", "sourceCode": "15-1299.08|Docker|2.E.7.h", "categoryId": 105, "categoryName": "工程化工具", "heat": 4.12, "heatSourceCode": "15-1299.08", "heatElementId": "2.E.7.h", "heatProxy": true } ] } } ``` > 400 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功返回个人技能匹配结果|Inline| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|筛选参数缺失、非正整数或节点关系非法|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|已登录但不是 STUDENT 角色|Inline| ### 返回数据结构 ## GET 生成个人学习路径 GET /skills/learning-path 仅针对个人 TOP10 中未命中的技能,按热度顺序返回优先级和通用学习建议。仅 STUDENT 可访问。 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |industryId|query|integer(int64)| 是 |行业 ID,必填正整数| |occupationId|query|integer(int64)| 是 |职位 ID,必填正整数| |categoryId|query|integer(int64)| 否 |技能分类 ID,可选正整数;省略时使用职位下全部技能| |Authorization|header|string| 否 |none| > 返回示例 > 成功返回缺失技能的学习路径;没有缺口时列表为空 ```json { "code": 200, "message": "ok", "data": { "total": 1, "items": [ { "priority": 1, "skillId": 26, "skillName": "React", "categoryId": 103, "categoryName": "前端框架", "suggestion": "先理解 React 的核心概念与生命周期,再通过一个小型项目练习集成。" } ] } } ``` > 400 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功返回缺失技能的学习路径;没有缺口时列表为空|Inline| |400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|筛选参数缺失、非正整数或节点关系非法|Inline| |401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|未登录|Inline| |403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|已登录但不是 STUDENT 角色|Inline| ### 返回数据结构 # 公司知识介绍 ## GET 读取本企业知识配置 GET /onboarding/company/knowledge ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## PUT 创建或更新本企业知识配置 PUT /onboarding/company/knowledge > Body 请求参数 ```json { "culture": "我们倡导透明沟通、长期主义和持续学习。", "workPolicies": "核心工作时间为 10:00-17:00;每周可申请 1 天远程办公。", "onboardingGuide": "入职当天 9:30 到 A 座 8 层前台报到,联系行政同事。", "version": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|object| 是 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## GET 读取公司知识介绍 GET /onboarding/companies/{companyId}/knowledge ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |companyId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 # 入职清单 ## PUT 更新本企业自定义清单项 PUT /onboarding/company/checklist-items/{itemId} 使用 version 执行乐观锁控制 > Body 请求参数 ```json { "title": "领取并激活门禁卡", "description": "到行政前台领取门禁卡,并在企业 App 中完成激活。", "category": "ADMIN", "sortOrder": 900, "required": true, "active": true, "version": 2 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |itemId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|object| 是 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## DELETE 软删除本企业自定义清单项 DELETE /onboarding/company/checklist-items/{itemId} 重复删除保持幂等成功 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |itemId|path|integer(int64)| 是 |none| |version|query|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## PUT 更新清单条目完成状态 PUT /onboarding/companies/{companyId}/checklist/items/{itemId}/completion 使用绝对状态语义设置当前学生的完成状态 > Body 请求参数 ```json { "completed": true, "version": 0 } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |companyId|path|integer(int64)| 是 |none| |itemId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| |body|body|object| 是 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## GET 查询本企业自定义清单项 GET /onboarding/company/checklist-items 返回活动与软删除项及当前版本 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## POST 创建本企业自定义清单项 POST /onboarding/company/checklist-items 支持 idempotencyKey 重放与冲突检测 > Body 请求参数 ```json { "title": "领取门禁卡", "description": "到行政前台领取门禁卡并激活权限。", "category": "ADMIN", "sortOrder": 1000, "required": false, "idempotencyKey": "company-10-card-20260917-001" } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|object| 是 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## GET 读取有效入职清单 GET /onboarding/companies/{companyId}/checklist 返回通用项与企业活动自定义项的合并结果 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |companyId|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 # 薪资计算器 ## GET 查询本人薪资历史 GET /salary-calculator/calculations 仅 STUDENT;按创建时间倒序分页 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |page|query|integer(int32)| 否 |none| |size|query|integer(int32)| 否 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## POST 计算并保存到手工资 POST /salary-calculator/calculations 仅 STUDENT;校验政策版本,支持幂等键 > Body 请求参数 ```json { "cityCode": "110000", "grossMonthlySalary": 15000.00, "monthIndex": 3, "specialAdditionalDeduction": 2000.00, "expectedPolicyVersion": "2026-09-20-v1", "idempotencyKey": "salary-20260921-001", "overrides": { "socialSecurityBase": 15000.00, "housingFundBase": 15000.00, "pensionRate": 0.08, "medicalRate": 0.02, "unemploymentRate": 0.005, "housingFundRate": 0.12, "seriousIllnessMonthlyFee": 0.00 } } ``` ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| |body|body|object| 是 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## GET 查询启用城市列表 GET /salary-calculator/cities 仅 STUDENT;返回全部启用城市摘要,不分页 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## GET 查询城市默认参数 GET /salary-calculator/cities/{cityCode} 仅 STUDENT;返回城市元数据和当前整套默认参数 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |cityCode|path|string| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## GET 查询本人薪资历史详情 GET /salary-calculator/calculations/{id} 仅 STUDENT;返回完整快照 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 ## DELETE 删除本人薪资历史 DELETE /salary-calculator/calculations/{id} 仅 STUDENT;物理删除 ### 请求参数 |名称|位置|类型|必选|说明| |---|---|---|---|---| |id|path|integer(int64)| 是 |none| |Authorization|header|string| 否 |none| > 返回示例 > 200 Response ``` {} ``` ### 返回结果 |状态码|状态码含义|说明|数据模型| |---|---|---|---| |200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| ### 返回数据结构 # 数据模型

StudentProfileUpdateRequest

```json { "realName": "string", "bio": "string", "location": "string", "education": "string", "school": "string", "graduationYear": 0, "resumeUrl": "string", "skills": [ "string" ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |realName|string|false|none||none| |bio|string|false|none||none| |location|string|false|none||none| |education|string|false|none||none| |school|string|false|none||none| |graduationYear|integer(int32)|false|none||none| |resumeUrl|string|false|none||none| |skills|[string]|false|none||none|

AccountDeletionResponse

```json { "userId": 2, "status": "PENDING", "requestedAt": "2019-08-24T14:15:22Z", "effectiveAt": "2019-08-24T14:15:22Z", "cancelledAt": "2019-08-24T14:15:22Z", "completedAt": "2019-08-24T14:15:22Z", "version": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |userId|integer(int64)|false|none||none| |status|string|false|none||注销状态:NONE/PENDING/COMPLETED| |requestedAt|string(date-time)¦null|false|none||none| |effectiveAt|string(date-time)¦null|false|none||none| |cancelledAt|string(date-time)¦null|false|none||none| |completedAt|string(date-time)¦null|false|none||none| |version|integer(int64)|false|none||none| #### 枚举值 |属性|值| |---|---| |status|NONE| |status|PENDING| |status|COMPLETED|

TaxonomyResponse

```json { "code": "string", "parentCode": "string", "type": "string", "displayName": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|string|false|none||none| |parentCode|string|false|none||none| |type|string|false|none||none| |displayName|string|false|none||none|

IdentitySelectionRequest

```json { "identity": "STUDENT", "company": { "name": "string", "logoUrl": "string", "description": "string", "industry": "string", "website": "string", "address": "string" } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |identity|string|true|none||none| |company|[CompanyDetails](#schemacompanydetails)|false|none||none| #### 枚举值 |属性|值| |---|---| |identity|STUDENT| |identity|COMPANY|

ApiResponseMapStringObject

```json { "code": 0, "message": "string", "data": { "property1": null, "property2": null }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|object|false|none||none| |» **additionalProperties**|any|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

RecommendationFeedbackRequest

```json { "feedbackType": "string", "reasonType": "string", "idempotencyKey": "string", "expectedVersion": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |feedbackType|string|true|none||none| |reasonType|string|false|none||none| |idempotencyKey|string|true|none||none| |expectedVersion|integer(int64)|true|none||none|

IdentitySelectionResponse

```json { "userId": 0, "role": "string", "identitySelectionRequired": true, "companyId": 0, "onboardingStatus": "string", "accessToken": "string", "refreshToken": "string", "expiresIn": 0, "reauthenticationRequired": true } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |userId|integer(int64)|false|none||none| |role|string|false|none||none| |identitySelectionRequired|boolean|false|none||none| |companyId|integer(int64)|false|none||none| |onboardingStatus|string|false|none||none| |accessToken|string|false|none||none| |refreshToken|string|false|none||none| |expiresIn|integer(int64)|false|none||none| |reauthenticationRequired|boolean|false|none||none|

JobUpdateRequest

```json { "title": "string", "description": "string", "requirements": "string", "city": "string", "employmentType": "string", "salaryMin": 0, "salaryMax": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |title|string|false|none||none| |description|string|false|none||none| |requirements|string|false|none||none| |city|string|false|none||none| |employmentType|string|false|none||none| |salaryMin|integer(int32)|false|none||none| |salaryMax|integer(int32)|false|none||none|

StudentPreferenceRequest

```json { "expectedSalaryMin": 0, "expectedSalaryMax": 0, "preferredCities": [ "string" ], "employmentTypes": [ "string" ], "preferredIndustries": [ "string" ], "preferredJobTypes": [ "string" ], "remoteAllowed": true, "salaryRangeValid": true } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |expectedSalaryMin|integer(int32)|false|none||none| |expectedSalaryMax|integer(int32)|false|none||none| |preferredCities|[string]|false|none||none| |employmentTypes|[string]|false|none||none| |preferredIndustries|[string]|false|none||none| |preferredJobTypes|[string]|false|none||none| |remoteAllowed|boolean|false|none||none| |salaryRangeValid|boolean|false|none||none|

SaveWeightRequest

```json { "templateCode": "string", "weights": { "property1": 0, "property2": 0 } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |templateCode|string|false|none||none| |weights|object|false|none||none| |» **additionalProperties**|number|false|none||none|

RecommendationProfileRequest

```json { "industryCode": "string", "jobFamilyCode": "string", "riasecWeights": { "property1": 0, "property2": 0 }, "abilityExpectations": { "property1": 0, "property2": 0 }, "enabled": true, "expectedVersion": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |industryCode|string|true|none||none| |jobFamilyCode|string|true|none||none| |riasecWeights|object|false|none||none| |» **additionalProperties**|integer|false|none||none| |abilityExpectations|object|false|none||none| |» **additionalProperties**|integer|false|none||none| |enabled|boolean|true|none||none| |expectedVersion|integer(int64)|true|none||none|

ApiResponseIdentitySelectionResponse

```json { "code": 0, "message": "string", "data": { "userId": 0, "role": "string", "identitySelectionRequired": true, "companyId": 0, "onboardingStatus": "string", "accessToken": "string", "refreshToken": "string", "expiresIn": 0, "reauthenticationRequired": true }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[IdentitySelectionResponse](#schemaidentityselectionresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CompanyUpdateRequest

```json { "name": "string", "logoUrl": "string", "description": "string", "industry": "string", "website": "string", "address": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |name|string|true|none||none| |logoUrl|string|false|none||none| |description|string|false|none||none| |industry|string|false|none||none| |website|string|false|none||none| |address|string|false|none||none|

ApiResponseReviewWeightResponse

```json { "code": 0, "message": "string", "data": { "source": "string", "templateCode": "string", "configuredWeights": { "property1": 0, "property2": 0 }, "updatedAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[ReviewWeightResponse](#schemareviewweightresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponse

```json { "code": 0, "message": "string", "data": null, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|any|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CareerProgressResponse

```json { "todo": { "pendingInterviewResponseCount": 0, "upcomingConfirmedInterviewCount": 0, "pendingOfferResponseCount": 0, "unreadNotificationCount": 0, "unreadReportDecisionCount": 0 }, "applications": { "items": [ { "applicationId": 0, "applicationStatus": "string", "appliedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "job": { "jobId": 0, "title": "string", "companyName": "string", "city": "string", "employmentType": "string", "jobStatus": "string" }, "nextInterview": { "interviewId": 0, "roundNo": 0, "title": "string", "interviewType": "string", "startAt": "2019-08-24T14:15:22Z", "endAt": "2019-08-24T14:15:22Z", "status": "string" }, "latestSubmittedInterviewScore": { "interviewId": 0, "overallScore": 0, "recommendation": "string", "submittedAt": "2019-08-24T14:15:22Z" }, "offer": { "offerId": 0, "status": "string", "title": "string", "expireAt": "2019-08-24T14:15:22Z", "onboardingDate": "2019-08-24" }, "competition": { "eligible": true, "rank": 0, "cohortSize": 0, "overallScore": 0, "percentile": 0, "status": "string", "mySnapshotPeriod": "string", "rulesVersion": "string" } } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "generatedAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |todo|[ProgressTodoSummary](#schemaprogresstodosummary)|false|none||none| |applications|[PaginatedApplications](#schemapaginatedapplications)|false|none||none| |generatedAt|string(date-time)|false|none||none|

RecommendationDecisionRequest

```json { "decision": "APPROVE", "reasonCode": "string", "expectedVersion": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |decision|string|true|none||none| |reasonCode|string|false|none||none| |expectedVersion|integer(int64)|true|none||none| #### 枚举值 |属性|值| |---|---| |decision|APPROVE| |decision|REJECT|

JobCreateRequest

```json { "title": "string", "description": "string", "requirements": "string", "city": "string", "employmentType": "string", "salaryMin": 0, "salaryMax": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |title|string|true|none||none| |description|string|true|none||none| |requirements|string|false|none||none| |city|string|true|none||none| |employmentType|string|true|none||none| |salaryMin|integer(int32)|false|none||none| |salaryMax|integer(int32)|false|none||none|

ReviewWeightResponse

```json { "source": "string", "templateCode": "string", "configuredWeights": { "property1": 0, "property2": 0 }, "updatedAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |source|string|false|none||none| |templateCode|string|false|none||none| |configuredWeights|object|false|none||none| |» **additionalProperties**|number|false|none||none| |updatedAt|string(date-time)|false|none||none|

ProgressTodoSummary

```json { "pendingInterviewResponseCount": 0, "upcomingConfirmedInterviewCount": 0, "pendingOfferResponseCount": 0, "unreadNotificationCount": 0, "unreadReportDecisionCount": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |pendingInterviewResponseCount|integer(int64)|false|none||none| |upcomingConfirmedInterviewCount|integer(int64)|false|none||none| |pendingOfferResponseCount|integer(int64)|false|none||none| |unreadNotificationCount|integer(int64)|false|none||none| |unreadReportDecisionCount|integer(int64)|false|none||none|

RecommendationProfileResponse

```json { "jobId": 0, "industryCode": "string", "jobFamilyCode": "string", "riasecWeights": { "property1": 0, "property2": 0 }, "abilityExpectations": { "property1": 0, "property2": 0 }, "enabled": true, "reviewStatus": "string", "reviewReason": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |jobId|integer(int64)|false|none||none| |industryCode|string|false|none||none| |jobFamilyCode|string|false|none||none| |riasecWeights|object|false|none||none| |» **additionalProperties**|integer|false|none||none| |abilityExpectations|object|false|none||none| |» **additionalProperties**|integer|false|none||none| |enabled|boolean|false|none||none| |reviewStatus|string|false|none||none| |reviewReason|string|false|none||none| |version|integer(int64)|false|none||none| |updatedAt|string(date-time)|false|none||none|

CompanyCreateRequest

```json { "name": "string", "logoUrl": "string", "description": "string", "industry": "string", "website": "string", "address": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |name|string|true|none||none| |logoUrl|string|false|none||none| |description|string|false|none||none| |industry|string|false|none||none| |website|string|false|none||none| |address|string|false|none||none|

PaginatedApplications

```json { "items": [ { "applicationId": 0, "applicationStatus": "string", "appliedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "job": { "jobId": 0, "title": "string", "companyName": "string", "city": "string", "employmentType": "string", "jobStatus": "string" }, "nextInterview": { "interviewId": 0, "roundNo": 0, "title": "string", "interviewType": "string", "startAt": "2019-08-24T14:15:22Z", "endAt": "2019-08-24T14:15:22Z", "status": "string" }, "latestSubmittedInterviewScore": { "interviewId": 0, "overallScore": 0, "recommendation": "string", "submittedAt": "2019-08-24T14:15:22Z" }, "offer": { "offerId": 0, "status": "string", "title": "string", "expireAt": "2019-08-24T14:15:22Z", "onboardingDate": "2019-08-24" }, "competition": { "eligible": true, "rank": 0, "cohortSize": 0, "overallScore": 0, "percentile": 0, "status": "string", "mySnapshotPeriod": "string", "rulesVersion": "string" } } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |items|[[CareerProgressItem](#schemacareerprogressitem)]|false|none||none| |total|integer(int64)|false|none||none| |page|integer(int32)|false|none||none| |size|integer(int32)|false|none||none| |totalPages|integer(int32)|false|none||none|

RecommendationFeedbackResponse

```json { "jobId": 0, "feedbackType": "string", "reasonType": "string", "status": "string", "version": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |jobId|integer(int64)|false|none||none| |feedbackType|string|false|none||none| |reasonType|string|false|none||none| |status|string|false|none||none| |version|integer(int64)|false|none||none|

ApiResponseMapStringString

```json { "code": 0, "message": "string", "data": { "property1": "string", "property2": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|object|false|none||none| |» **additionalProperties**|string|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

StudentMatchRuleRequest

```json { "requiredHrScore": 100 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |requiredHrScore|integer(int32)|true|none||none|

CareerProgressItem

```json { "applicationId": 0, "applicationStatus": "string", "appliedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "job": { "jobId": 0, "title": "string", "companyName": "string", "city": "string", "employmentType": "string", "jobStatus": "string" }, "nextInterview": { "interviewId": 0, "roundNo": 0, "title": "string", "interviewType": "string", "startAt": "2019-08-24T14:15:22Z", "endAt": "2019-08-24T14:15:22Z", "status": "string" }, "latestSubmittedInterviewScore": { "interviewId": 0, "overallScore": 0, "recommendation": "string", "submittedAt": "2019-08-24T14:15:22Z" }, "offer": { "offerId": 0, "status": "string", "title": "string", "expireAt": "2019-08-24T14:15:22Z", "onboardingDate": "2019-08-24" }, "competition": { "eligible": true, "rank": 0, "cohortSize": 0, "overallScore": 0, "percentile": 0, "status": "string", "mySnapshotPeriod": "string", "rulesVersion": "string" } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |applicationId|integer(int64)|false|none||none| |applicationStatus|string|false|none||none| |appliedAt|string(date-time)|false|none||none| |updatedAt|string(date-time)|false|none||none| |job|[JobSummary](#schemajobsummary)|false|none||none| |nextInterview|[InterviewSummary](#schemainterviewsummary)|false|none||none| |latestSubmittedInterviewScore|[ScoreSummary](#schemascoresummary)|false|none||none| |offer|[OfferSummary](#schemaoffersummary)|false|none||none| |competition|[CompetitionSummary](#schemacompetitionsummary)|false|none||none|

JobRecommendationItem

```json { "jobId": 0, "title": "string", "city": "string", "employmentType": "string", "salaryMin": 0, "salaryMax": 0, "mode": "PERSONALIZED", "score": 0, "reasons": [ "string" ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |jobId|integer(int64)|false|none||none| |title|string|false|none||none| |city|string|false|none||none| |employmentType|string|false|none||none| |salaryMin|integer|false|none||none| |salaryMax|integer|false|none||none| |mode|string|false|none||none| |score|number|false|none||none| |reasons|[string]|false|none||none| #### 枚举值 |属性|值| |---|---| |mode|PERSONALIZED| |mode|FALLBACK|

LoginRequest

```json { "phone": "string", "code": "string", "purpose": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |phone|string|true|none||none| |code|string|true|none||none| |purpose|string|false|none||none|

CandidateFeedbackRequest

```json { "rating": 1, "content": "string", "tags": [ "string" ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |rating|integer(int32)|true|none||none| |content|string|true|none||none| |tags|[string]|false|none||none|

JobSummary

```json { "jobId": 0, "title": "string", "companyName": "string", "city": "string", "employmentType": "string", "jobStatus": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |jobId|integer(int64)|false|none||none| |title|string|false|none||none| |companyName|string|false|none||none| |city|string|false|none||none| |employmentType|string|false|none||none| |jobStatus|string|false|none||none|

ApiResponseListTaxonomyResponse

```json { "code": 0, "message": "string", "data": [ { "code": "string", "parentCode": "string", "type": "string", "displayName": "string" } ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[[TaxonomyResponse](#schemataxonomyresponse)]|false|none||none|

ApplicationCreateRequest

```json { "jobId": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |jobId|integer(int64)|true|none||none|

OfferUpdateRequest

```json { "title": "string", "salaryMin": 0, "salaryMax": 0, "salaryCurrency": "string", "salaryPeriod": "string", "workCity": "string", "employmentType": "string", "probationMonths": 0, "benefits": "string", "description": "string", "expireAt": "2019-08-24T14:15:22Z", "onboardingDate": "2019-08-24", "baseSalary": 0, "housingAllowance": 0, "annualBonusMonths": 0, "otherAllowances": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |title|string|false|none||none| |salaryMin|integer(int32)|false|none||none| |salaryMax|integer(int32)|false|none||none| |salaryCurrency|string|false|none||none| |salaryPeriod|string|false|none||none| |workCity|string|false|none||none| |employmentType|string|false|none||none| |probationMonths|integer(int32)|false|none||none| |benefits|string|false|none||none| |description|string|false|none||none| |expireAt|string(date-time)|false|none||none| |onboardingDate|string(date)|false|none||none| |baseSalary|integer(int32)|false|none||none| |housingAllowance|integer(int32)|false|none||none| |annualBonusMonths|integer(int32)|false|none||none| |otherAllowances|string|false|none||none|

InterviewSummary

```json { "interviewId": 0, "roundNo": 0, "title": "string", "interviewType": "string", "startAt": "2019-08-24T14:15:22Z", "endAt": "2019-08-24T14:15:22Z", "status": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |interviewId|integer(int64)|false|none||none| |roundNo|integer(int32)|false|none||none| |title|string|false|none||none| |interviewType|string|false|none||none| |startAt|string(date-time)|false|none||none| |endAt|string(date-time)|false|none||none| |status|string|false|none||none|

ApiResponseRecommendationFeedbackResponse

```json { "code": 0, "message": "string", "data": { "jobId": 0, "feedbackType": "string", "reasonType": "string", "status": "string", "version": 0 } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[RecommendationFeedbackResponse](#schemarecommendationfeedbackresponse)|false|none||none|

JobStatusRequest

```json { "status": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |status|string|true|none||none|

JobReviewUpdateRequest

```json { "rating": 1, "content": "string", "tags": [ "string" ], "status": "string", "dimensionScores": { "property1": 0, "property2": 0 } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |rating|integer(int32)|false|none||none| |content|string|false|none||none| |tags|[string]|false|none||none| |status|string|false|none||none| |dimensionScores|object|false|none||none| |» **additionalProperties**|integer(int32)|false|none||none|

ScoreSummary

```json { "interviewId": 0, "overallScore": 0, "recommendation": "string", "submittedAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |interviewId|integer(int64)|false|none||none| |overallScore|number|false|none||none| |recommendation|string|false|none||none| |submittedAt|string(date-time)|false|none||none|

ApiResponseRecommendationProfileResponse

```json { "code": 0, "message": "string", "data": { "jobId": 0, "industryCode": "string", "jobFamilyCode": "string", "riasecWeights": { "property1": 0, "property2": 0 }, "abilityExpectations": { "property1": 0, "property2": 0 }, "enabled": true, "reviewStatus": "string", "reviewReason": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z" } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[RecommendationProfileResponse](#schemarecommendationprofileresponse)|false|none||none|

ApplicationStatusRequest

```json { "status": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |status|string|true|none||none|

InterviewUpdateRequest

```json { "title": "string", "startAt": "2019-08-24T14:15:22Z", "endAt": "2019-08-24T14:15:22Z", "timezone": "string", "meetingUrl": "string", "address": "string", "interviewerName": "string", "notes": "string", "timeRangeValid": true } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |title|string|false|none||none| |startAt|string(date-time)|false|none||none| |endAt|string(date-time)|false|none||none| |timezone|string|false|none||none| |meetingUrl|string|false|none||none| |address|string|false|none||none| |interviewerName|string|false|none||none| |notes|string|false|none||none| |timeRangeValid|boolean|false|none||none|

OfferSummary

```json { "offerId": 0, "status": "string", "title": "string", "expireAt": "2019-08-24T14:15:22Z", "onboardingDate": "2019-08-24" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |offerId|integer(int64)|false|none||none| |status|string|false|none||none| |title|string|false|none||none| |expireAt|string(date-time)|false|none||none| |onboardingDate|string(date)|false|none||none|

ApiResponsePageJobRecommendationItem

```json { "code": 0, "message": "string", "data": { "items": [ { "jobId": 0, "title": "string", "city": "string", "employmentType": "string", "salaryMin": 0, "salaryMax": 0, "mode": "PERSONALIZED", "score": 0, "reasons": [ "string" ] } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|object|false|none||none| |» items|[[JobRecommendationItem](#schemajobrecommendationitem)]|false|none||none| |» total|integer|false|none||none| |» page|integer|false|none||none| |» size|integer|false|none||none| |» totalPages|integer|false|none||none|

CreateConversationRequest

```json { "participantUserId": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |participantUserId|integer(int64)|true|none||none|

CompetitionSummary

```json { "eligible": true, "rank": 0, "cohortSize": 0, "overallScore": 0, "percentile": 0, "status": "string", "mySnapshotPeriod": "string", "rulesVersion": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |eligible|boolean|false|none||none| |rank|integer(int32)|false|none||none| |cohortSize|integer(int32)|false|none||none| |overallScore|number|false|none||none| |percentile|number|false|none||none| |status|string|false|none||none| |mySnapshotPeriod|string|false|none||none| |rulesVersion|string|false|none||none|

ApiResponsePageRecommendationProfileResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "jobId": 0, "industryCode": "string", "jobFamilyCode": "string", "riasecWeights": { "property1": 0, "property2": 0 }, "abilityExpectations": { "property1": 0, "property2": 0 }, "enabled": true, "reviewStatus": "string", "reviewReason": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z" } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|object|false|none||none| |» items|[[RecommendationProfileResponse](#schemarecommendationprofileresponse)]|false|none||none| |» total|integer|false|none||none| |» page|integer|false|none||none| |» size|integer|false|none||none| |» totalPages|integer|false|none||none|

SendMessageRequest

```json { "conversationId": 0, "content": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |conversationId|integer(int64)|true|none||none| |content|string|true|none||none|

CompanyMatchRuleRequest

```json { "requiredCandidateScore": 100 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |requiredCandidateScore|integer(int32)|true|none||none|

CompanyReviewJobResponse

```json { "id": 0, "title": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||none| |title|string|false|none||none|

ScoreRequest

```json { "score": 100 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |score|integer(int32)|true|none||none|

ApiResponseAccountDeletionResponse

```json { "code": 200, "message": "ok", "data": { "userId": 2, "status": "PENDING", "requestedAt": "2019-08-24T14:15:22Z", "effectiveAt": "2019-08-24T14:15:22Z", "cancelledAt": "2019-08-24T14:15:22Z", "completedAt": "2019-08-24T14:15:22Z", "version": 0 }, "requestId": "req-1", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[AccountDeletionResponse](#schemaaccountdeletionresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CompanyReviewReplyResponse

```json { "id": 0, "content": "string", "status": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z", "rejectionReason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||none| |content|string|false|none||none| |status|string|false|none||none| |version|integer(int64)|false|none||none| |updatedAt|string(date-time)|false|none||none| |rejectionReason|string¦null|false|none||none|

CompanyReviewItemResponse

```json { "reviewId": 0, "job": { "id": 0, "title": "string" }, "rating": 0, "content": "string", "tags": [ "string" ], "dimensionScores": { "property1": 0, "property2": 0 }, "reviewStatus": "string", "reviewCreatedAt": "2019-08-24T14:15:22Z", "reply": { "id": 0, "content": "string", "status": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z", "rejectionReason": "string" } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |reviewId|integer(int64)|false|none||none| |job|[CompanyReviewJobResponse](#schemacompanyreviewjobresponse)|false|none||none| |rating|integer|false|none||none| |content|string|false|none||none| |tags|[string]|false|none||none| |dimensionScores|object|false|none||none| |» **additionalProperties**|integer|false|none||none| |reviewStatus|string|false|none||none| |reviewCreatedAt|string(date-time)|false|none||none| |reply|[CompanyReviewReplyResponse](#schemacompanyreviewreplyresponse)|false|none||none|

CompanyReviewDetailResponse

```json { "reviewId": 0, "job": { "id": 0, "title": "string" }, "rating": 0, "content": "string", "tags": [ "string" ], "dimensionScores": { "property1": 0, "property2": 0 }, "reviewStatus": "string", "reviewCreatedAt": "2019-08-24T14:15:22Z", "reply": { "id": 0, "content": "string", "status": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z", "rejectionReason": "string" } } ``` ### 属性 *None*

CreateAppealRequest

```json { "dimension": "string", "period": "string", "reason": "string", "idempotencyKey": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |dimension|string|true|none||none| |period|string|true|none||none| |reason|string|false|none||none| |idempotencyKey|string|false|none||none|

ReviewReplyPageResponse

```json { "items": [ { "reviewId": 0, "job": { "id": 0, "title": "string" }, "rating": 0, "content": "string", "tags": [ "string" ], "dimensionScores": { "property1": 0, "property2": 0 }, "reviewStatus": "string", "reviewCreatedAt": "2019-08-24T14:15:22Z", "reply": { "id": 0, "content": "string", "status": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z", "rejectionReason": "string" } } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |items|[[CompanyReviewItemResponse](#schemacompanyreviewitemresponse)]|false|none||none| |total|integer(int64)|false|none||none| |page|integer|false|none||none| |size|integer|false|none||none| |totalPages|integer|false|none||none|

JobReviewCreateRequest

```json { "rating": 1, "content": "string", "tags": [ "string" ], "dimensionScores": { "property1": 0, "property2": 0 } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |rating|integer(int32)|true|none||none| |content|string|true|none||none| |tags|[string]|false|none||none| |dimensionScores|object|false|none||none| |» **additionalProperties**|integer(int32)|false|none||none|

ApiResponseAppealResponse

```json { "code": 0, "message": "string", "data": { "appealId": 0, "candidateId": 0, "dimension": "string", "period": "string", "status": "string", "reason": "string", "decision": "string", "decisionReason": "string", "reviewerId": 0, "reviewedAt": "2019-08-24T14:15:22Z", "rollbackAt": "2019-08-24T14:15:22Z", "scoreAtAppeal": 0, "snapshotVersionAtAppeal": 0, "rulesVersion": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[AppealResponse](#schemaappealresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseCandidateFeedbackResponse

```json { "code": 0, "message": "string", "data": { "id": 1, "applicationId": 31, "rating": 5, "content": "沟通良好", "tags": [ "string" ], "createdAt": "2026-08-25T10:00:00", "updatedAt": "2026-08-25T10:00:00" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CandidateFeedbackResponse](#schemacandidatefeedbackresponse)|false|none||脱敏后的候选人反馈| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CreateCompanyReviewReplyRequest

```json { "content": "string", "idempotencyKey": "0c14c6a6-6f50-4d1e-b0c4-b46ff43ba6a1" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |content|string|true|none||none| |idempotencyKey|string(uuid)|true|none||none|

InterviewRespondRequest

```json { "action": "string", "reason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |action|string|true|none||none| |reason|string|false|none||none|

AppealResponse

```json { "appealId": 0, "candidateId": 0, "dimension": "string", "period": "string", "status": "string", "reason": "string", "decision": "string", "decisionReason": "string", "reviewerId": 0, "reviewedAt": "2019-08-24T14:15:22Z", "rollbackAt": "2019-08-24T14:15:22Z", "scoreAtAppeal": 0, "snapshotVersionAtAppeal": 0, "rulesVersion": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |appealId|integer(int64)|false|none||none| |candidateId|integer(int64)|false|none||none| |dimension|string|false|none||none| |period|string|false|none||none| |status|string|false|none||none| |reason|string|false|none||none| |decision|string|false|none||none| |decisionReason|string|false|none||none| |reviewerId|integer(int64)|false|none||none| |reviewedAt|string(date-time)|false|none||none| |rollbackAt|string(date-time)|false|none||none| |scoreAtAppeal|number|false|none||none| |snapshotVersionAtAppeal|integer(int64)|false|none||none| |rulesVersion|string|false|none||none| |createdAt|string(date-time)|false|none||none| |updatedAt|string(date-time)|false|none||none|

UpdateCompanyReviewReplyRequest

```json { "content": "string", "expectedVersion": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |content|string|true|none||none| |expectedVersion|integer(int64)|true|none||none|

OfferCreateRequest

```json { "applicationId": 0, "title": "string", "salaryMin": 0, "salaryMax": 0, "salaryCurrency": "string", "salaryPeriod": "string", "workCity": "string", "employmentType": "string", "probationMonths": 0, "benefits": "string", "description": "string", "expireAt": "2019-08-24T14:15:22Z", "onboardingDate": "2019-08-24", "baseSalary": 0, "housingAllowance": 0, "annualBonusMonths": 0, "otherAllowances": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |applicationId|integer(int64)|true|none||none| |title|string|true|none||none| |salaryMin|integer(int32)|false|none||none| |salaryMax|integer(int32)|false|none||none| |salaryCurrency|string|false|none||none| |salaryPeriod|string|false|none||none| |workCity|string|true|none||none| |employmentType|string|false|none||none| |probationMonths|integer(int32)|false|none||none| |benefits|string|false|none||none| |description|string|true|none||none| |expireAt|string(date-time)|true|none||none| |onboardingDate|string(date)|false|none||none| |baseSalary|integer(int32)|false|none||none| |housingAllowance|integer(int32)|false|none||none| |annualBonusMonths|integer(int32)|false|none||none| |otherAllowances|string|false|none||none|

InterviewCancelRequest

```json { "reason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |reason|string|false|none||none|

ReviewReplyDecisionRequest

```json { "decision": "APPROVE", "reason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |decision|string|true|none||none| |reason|string|false|none||none| #### 枚举值 |属性|值| |---|---| |decision|APPROVE| |decision|REJECT|

ApiResponseListMapStringObject

```json { "code": 0, "message": "string", "data": [ { "property1": null, "property2": null } ], "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[object]|false|none||none| |» **additionalProperties**|any|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CounterOfferCreateRequest

```json { "proposedSalaryMin": 0, "proposedSalaryMax": 0, "proposedOnboardingDate": "2019-08-24", "reason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |proposedSalaryMin|integer(int32)|false|none||none| |proposedSalaryMax|integer(int32)|false|none||none| |proposedOnboardingDate|string(date)|false|none||none| |reason|string|false|none||none|

AdminReviewReplyResponse

```json { "replyId": 0, "reviewId": 0, "jobId": 0, "jobTitle": "string", "companyId": 0, "companyName": "string", "rating": 0, "reviewContent": "string", "reviewModerationStatus": "string", "replyContent": "string", "replyStatus": "string", "version": 0, "riskScore": 0, "riskLevel": "string", "reasonCodes": [ "string" ], "createdAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |replyId|integer(int64)|false|none||none| |reviewId|integer(int64)|false|none||none| |jobId|integer(int64)|false|none||none| |jobTitle|string|false|none||none| |companyId|integer(int64)|false|none||none| |companyName|string|false|none||none| |rating|integer|false|none||none| |reviewContent|string|false|none||none| |reviewModerationStatus|string|false|none||none| |replyContent|string|false|none||none| |replyStatus|string|false|none||none| |version|integer(int64)|false|none||none| |riskScore|number|false|none||none| |riskLevel|string|false|none||none| |reasonCodes|[string]|false|none||none| |createdAt|string(date-time)|false|none||none|

AdminReviewReplyPageResponse

```json { "items": [ { "replyId": 0, "reviewId": 0, "jobId": 0, "jobTitle": "string", "companyId": 0, "companyName": "string", "rating": 0, "reviewContent": "string", "reviewModerationStatus": "string", "replyContent": "string", "replyStatus": "string", "version": 0, "riskScore": 0, "riskLevel": "string", "reasonCodes": [ "string" ], "createdAt": "2019-08-24T14:15:22Z" } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |items|[[AdminReviewReplyResponse](#schemaadminreviewreplyresponse)]|false|none||none| |total|integer(int64)|false|none||none| |page|integer|false|none||none| |size|integer|false|none||none| |totalPages|integer|false|none||none|

ApiResponseReviewReplyPageResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "reviewId": 0, "job": { "id": 0, "title": "string" }, "rating": 0, "content": "string", "tags": [ "string" ], "dimensionScores": { "property1": 0, "property2": 0 }, "reviewStatus": "string", "reviewCreatedAt": "2019-08-24T14:15:22Z", "reply": { "id": 0, "content": "string", "status": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z", "rejectionReason": "string" } } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[ReviewReplyPageResponse](#schemareviewreplypageresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

VerificationSubmitRequest

```json { "materialsJson": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |materialsJson|string|true|none||none|

ApiResponseCompanyReviewDetailResponse

```json { "code": 0, "message": "string", "data": { "reviewId": 0, "job": { "id": 0, "title": "string" }, "rating": 0, "content": "string", "tags": [ "string" ], "dimensionScores": { "property1": 0, "property2": 0 }, "reviewStatus": "string", "reviewCreatedAt": "2019-08-24T14:15:22Z", "reply": { "id": 0, "content": "string", "status": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z", "rejectionReason": "string" } }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[CompanyReviewDetailResponse](#schemacompanyreviewdetailresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseCompanyReviewReplyResponse

```json { "code": 0, "message": "string", "data": { "id": 0, "content": "string", "status": "string", "version": 0, "updatedAt": "2019-08-24T14:15:22Z", "rejectionReason": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[CompanyReviewReplyResponse](#schemacompanyreviewreplyresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseAdminReviewReplyPageResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "replyId": 0, "reviewId": 0, "jobId": 0, "jobTitle": "string", "companyId": 0, "companyName": "string", "rating": 0, "reviewContent": "string", "reviewModerationStatus": "string", "replyContent": "string", "replyStatus": "string", "version": 0, "riskScore": 0, "riskLevel": "string", "reasonCodes": [ "string" ], "createdAt": "2019-08-24T14:15:22Z" } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[AdminReviewReplyPageResponse](#schemaadminreviewreplypageresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseAdminReviewReplyResponse

```json { "code": 0, "message": "string", "data": { "replyId": 0, "reviewId": 0, "jobId": 0, "jobTitle": "string", "companyId": 0, "companyName": "string", "rating": 0, "reviewContent": "string", "reviewModerationStatus": "string", "replyContent": "string", "replyStatus": "string", "version": 0, "riskScore": 0, "riskLevel": "string", "reasonCodes": [ "string" ], "createdAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[AdminReviewReplyResponse](#schemaadminreviewreplyresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ReviewDecisionRequest

```json { "decision": "string", "reason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |decision|string|true|none||none| |reason|string|false|none||none|

VerificationDecisionRequest

```json { "decision": "string", "reason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |decision|string|true|none||none| |reason|string|false|none||none|

InterviewCreateRequest

```json { "roundNo": 0, "title": "string", "interviewType": "string", "startAt": "2019-08-24T14:15:22Z", "endAt": "2019-08-24T14:15:22Z", "timezone": "string", "meetingUrl": "string", "address": "string", "interviewerName": "string", "notes": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |roundNo|integer(int32)|false|none||none| |title|string|true|none||none| |interviewType|string|true|none||none| |startAt|string(date-time)|true|none||none| |endAt|string(date-time)|true|none||none| |timezone|string|false|none||none| |meetingUrl|string|false|none||none| |address|string|false|none||none| |interviewerName|string|false|none||none| |notes|string|false|none||none|

ApiResponseListWeightTemplateResponse

```json { "code": 0, "message": "string", "data": [ { "code": "string", "name": "string", "description": "string", "weights": { "property1": 0, "property2": 0 } } ], "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[[WeightTemplateResponse](#schemaweighttemplateresponse)]|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

WeightTemplateResponse

```json { "code": "string", "name": "string", "description": "string", "weights": { "property1": 0, "property2": 0 } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|string|false|none||none| |name|string|false|none||none| |description|string|false|none||none| |weights|object|false|none||none| |» **additionalProperties**|number|false|none||none|

ApiResponseDataExportTaskResponse

```json { "code": 0, "message": "string", "data": { "taskId": 0, "status": "string", "format": "string", "requestedAt": "2019-08-24T14:15:22Z", "startedAt": "2019-08-24T14:15:22Z", "completedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "sizeBytes": 0, "downloadAvailable": true, "errorCode": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[DataExportTaskResponse](#schemadataexporttaskresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

AppealDecisionRequest

```json { "decision": "string", "reason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |decision|string|true|none||none| |reason|string|false|none||none|

DataExportTaskResponse

```json { "taskId": 0, "status": "string", "format": "string", "requestedAt": "2019-08-24T14:15:22Z", "startedAt": "2019-08-24T14:15:22Z", "completedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "sizeBytes": 0, "downloadAvailable": true, "errorCode": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |taskId|integer(int64)|false|none||none| |status|string|false|none||none| |format|string|false|none||none| |requestedAt|string(date-time)|false|none||none| |startedAt|string(date-time)|false|none||none| |completedAt|string(date-time)|false|none||none| |expiresAt|string(date-time)|false|none||none| |sizeBytes|integer(int64)|false|none||none| |downloadAvailable|boolean|false|none||none| |errorCode|string|false|none||none|

OfferStatusRequest

```json { "status": "string", "reason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |status|string|true|none||none| |reason|string|false|none||none|

ApiResponsePersonalizedScoreResponse

```json { "code": 0, "message": "string", "data": { "jobId": 0, "score": 0, "status": "string", "source": "string", "templateCode": "string", "configuredWeights": { "property1": 0, "property2": 0 }, "effectiveWeights": { "property1": 0, "property2": 0 }, "dimensionScores": { "property1": 0, "property2": 0 }, "coveredWeight": 0, "missingDimensions": [ "string" ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[PersonalizedScoreResponse](#schemapersonalizedscoreresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

PersonalizedScoreResponse

```json { "jobId": 0, "score": 0, "status": "string", "source": "string", "templateCode": "string", "configuredWeights": { "property1": 0, "property2": 0 }, "effectiveWeights": { "property1": 0, "property2": 0 }, "dimensionScores": { "property1": 0, "property2": 0 }, "coveredWeight": 0, "missingDimensions": [ "string" ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |jobId|integer(int64)|false|none||none| |score|number|false|none||none| |status|string|false|none||none| |source|string|false|none||none| |templateCode|string|false|none||none| |configuredWeights|object|false|none||none| |» **additionalProperties**|number|false|none||none| |effectiveWeights|object|false|none||none| |» **additionalProperties**|number|false|none||none| |dimensionScores|object|false|none||none| |» **additionalProperties**|number|false|none||none| |coveredWeight|number|false|none||none| |missingDimensions|[string]|false|none||none|

ApiResponseCompanyPublicView

```json { "code": 0, "message": "string", "data": { "id": 0, "name": "string", "logoUrl": "string", "description": "string", "industry": "string", "verified": true }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CompanyPublicView](#schemacompanypublicview)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CompanyPublicView

```json { "id": 0, "name": "string", "logoUrl": "string", "description": "string", "industry": "string", "verified": true } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||none| |name|string|false|none||none| |logoUrl|string|false|none||none| |description|string|false|none||none| |industry|string|false|none||none| |verified|boolean|false|none||none|

ApiResponseCareerProgressResponse

```json { "code": 200, "message": "ok", "data": { "todo": { "pendingInterviewResponseCount": 0, "upcomingConfirmedInterviewCount": 0, "pendingOfferResponseCount": 0, "unreadNotificationCount": 0, "unreadReportDecisionCount": 0 }, "applications": { "items": [ { "applicationId": 0, "applicationStatus": "string", "appliedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "job": {}, "nextInterview": {}, "latestSubmittedInterviewScore": {}, "offer": {}, "competition": {} } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "generatedAt": "2019-08-24T14:15:22Z" }, "requestId": "req-1", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CareerProgressResponse](#schemacareerprogressresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponsePrivacySettingsResponse

```json { "code": 200, "message": "ok", "data": { "id": 1, "studentUserId": 2, "resumeVisibility": "APPLIED_COMPANIES", "contactVisible": true, "version": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "requestId": "req-1", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[PrivacySettingsResponse](#schemaprivacysettingsresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

TagCount

```json { "name": "string", "count": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |name|string|false|none||none| |count|integer(int32)|false|none||none|

CandidateMatchSignals

```json { "candidateInterestScore": { "average": 0, "sampleCount": 0 }, "hrSuitabilityScore": { "average": 0, "sampleCount": 0 } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |candidateInterestScore|[MatchSignal](#schemamatchsignal)|false|none||none| |hrSuitabilityScore|[MatchSignal](#schemamatchsignal)|false|none||none|

DimensionItem

```json { "dimension": "string", "score": 0, "status": "string", "weight": 0, "summary": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |dimension|string|false|none||none| |score|number|false|none||none| |status|string|false|none||none| |weight|number|false|none||none| |summary|string|false|none||none|

CandidateScoreTrendResponse

```json { "candidateId": 0, "months": 0, "items": [ { "month": "string", "feedbackCount": 0, "averageRating": 0, "ratingScore": 0 } ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |candidateId|integer(int64)|false|none||none| |months|integer(int32)|false|none||none| |items|[[CandidateScoreTrendItem](#schemacandidatescoretrenditem)]|false|none||none|

CandidateScoringTrendResponse

```json { "candidateId": 0, "months": 0, "items": [ { "period": "string", "overallScore": 0, "rulesVersion": "string", "dimensions": { "property1": 0, "property2": 0 } } ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |candidateId|integer(int64)|false|none||none| |months|integer(int32)|false|none||none| |items|[[TrendItem](#schematrenditem)]|false|none||none|

CandidateScoreTrendItem

```json { "month": "string", "feedbackCount": 0, "averageRating": 0, "ratingScore": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |month|string|false|none||none| |feedbackCount|integer(int32)|false|none||none| |averageRating|number|false|none||none| |ratingScore|number|false|none||none|

TrendItem

```json { "period": "string", "overallScore": 0, "rulesVersion": "string", "dimensions": { "property1": 0, "property2": 0 } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |period|string|false|none||none| |overallScore|number|false|none||none| |rulesVersion|string|false|none||none| |dimensions|object|false|none||none| |» **additionalProperties**|number|false|none||none|

ApiResponseCandidateScoreCardResponse

```json { "code": 0, "message": "string", "data": { "candidateId": 0, "status": "string", "overallScore": 0, "sampleCount": 0, "feedbackSummary": { "totalCount": 0, "averageRating": 0, "ratingDistribution": { "property1": 0, "property2": 0 }, "tags": [ { "name": "string", "count": 0 } ] }, "matchSignals": { "candidateInterestScore": { "average": 0, "sampleCount": 0 }, "hrSuitabilityScore": { "average": 0, "sampleCount": 0 } }, "unsupportedDimensions": [ "string" ], "generatedAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CandidateScoreCardResponse](#schemacandidatescorecardresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

DataSourceItem

```json { "source": "string", "time": "2019-08-24T14:15:22Z", "note": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |source|string|false|none||none| |time|string(date-time)|false|none||none| |note|string|false|none||none|

CandidateFeedbackResponse

```json { "id": 1, "applicationId": 31, "rating": 5, "content": "沟通良好", "tags": [ "string" ], "createdAt": "2026-08-25T10:00:00", "updatedAt": "2026-08-25T10:00:00" } ``` 脱敏后的候选人反馈 ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||反馈 ID| |applicationId|integer(int64)|false|none||投递 ID| |rating|integer(int32)|false|none||评分,范围 1-5| |content|string|false|none||反馈内容| |tags|[string]|false|none||反馈标签| |createdAt|string(date-time)|false|none||创建时间| |updatedAt|string(date-time)|false|none||更新时间|

ApiResponseCandidateScoreTrendResponse

```json { "code": 0, "message": "string", "data": { "candidateId": 0, "months": 0, "items": [ { "month": "string", "feedbackCount": 0, "averageRating": 0, "ratingScore": 0 } ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CandidateScoreTrendResponse](#schemacandidatescoretrendresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseCandidatePercentileResponse

```json { "code": 0, "message": "string", "data": { "candidateId": 0, "status": "string", "scoreType": "string", "score": 0, "percentile": 0, "cohortSize": 0, "sampleCount": 0, "minimumSampleCount": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CandidatePercentileResponse](#schemacandidatepercentileresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

SubScore

```json { "name": "string", "score": 0, "weight": 0, "description": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |name|string|false|none||none| |score|number|false|none||none| |weight|number|false|none||none| |description|string|false|none||none|

ApiResponseCandidateScoringOverviewResponse

```json { "code": 0, "message": "string", "data": { "candidateId": 0, "status": "string", "overallScore": 0, "weights": { "property1": 0, "property2": 0 }, "dimensions": [ { "dimension": "string", "score": 0, "status": "string", "weight": 0, "summary": "string" } ], "rulesVersion": "string", "generatedAt": "2019-08-24T14:15:22Z", "explanationVersion": "string", "coverage": { "computableDimensions": 0, "totalDimensions": 0, "includedDimensions": [ "string" ], "excludedDimensions": [ { "dimension": "string", "status": "string", "reason": "string" } ] }, "comparabilityNotice": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CandidateScoringOverviewResponse](#schemacandidatescoringoverviewresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CandidateFeedbackSummary

```json { "totalCount": 0, "averageRating": 0, "ratingDistribution": { "property1": 0, "property2": 0 }, "tags": [ { "name": "string", "count": 0 } ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |totalCount|integer(int32)|false|none||none| |averageRating|number|false|none||none| |ratingDistribution|object|false|none||none| |» **additionalProperties**|integer(int32)|false|none||none| |tags|[[TagCount](#schematagcount)]|false|none||none|

ApiResponseDimensionScoreDetailResponse

```json { "code": 0, "message": "string", "data": { "dimension": "string", "score": 0, "status": "string", "subScores": [ { "name": "string", "score": 0, "weight": 0, "description": "string" } ], "reasons": [ "string" ], "dataSources": [ { "source": "string", "time": "2019-08-24T14:15:22Z", "note": "string" } ], "updatedAt": "2019-08-24T14:15:22Z", "rulesVersion": "string", "displayName": "string", "whatItMeasures": "string", "interpretation": "string", "limitations": [ "string" ], "evidenceLevel": "DIRECT_RULE", "ruleContributions": [ { "ruleCode": "string", "outcome": "APPLIED", "contribution": 0, "maxContribution": 0, "label": "string", "observation": "string", "explanation": "string" } ], "improvementActions": [ "string" ], "explanationVersion": "string", "validity": { "completedAt": "2019-08-24T14:15:22Z", "validUntil": "2019-08-24T14:15:22Z", "expired": true }, "calculatedAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[DimensionScoreDetailResponse](#schemadimensionscoredetailresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CandidateScoreCardResponse

```json { "candidateId": 0, "status": "string", "overallScore": 0, "sampleCount": 0, "feedbackSummary": { "totalCount": 0, "averageRating": 0, "ratingDistribution": { "property1": 0, "property2": 0 }, "tags": [ { "name": "string", "count": 0 } ] }, "matchSignals": { "candidateInterestScore": { "average": 0, "sampleCount": 0 }, "hrSuitabilityScore": { "average": 0, "sampleCount": 0 } }, "unsupportedDimensions": [ "string" ], "generatedAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |candidateId|integer(int64)|false|none||none| |status|string|false|none||none| |overallScore|number|false|none||none| |sampleCount|integer(int32)|false|none||none| |feedbackSummary|[CandidateFeedbackSummary](#schemacandidatefeedbacksummary)|false|none||none| |matchSignals|[CandidateMatchSignals](#schemacandidatematchsignals)|false|none||none| |unsupportedDimensions|[string]|false|none||none| |generatedAt|string(date-time)|false|none||none|

MatchSignal

```json { "average": 0, "sampleCount": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |average|number|false|none||none| |sampleCount|integer(int32)|false|none||none|

ApiResponseCandidateScoringTrendResponse

```json { "code": 0, "message": "string", "data": { "candidateId": 0, "months": 0, "items": [ { "period": "string", "overallScore": 0, "rulesVersion": "string", "dimensions": { "property1": 0, "property2": 0 } } ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CandidateScoringTrendResponse](#schemacandidatescoringtrendresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CandidatePercentileResponse

```json { "candidateId": 0, "status": "string", "scoreType": "string", "score": 0, "percentile": 0, "cohortSize": 0, "sampleCount": 0, "minimumSampleCount": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |candidateId|integer(int64)|false|none||none| |status|string|false|none||none| |scoreType|string|false|none||none| |score|number|false|none||none| |percentile|number|false|none||none| |cohortSize|integer(int32)|false|none||none| |sampleCount|integer(int32)|false|none||none| |minimumSampleCount|integer(int32)|false|none||none|

ApiResponseCompanyCandidateScoringResponse

```json { "code": 0, "message": "string", "data": { "applicationId": 0, "overallScore": 0, "status": "string", "dimensions": [ { "dimension": "string", "score": 0, "status": "string" } ], "generatedAt": "2019-08-24T14:15:22Z", "rulesVersion": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CompanyCandidateScoringResponse](#schemacompanycandidatescoringresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseScoreTrendResponse

```json { "code": 0, "message": "string", "data": { "companyId": 0, "months": 0, "items": [ { "period": "string", "overallScore": 0, "rulesVersion": "string", "dimensions": { "property1": 0, "property2": 0 } } ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[ScoreTrendResponse](#schemascoretrendresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ScoreTrendResponse

```json { "companyId": 0, "months": 0, "items": [ { "period": "string", "overallScore": 0, "rulesVersion": "string", "dimensions": { "property1": 0, "property2": 0 } } ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |companyId|integer(int64)|false|none||none| |months|integer(int32)|false|none||none| |items|[[TrendItem](#schematrenditem)]|false|none||none|

ApiResponseDashboardOverviewResponse

```json { "code": 0, "message": "string", "data": { "companyId": 0, "totalJobs": 0, "publishedJobs": 0, "avgJobScore": 0, "totalCandidates": 0, "avgCandidateScore": 0, "scoreDistribution": { "property1": 0, "property2": 0 }, "updatedAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[DashboardOverviewResponse](#schemadashboardoverviewresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

DashboardOverviewResponse

```json { "companyId": 0, "totalJobs": 0, "publishedJobs": 0, "avgJobScore": 0, "totalCandidates": 0, "avgCandidateScore": 0, "scoreDistribution": { "property1": 0, "property2": 0 }, "updatedAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |companyId|integer(int64)|false|none||none| |totalJobs|integer(int32)|false|none||none| |publishedJobs|integer(int32)|false|none||none| |avgJobScore|number|false|none||none| |totalCandidates|integer(int32)|false|none||none| |avgCandidateScore|number|false|none||none| |scoreDistribution|object|false|none||none| |» **additionalProperties**|integer(int32)|false|none||none| |updatedAt|string(date-time)|false|none||none|

ApiResponseJobRankingListResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "jobId": 0, "title": "string", "city": "string", "employmentType": "string", "avgRating": 0, "reviewCount": 0, "rank": 0, "cohortSize": 0, "dimensionAverages": { "property1": 0, "property2": 0 } } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[JobRankingListResponse](#schemajobrankinglistresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

JobRankingItem

```json { "jobId": 0, "title": "string", "city": "string", "employmentType": "string", "avgRating": 0, "reviewCount": 0, "rank": 0, "cohortSize": 0, "dimensionAverages": { "property1": 0, "property2": 0 } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |jobId|integer(int64)|false|none||none| |title|string|false|none||none| |city|string|false|none||none| |employmentType|string|false|none||none| |avgRating|number|false|none||none| |reviewCount|integer(int32)|false|none||none| |rank|integer(int32)|false|none||none| |cohortSize|integer(int32)|false|none||none| |dimensionAverages|object|false|none||none| |» **additionalProperties**|number|false|none||none|

JobRankingListResponse

```json { "items": [ { "jobId": 0, "title": "string", "city": "string", "employmentType": "string", "avgRating": 0, "reviewCount": 0, "rank": 0, "cohortSize": 0, "dimensionAverages": { "property1": 0, "property2": 0 } } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |items|[[JobRankingItem](#schemajobrankingitem)]|false|none||none| |total|integer(int64)|false|none||none| |page|integer(int32)|false|none||none| |size|integer(int32)|false|none||none| |totalPages|integer(int32)|false|none||none|

ApiResponseJobRankingItem

```json { "code": 0, "message": "string", "data": { "jobId": 0, "title": "string", "city": "string", "employmentType": "string", "avgRating": 0, "reviewCount": 0, "rank": 0, "cohortSize": 0, "dimensionAverages": { "property1": 0, "property2": 0 } }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[JobRankingItem](#schemajobrankingitem)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseCandidateRankingListResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "applicationId": 0, "jobId": 0, "candidateName": "string", "candidateSchool": "string", "overallScore": 0, "percentile": 0, "sampleCount": 0 } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CandidateRankingListResponse](#schemacandidaterankinglistresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CandidateRankingItem

```json { "applicationId": 0, "jobId": 0, "candidateName": "string", "candidateSchool": "string", "overallScore": 0, "percentile": 0, "sampleCount": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |applicationId|integer(int64)|false|none||none| |jobId|integer(int64)|false|none||none| |candidateName|string|false|none||none| |candidateSchool|string|false|none||none| |overallScore|number|false|none||none| |percentile|number|false|none||none| |sampleCount|integer(int32)|false|none||none|

CandidateDetailView

```json { "applicationId": 0, "jobId": 0, "jobTitle": "string", "jobCity": "string", "jobEmploymentType": "string", "status": "string", "coverLetter": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "candidateName": "string", "candidateAvatarUrl": "string", "candidateBio": "string", "candidateLocation": "string", "candidateSchool": "string", "candidateEducation": "string", "candidateGraduationYear": 0, "candidateSkills": [ "string" ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |applicationId|integer(int64)|false|none||none| |jobId|integer(int64)|false|none||none| |jobTitle|string|false|none||none| |jobCity|string|false|none||none| |jobEmploymentType|string|false|none||none| |status|string|false|none||none| |coverLetter|string|false|none||none| |createdAt|string(date-time)|false|none||none| |updatedAt|string(date-time)|false|none||none| |candidateName|string|false|none||none| |candidateAvatarUrl|string|false|none||none| |candidateBio|string|false|none||none| |candidateLocation|string|false|none||none| |candidateSchool|string|false|none||none| |candidateEducation|string|false|none||none| |candidateGraduationYear|integer(int32)|false|none||none| |candidateSkills|[string]|false|none||none|

CandidateRankingListResponse

```json { "items": [ { "applicationId": 0, "jobId": 0, "candidateName": "string", "candidateSchool": "string", "overallScore": 0, "percentile": 0, "sampleCount": 0 } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |items|[[CandidateRankingItem](#schemacandidaterankingitem)]|false|none||none| |total|integer(int64)|false|none||none| |page|integer(int32)|false|none||none| |size|integer(int32)|false|none||none| |totalPages|integer(int32)|false|none||none|

ApiResponseCandidateRankingDetailResponse

```json { "code": 0, "message": "string", "data": { "applicationId": 0, "jobId": 0, "candidateName": "string", "candidateSchool": "string", "overallScore": 0, "percentile": 0, "cohortSize": 0, "dimensionScores": [ { "dimension": "string", "score": 0, "status": "string" } ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CandidateRankingDetailResponse](#schemacandidaterankingdetailresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CandidateRankingDetailResponse

```json { "applicationId": 0, "jobId": 0, "candidateName": "string", "candidateSchool": "string", "overallScore": 0, "percentile": 0, "cohortSize": 0, "dimensionScores": [ { "dimension": "string", "score": 0, "status": "string" } ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |applicationId|integer(int64)|false|none||none| |jobId|integer(int64)|false|none||none| |candidateName|string|false|none||none| |candidateSchool|string|false|none||none| |overallScore|number|false|none||none| |percentile|number|false|none||none| |cohortSize|integer(int32)|false|none||none| |dimensionScores|[[DimensionScoreItem](#schemadimensionscoreitem)]|false|none||none|

DimensionScoreItem

```json { "dimension": "string", "score": 0, "status": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |dimension|string|false|none||none| |score|number|false|none||none| |status|string|false|none||none|

CandidateItemView

```json { "applicationId": 0, "jobId": 0, "jobTitle": "string", "status": "string", "candidateName": "string", "candidateSchool": "string", "candidateEducation": "string", "candidateGraduationYear": 0, "candidateAvatarUrl": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |applicationId|integer(int64)|false|none||none| |jobId|integer(int64)|false|none||none| |jobTitle|string|false|none||none| |status|string|false|none||none| |candidateName|string|false|none||none| |candidateSchool|string|false|none||none| |candidateEducation|string|false|none||none| |candidateGraduationYear|integer(int32)|false|none||none| |candidateAvatarUrl|string|false|none||none| |createdAt|string(date-time)|false|none||none| |updatedAt|string(date-time)|false|none||none|

ApiResponseCandidateListResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "applicationId": 0, "jobId": 0, "jobTitle": "string", "status": "string", "candidateName": "string", "candidateSchool": "string", "candidateEducation": "string", "candidateGraduationYear": 0, "candidateAvatarUrl": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CandidateListResponse](#schemacandidatelistresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CandidateListResponse

```json { "items": [ { "applicationId": 0, "jobId": 0, "jobTitle": "string", "status": "string", "candidateName": "string", "candidateSchool": "string", "candidateEducation": "string", "candidateGraduationYear": 0, "candidateAvatarUrl": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |items|[[CandidateItemView](#schemacandidateitemview)]|false|none||none| |total|integer(int64)|false|none||none| |page|integer(int32)|false|none||none| |size|integer(int32)|false|none||none| |totalPages|integer(int32)|false|none||none|

ApiResponseCandidateDetailView

```json { "code": 0, "message": "string", "data": { "applicationId": 0, "jobId": 0, "jobTitle": "string", "jobCity": "string", "jobEmploymentType": "string", "status": "string", "coverLetter": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "candidateName": "string", "candidateAvatarUrl": "string", "candidateBio": "string", "candidateLocation": "string", "candidateSchool": "string", "candidateEducation": "string", "candidateGraduationYear": 0, "candidateSkills": [ "string" ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CandidateDetailView](#schemacandidatedetailview)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CompanyCandidateScoringResponse

```json { "applicationId": 0, "overallScore": 0, "status": "string", "dimensions": [ { "dimension": "string", "score": 0, "status": "string" } ], "generatedAt": "2019-08-24T14:15:22Z", "rulesVersion": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |applicationId|integer(int64)|false|none||none| |overallScore|number|false|none||none| |status|string|false|none||none| |dimensions|[[CompanyDimensionItem](#schemacompanydimensionitem)]|false|none||none| |generatedAt|string(date-time)|false|none||none| |rulesVersion|string|false|none||none|

CompanyDimensionItem

```json { "dimension": "string", "score": 0, "status": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |dimension|string|false|none||none| |score|number|false|none||none| |status|string|false|none||none|

CandidateScoringOverviewResponse

```json { "candidateId": 0, "status": "string", "overallScore": 0, "weights": { "property1": 0, "property2": 0 }, "dimensions": [ { "dimension": "string", "score": 0, "status": "string", "weight": 0, "summary": "string" } ], "rulesVersion": "string", "generatedAt": "2019-08-24T14:15:22Z", "explanationVersion": "string", "coverage": { "computableDimensions": 0, "totalDimensions": 0, "includedDimensions": [ "string" ], "excludedDimensions": [ { "dimension": "string", "status": "string", "reason": "string" } ] }, "comparabilityNotice": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |candidateId|integer(int64)|false|none||none| |status|string|false|none||none| |overallScore|number|false|none||none| |weights|object|false|none||none| |» **additionalProperties**|number|false|none||none| |dimensions|[[DimensionItem](#schemadimensionitem)]|false|none||none| |rulesVersion|string|false|none||none| |generatedAt|string(date-time)|false|none||none| |explanationVersion|string|false|none||解释契约版本,与评分规则版本独立| |coverage|[CandidateScoringCoverage](#schemacandidatescoringcoverage)|false|none||none| |comparabilityNotice|string|false|none||none|

AdminDashboardOverviewResponse

```json { "totalCompanies": 0, "totalJobs": 0, "totalCandidates": 0, "avgCandidateScore": 0, "topCompanies": [ { "companyId": 0, "companyName": "string", "avgCandidateScore": 0, "jobCount": 0 } ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |totalCompanies|integer(int32)|false|none||none| |totalJobs|integer(int32)|false|none||none| |totalCandidates|integer(int32)|false|none||none| |avgCandidateScore|number|false|none||none| |topCompanies|[[CompanyScoreItem](#schemacompanyscoreitem)]|false|none||none|

ApiResponseAdminDashboardOverviewResponse

```json { "code": 0, "message": "string", "data": { "totalCompanies": 0, "totalJobs": 0, "totalCandidates": 0, "avgCandidateScore": 0, "topCompanies": [ { "companyId": 0, "companyName": "string", "avgCandidateScore": 0, "jobCount": 0 } ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[AdminDashboardOverviewResponse](#schemaadmindashboardoverviewresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CompanyScoreItem

```json { "companyId": 0, "companyName": "string", "avgCandidateScore": 0, "jobCount": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |companyId|integer(int64)|false|none||none| |companyName|string|false|none||none| |avgCandidateScore|number|false|none||none| |jobCount|integer(int32)|false|none||none|

ApiResponseListSnapshotHistoryItem

```json { "code": 0, "message": "string", "data": [ { "id": 0, "appealId": 0, "action": "string", "dimension": "string", "period": "string", "beforeScore": 0, "afterScore": 0, "beforeVersion": 0, "afterVersion": 0, "beforeRulesVersion": "string", "afterRulesVersion": "string", "createdAt": "2019-08-24T14:15:22Z" } ], "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[[SnapshotHistoryItem](#schemasnapshothistoryitem)]|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

SnapshotHistoryItem

```json { "id": 0, "appealId": 0, "action": "string", "dimension": "string", "period": "string", "beforeScore": 0, "afterScore": 0, "beforeVersion": 0, "afterVersion": 0, "beforeRulesVersion": "string", "afterRulesVersion": "string", "createdAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||none| |appealId|integer(int64)|false|none||none| |action|string|false|none||none| |dimension|string|false|none||none| |period|string|false|none||none| |beforeScore|number|false|none||none| |afterScore|number|false|none||none| |beforeVersion|integer(int64)|false|none||none| |afterVersion|integer(int64)|false|none||none| |beforeRulesVersion|string|false|none||none| |afterRulesVersion|string|false|none||none| |createdAt|string(date-time)|false|none||none|

ApiResponseListAppealHistoryItem

```json { "code": 0, "message": "string", "data": [ { "id": 0, "fromStatus": "string", "toStatus": "string", "actorUserId": 0, "actorRole": "string", "reason": "string", "createdAt": "2019-08-24T14:15:22Z" } ], "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[[AppealHistoryItem](#schemaappealhistoryitem)]|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

AppealHistoryItem

```json { "id": 0, "fromStatus": "string", "toStatus": "string", "actorUserId": 0, "actorRole": "string", "reason": "string", "createdAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||none| |fromStatus|string|false|none||none| |toStatus|string|false|none||none| |actorUserId|integer(int64)|false|none||none| |actorRole|string|false|none||none| |reason|string|false|none||none| |createdAt|string(date-time)|false|none||none|

PrivacySettingsResponse

```json { "id": 1, "studentUserId": 2, "resumeVisibility": "APPLIED_COMPANIES", "contactVisible": true, "version": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)¦null|false|none||none| |studentUserId|integer(int64)|false|none||none| |resumeVisibility|[ResumeVisibility](#schemaresumevisibility)|false|none||简历可见性(PRIVATE/APPLIED_COMPANIES/VERIFIED_COMPANIES)| |contactVisible|boolean|false|none||none| |version|integer(int64)|false|none||none| |createdAt|string(date-time)¦null|false|none||none| |updatedAt|string(date-time)¦null|false|none||none|

ResumeVisibility

```json "PRIVATE" ``` 简历可见性:PRIVATE 私有;APPLIED_COMPANIES 仅对企业有效投递可见;VERIFIED_COMPANIES 仅对认证企业可见 ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |*anonymous*|string|false|none||简历可见性:PRIVATE 私有;APPLIED_COMPANIES 仅对企业有效投递可见;VERIFIED_COMPANIES 仅对认证企业可见| #### 枚举值 |属性|值| |---|---| |*anonymous*|PRIVATE| |*anonymous*|APPLIED_COMPANIES| |*anonymous*|VERIFIED_COMPANIES|

DimensionScoreDetailResponse

```json { "dimension": "string", "score": 0, "status": "string", "subScores": [ { "name": "string", "score": 0, "weight": 0, "description": "string" } ], "reasons": [ "string" ], "dataSources": [ { "source": "string", "time": "2019-08-24T14:15:22Z", "note": "string" } ], "updatedAt": "2019-08-24T14:15:22Z", "rulesVersion": "string", "displayName": "string", "whatItMeasures": "string", "interpretation": "string", "limitations": [ "string" ], "evidenceLevel": "DIRECT_RULE", "ruleContributions": [ { "ruleCode": "string", "outcome": "APPLIED", "contribution": 0, "maxContribution": 0, "label": "string", "observation": "string", "explanation": "string" } ], "improvementActions": [ "string" ], "explanationVersion": "string", "validity": { "completedAt": "2019-08-24T14:15:22Z", "validUntil": "2019-08-24T14:15:22Z", "expired": true }, "calculatedAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |dimension|string|false|none||none| |score|number|false|none||none| |status|string|false|none||none| |subScores|[[SubScore](#schemasubscore)]|false|none||none| |reasons|[string]|false|none||none| |dataSources|[[DataSourceItem](#schemadatasourceitem)]|false|none||none| |updatedAt|string(date-time)|false|none||none| |rulesVersion|string|false|none||none| |displayName|string|false|none||none| |whatItMeasures|string|false|none||none| |interpretation|string|false|none||none| |limitations|[string]|false|none||none| |evidenceLevel|string|false|none||none| |ruleContributions|[[CandidateScoringRuleContribution](#schemacandidatescoringrulecontribution)]|false|none||none| |improvementActions|[string]|false|none||none| |explanationVersion|string|false|none||none| |validity|[CandidateScoringValidity](#schemacandidatescoringvalidity)|false|none||none| |calculatedAt|string(date-time)|false|none||none| #### 枚举值 |属性|值| |---|---| |evidenceLevel|DIRECT_RULE| |evidenceLevel|SELF_REPORTED| |evidenceLevel|BEHAVIOR_PROXY| |evidenceLevel|UNVALIDATED_PROXY|

ApiResponseInterviewScoreResponse

```json { "code": 0, "message": "string", "data": { "id": 0, "interviewId": 0, "applicationId": 0, "status": "DRAFT", "technicalScore": 0, "communicationScore": 0, "problemSolvingScore": 0, "roleFitScore": 0, "professionalismScore": 0, "overallScore": 0, "recommendation": "STRONG_HIRE", "comment": "string", "submittedAt": "2019-08-24T14:15:22Z", "version": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[InterviewScoreResponse](#schemainterviewscoreresponse)|false|none||面试评分响应(脱敏:不返回 companyUserId/studentUserId/evaluatorUserId/手机号/邮箱)| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseListInterviewScoreHistoryItem

```json { "code": 0, "message": "string", "data": [ { "id": 0, "scoreId": 0, "interviewId": 0, "fromStatus": "DRAFT", "toStatus": "DRAFT", "actorRole": "COMPANY", "snapshot": { "property1": null, "property2": null }, "createdAt": "2019-08-24T14:15:22Z" } ], "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[[InterviewScoreHistoryItem](#schemainterviewscorehistoryitem)]|false|none||[评分历史条目(脱敏:不返回 actorUserId/手机号/邮箱)]| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ReportResponseReportedUser

```json { "userId": 0, "nickname": "string", "role": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |userId|integer(int64)|false|none||none| |nickname|string|false|none||none| |role|string|false|none||none|

PrivacySettingsUpdateRequest

```json { "resumeVisibility": "APPLIED_COMPANIES", "contactVisible": true, "version": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |resumeVisibility|[ResumeVisibility](#schemaresumevisibility)|true|none||简历可见性(必填)| |contactVisible|boolean|true|none||联系方式是否对企业可见(必填)| |version|integer(int64)|false|none||乐观锁版本号(可选)|

ReportResponseDecisionHistoryItem

```json { "id": 0, "fromStatus": "string", "toStatus": "string", "actorUserId": 0, "actorRole": "string", "note": "string", "createdAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||none| |fromStatus|string|false|none||none| |toStatus|string|false|none||none| |actorUserId|integer(int64)|false|none||none| |actorRole|string|false|none||none| |note|string|false|none||none| |createdAt|string(date-time)|false|none||none|

BlockRelationResponse

```json { "id": 0, "blockedUserId": 0, "nickname": "string", "createdAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||none| |blockedUserId|integer(int64)|false|none||none| |nickname|string|false|none||none| |createdAt|string(date-time)|false|none||none|

ApiResponseReportResponse

```json { "code": 0, "message": "string", "data": { "id": 0, "targetType": "USER", "targetUserId": 0, "messageId": 0, "reportedUserId": 0, "category": "string", "reason": "string", "evidenceUrls": [ "string" ], "status": "PENDING", "decision": "RESOLVED", "decisionNote": "string", "decidedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "messagePreview": "string", "reportedUser": { "userId": 0, "nickname": "string", "role": "string" }, "history": [ { "id": 0, "fromStatus": "string", "toStatus": "string", "actorUserId": 0, "actorRole": "string", "note": "string", "createdAt": "2019-08-24T14:15:22Z" } ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[ReportResponse](#schemareportresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseBlockRelationResponse

```json { "code": 0, "message": "string", "data": { "id": 0, "blockedUserId": 0, "nickname": "string", "createdAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[BlockRelationResponse](#schemablockrelationresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CreateAbilityAttemptRequest

```json { "typeCode": "string", "idempotencyKey": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |typeCode|string|true|none||none| |idempotencyKey|string|false|none||none|

SaveAbilityAnswersRequest

```json { "answers": [ { "attemptQuestionId": 0, "selectedOptionId": "stri" } ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |answers|[[AbilityAnswerItem](#schemaabilityansweritem)]|true|none||none|

AbilityAnswerItem

```json { "attemptQuestionId": 0, "selectedOptionId": "stri" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |attemptQuestionId|integer(int64)|true|none||none| |selectedOptionId|string|true|none||none|

AbilityTypeResponse

```json { "typeCode": "string", "displayName": "string", "description": "string", "questionCount": 0, "attemptQuestionCount": 0, "timeLimitMinutes": 0, "resultValidDays": 0, "status": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |typeCode|string|false|none||none| |displayName|string|false|none||none| |description|string|false|none||none| |questionCount|integer(int32)|false|none||none| |attemptQuestionCount|integer(int32)|false|none||none| |timeLimitMinutes|integer(int32)|false|none||none| |resultValidDays|integer(int32)|false|none||none| |status|string|false|none||none|

AbilityAttemptResponse

```json { "attemptId": 0, "status": "string", "answeredCount": 0, "totalQuestions": 0, "completionRate": 0, "startedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "remainingSeconds": 0, "questions": [ { "attemptQuestionId": 0, "position": 0, "itemType": "string", "stem": "string", "options": [ { "optionId": "string", "text": "string" } ], "selectedOptionId": "string" } ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |attemptId|integer(int64)|false|none||none| |status|string|false|none||none| |answeredCount|integer(int32)|false|none||none| |totalQuestions|integer(int32)|false|none||none| |completionRate|number|false|none||none| |startedAt|string(date-time)¦null|false|none||none| |expiresAt|string(date-time)¦null|false|none||none| |remainingSeconds|integer(int64)¦null|false|none||none| |questions|[[AbilityAttemptQuestionView](#schemaabilityattemptquestionview)]|false|none||none|

AbilityAttemptQuestionView

```json { "attemptQuestionId": 0, "position": 0, "itemType": "string", "stem": "string", "options": [ { "optionId": "string", "text": "string" } ], "selectedOptionId": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |attemptQuestionId|integer(int64)|false|none||none| |position|integer(int32)|false|none||none| |itemType|string|false|none||none| |stem|string|false|none||none| |options|[[AbilityOptionView](#schemaabilityoptionview)]|false|none||none| |selectedOptionId|string|false|none||none|

AdminCompanyReviewReplyResponse

```json { "id": 1, "reviewId": 100, "companyUserId": 5, "content": "感谢您的反馈,我们会持续改进", "moderationStatus": "PENDING", "moderationReason": "内容合规", "createdAt": "2026-09-01T10:00:00", "updatedAt": "2026-09-01T10:00:00", "moderationUpdatedAt": "2026-09-01T10:00:00", "jobId": 50, "jobTitle": "Java 后端工程师", "companyId": 2, "companyName": "本源科技", "reviewRating": 3, "reviewContent": "整体体验不错", "studentUserId": 2 } ``` 管理端企业回复(含岗位/企业/评价上下文) ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||回复 ID| |reviewId|integer(int64)|false|none||被回复的评价 ID| |companyUserId|integer(int64)|false|none||回复企业用户 id| |content|string|false|none||回复内容| |moderationStatus|string|false|none||审核状态:PENDING/APPROVED/REJECTED| |moderationReason|string|false|none||审核原因/意见| |createdAt|string(date-time)|false|none||创建时间| |updatedAt|string(date-time)|false|none||更新时间| |moderationUpdatedAt|string(date-time)|false|none||审核时间| |jobId|integer(int64)|false|none||岗位 ID| |jobTitle|string|false|none||岗位标题| |companyId|integer(int64)|false|none||企业 ID| |companyName|string|false|none||企业名称| |reviewRating|integer(int32)|false|none||评价评分| |reviewContent|string|false|none||评价内容| |studentUserId|integer(int64)|false|none||评价学生用户 id|

AbilityOptionView

```json { "optionId": "string", "text": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |optionId|string|false|none||none| |text|string|false|none||none|

ApiResponsePageResponseAdminCompanyReviewReplyResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "id": 1, "reviewId": 100, "companyUserId": 5, "content": "感谢您的反馈,我们会持续改进", "moderationStatus": "PENDING", "moderationReason": "内容合规", "createdAt": "2026-09-01T10:00:00", "updatedAt": "2026-09-01T10:00:00", "moderationUpdatedAt": "2026-09-01T10:00:00", "jobId": 50, "jobTitle": "Java 后端工程师", "companyId": 2, "companyName": "本源科技", "reviewRating": 3, "reviewContent": "整体体验不错", "studentUserId": 2 } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[PageResponseAdminCompanyReviewReplyResponse](#schemapageresponseadmincompanyreviewreplyresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

AbilityResultResponse

```json { "attemptId": 0, "typeCode": "string", "status": "string", "validityStatus": "string", "validUntil": "2019-08-24T14:15:22Z", "dimensionScores": [ { "code": "string", "score": 0, "answeredCount": 0 } ], "overallScore": 0, "weaknesses": [ { "code": "string", "score": 0 } ], "improvementAreas": [ { "dimension": "string", "currentScore": 0, "summary": "string", "actions": [ "string" ] } ], "radar": [ { "code": "string", "value": 0 } ], "answeredCount": 0, "completionRate": 0, "questionFeedback": [ { "attemptQuestionId": 0, "position": 0, "stem": "string", "selectedOptionId": "string", "awardedScore": 0, "maxScore": 0, "explanation": "string" } ], "questionSetVersion": "string", "rulesVersion": "string", "generatedAt": "2019-08-24T14:15:22Z", "disclaimer": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |attemptId|integer(int64)|false|none||none| |typeCode|string|false|none||none| |status|string|false|none||none| |validityStatus|string|false|none||none| |validUntil|string(date-time)¦null|false|none||none| |dimensionScores|[[AbilityDimensionScore](#schemaabilitydimensionscore)]|false|none||none| |overallScore|number|false|none||none| |weaknesses|[[AbilityWeakness](#schemaabilityweakness)]|false|none||none| |improvementAreas|[[AbilityImprovementArea](#schemaabilityimprovementarea)]|false|none||none| |radar|[[AbilityRadarEntry](#schemaabilityradarentry)]|false|none||none| |answeredCount|integer(int32)|false|none||none| |completionRate|number|false|none||none| |questionFeedback|[[AbilityQuestionFeedback](#schemaabilityquestionfeedback)]|false|none||none| |questionSetVersion|string|false|none||none| |rulesVersion|string|false|none||none| |generatedAt|string(date-time)|false|none||none| |disclaimer|string|false|none||none|

PageResponseAdminCompanyReviewReplyResponse

```json { "items": [ { "id": 1, "reviewId": 100, "companyUserId": 5, "content": "感谢您的反馈,我们会持续改进", "moderationStatus": "PENDING", "moderationReason": "内容合规", "createdAt": "2026-09-01T10:00:00", "updatedAt": "2026-09-01T10:00:00", "moderationUpdatedAt": "2026-09-01T10:00:00", "jobId": 50, "jobTitle": "Java 后端工程师", "companyId": 2, "companyName": "本源科技", "reviewRating": 3, "reviewContent": "整体体验不错", "studentUserId": 2 } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |items|[[AdminCompanyReviewReplyResponse](#schemaadmincompanyreviewreplyresponse)]|false|none||[管理端企业回复(含岗位/企业/评价上下文)]| |total|integer(int64)|false|none||none| |page|integer(int32)|false|none||none| |size|integer(int32)|false|none||none| |totalPages|integer(int32)|false|none||none|

AbilityDimensionScore

```json { "code": "string", "score": 0, "answeredCount": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|string|false|none||none| |score|number|false|none||none| |answeredCount|integer(int32)|false|none||none|

AbilityWeakness

```json { "code": "string", "score": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|string|false|none||none| |score|number|false|none||none|

AbilityImprovementArea

```json { "dimension": "string", "currentScore": 0, "summary": "string", "actions": [ "string" ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |dimension|string|false|none||none| |currentScore|number|false|none||none| |summary|string|false|none||none| |actions|[string]|false|none||none|

AbilityRadarEntry

```json { "code": "string", "value": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|string|false|none||none| |value|number|false|none||none|

InterviewScoreSaveRequest

```json { "technicalScore": 1, "communicationScore": 1, "problemSolvingScore": 1, "roleFitScore": 1, "professionalismScore": 1, "recommendation": "STRONG_HIRE", "comment": "string" } ``` 评分草稿保存请求;overallScore 由服务端计算,客户端不得传入 ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |technicalScore|integer¦null|false|none||none| |communicationScore|integer¦null|false|none||none| |problemSolvingScore|integer¦null|false|none||none| |roleFitScore|integer¦null|false|none||none| |professionalismScore|integer¦null|false|none||none| |recommendation|string¦null|false|none||企业手动选择,不根据 overallScore 自动推导| |comment|string¦null|false|none||none| #### 枚举值 |属性|值| |---|---| |recommendation|STRONG_HIRE| |recommendation|HIRE| |recommendation|NEUTRAL| |recommendation|NO_HIRE|

AbilityQuestionFeedback

```json { "attemptQuestionId": 0, "position": 0, "stem": "string", "selectedOptionId": "string", "awardedScore": 0, "maxScore": 0, "explanation": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |attemptQuestionId|integer(int64)|false|none||none| |position|integer(int32)|false|none||none| |stem|string|false|none||none| |selectedOptionId|string|false|none||none| |awardedScore|integer(int32)|false|none||none| |maxScore|integer(int32)|false|none||none| |explanation|string|false|none||none|

InterviewScoreResponse

```json { "id": 0, "interviewId": 0, "applicationId": 0, "status": "DRAFT", "technicalScore": 0, "communicationScore": 0, "problemSolvingScore": 0, "roleFitScore": 0, "professionalismScore": 0, "overallScore": 0, "recommendation": "STRONG_HIRE", "comment": "string", "submittedAt": "2019-08-24T14:15:22Z", "version": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ``` 面试评分响应(脱敏:不返回 companyUserId/studentUserId/evaluatorUserId/手机号/邮箱) ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||none| |interviewId|integer(int64)|false|none||none| |applicationId|integer(int64)|false|none||none| |status|string|false|none||none| |technicalScore|integer¦null|false|none||none| |communicationScore|integer¦null|false|none||none| |problemSolvingScore|integer¦null|false|none||none| |roleFitScore|integer¦null|false|none||none| |professionalismScore|integer¦null|false|none||none| |overallScore|number(decimal)¦null|false|none||由服务端 BigDecimal 计算:(t+c+ps+rf+p)/5,保留两位小数 HALF_UP| |recommendation|string¦null|false|none||none| |comment|string¦null|false|none||none| |submittedAt|string(date-time)¦null|false|none||none| |version|integer(int64)|false|none||none| |createdAt|string(date-time)|false|none||none| |updatedAt|string(date-time)|false|none||none| #### 枚举值 |属性|值| |---|---| |status|DRAFT| |status|SUBMITTED| |recommendation|STRONG_HIRE| |recommendation|HIRE| |recommendation|NEUTRAL| |recommendation|NO_HIRE|

AbilityHistoryItem

```json { "attemptId": 0, "typeCode": "string", "status": "string", "validityStatus": "string", "overallScore": 0, "answeredCount": 0, "completionRate": 0, "startedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "completedAt": "2019-08-24T14:15:22Z", "validUntil": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |attemptId|integer(int64)|false|none||none| |typeCode|string|false|none||none| |status|string|false|none||none| |validityStatus|string|false|none||none| |overallScore|number|false|none||none| |answeredCount|integer(int32)|false|none||none| |completionRate|number|false|none||none| |startedAt|string(date-time)¦null|false|none||none| |expiresAt|string(date-time)¦null|false|none||none| |completedAt|string(date-time)¦null|false|none||none| |validUntil|string(date-time)¦null|false|none||none|

ApiResponseAbilityTypeResponse

```json { "code": 0, "message": "string", "data": { "typeCode": "string", "displayName": "string", "description": "string", "questionCount": 0, "attemptQuestionCount": 0, "timeLimitMinutes": 0, "resultValidDays": 0, "status": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[AbilityTypeResponse](#schemaabilitytyperesponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

InterviewScoreHistoryItem

```json { "id": 0, "scoreId": 0, "interviewId": 0, "fromStatus": "DRAFT", "toStatus": "DRAFT", "actorRole": "COMPANY", "snapshot": { "property1": null, "property2": null }, "createdAt": "2019-08-24T14:15:22Z" } ``` 评分历史条目(脱敏:不返回 actorUserId/手机号/邮箱) ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||none| |scoreId|integer(int64)|false|none||none| |interviewId|integer(int64)|false|none||none| |fromStatus|string¦null|false|none||none| |toStatus|string|false|none||none| |actorRole|string|false|none||none| |snapshot|object|false|none||none| |» **additionalProperties**|any|false|none||none| |createdAt|string(date-time)|false|none||none| #### 枚举值 |属性|值| |---|---| |fromStatus|DRAFT| |fromStatus|SUBMITTED| |toStatus|DRAFT| |toStatus|SUBMITTED|

ApiResponseAbilityAttemptResponse

```json { "code": 0, "message": "string", "data": { "attemptId": 0, "status": "string", "answeredCount": 0, "totalQuestions": 0, "completionRate": 0, "startedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "remainingSeconds": 0, "questions": [ { "attemptQuestionId": 0, "position": 0, "itemType": "string", "stem": "string", "options": [ { "optionId": null, "text": null } ], "selectedOptionId": "string" } ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[AbilityAttemptResponse](#schemaabilityattemptresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseAbilityResultResponse

```json { "code": 0, "message": "string", "data": { "attemptId": 0, "typeCode": "string", "status": "string", "validityStatus": "string", "validUntil": "2019-08-24T14:15:22Z", "dimensionScores": [ { "code": "string", "score": 0, "answeredCount": 0 } ], "overallScore": 0, "weaknesses": [ { "code": "string", "score": 0 } ], "improvementAreas": [ { "dimension": "string", "currentScore": 0, "summary": "string", "actions": [ "string" ] } ], "radar": [ { "code": "string", "value": 0 } ], "answeredCount": 0, "completionRate": 0, "questionFeedback": [ { "attemptQuestionId": 0, "position": 0, "stem": "string", "selectedOptionId": "string", "awardedScore": 0, "maxScore": 0, "explanation": "string" } ], "questionSetVersion": "string", "rulesVersion": "string", "generatedAt": "2019-08-24T14:15:22Z", "disclaimer": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[AbilityResultResponse](#schemaabilityresultresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CreateReportRequest

```json { "targetType": "USER", "targetUserId": 0, "messageId": 0, "category": "string", "reason": "string", "evidenceUrls": [ "string" ], "idempotencyKey": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |targetType|string|false|none||举报目标类型;USER 必填 targetUserId,MESSAGE 必填 messageId| |targetUserId|integer(int64)|false|none||targetType=USER 时必填| |messageId|integer(int64)|false|none||targetType=MESSAGE 时必填| |category|string|false|none||举报分类,如 HARASSMENT| |reason|string|false|none||none| |evidenceUrls|[string]|false|none||最多 5 个,仅 http/https,最多 500 字符| |idempotencyKey|string|false|none||幂等键(可选)| #### 枚举值 |属性|值| |---|---| |targetType|USER| |targetType|MESSAGE|

ApiResponsePageResponseAbilityHistoryItem

```json { "code": 0, "message": "string", "data": { "items": [ { "attemptId": 0, "typeCode": "string", "status": "string", "validityStatus": "string", "overallScore": 0, "answeredCount": 0, "completionRate": 0, "startedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "completedAt": "2019-08-24T14:15:22Z", "validUntil": "2019-08-24T14:15:22Z" } ], "totalElements": 0, "page": 0, "size": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|object|false|none||none| |» items|[[AbilityHistoryItem](#schemaabilityhistoryitem)]|false|none||none| |» totalElements|integer(int64)|false|none||none| |» page|integer(int32)|false|none||none| |» size|integer(int32)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ReportDecisionRequest

```json { "decision": "RESOLVED", "note": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |decision|string|false|none||none| |note|string|false|none||REJECTED 必填| #### 枚举值 |属性|值| |---|---| |decision|RESOLVED| |decision|REJECTED|

RiskRuleResponse

```json { "ruleCode": "string", "sourceAction": "string", "thresholdCount": 0, "windowMinutes": 0, "severity": "string", "enabled": true, "version": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |ruleCode|string|false|none||none| |sourceAction|string|false|none||none| |thresholdCount|integer(int32)|false|none||none| |windowMinutes|integer(int32)|false|none||none| |severity|string|false|none||none| |enabled|boolean|false|none||none| |version|integer(int64)|false|none||none|

ReportResponse

```json { "id": 0, "targetType": "USER", "targetUserId": 0, "messageId": 0, "reportedUserId": 0, "category": "string", "reason": "string", "evidenceUrls": [ "string" ], "status": "PENDING", "decision": "RESOLVED", "decisionNote": "string", "decidedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "messagePreview": "string", "reportedUser": { "userId": 0, "nickname": "string", "role": "string" }, "history": [ { "id": 0, "fromStatus": "string", "toStatus": "string", "actorUserId": 0, "actorRole": "string", "note": "string", "createdAt": "2019-08-24T14:15:22Z" } ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||none| |targetType|string|false|none||none| |targetUserId|integer(int64)|false|none||none| |messageId|integer(int64)|false|none||none| |reportedUserId|integer(int64)|false|none||none| |category|string|false|none||none| |reason|string|false|none||none| |evidenceUrls|[string]|false|none||none| |status|string|false|none||none| |decision|string|false|none||none| |decisionNote|string|false|none||none| |decidedAt|string(date-time)|false|none||none| |createdAt|string(date-time)|false|none||none| |updatedAt|string(date-time)|false|none||none| |messagePreview|string|false|none||MESSAGE 举报的脱敏消息预览,不返回会话其他敏感内容| |reportedUser|[ReportResponseReportedUser](#schemareportresponsereporteduser)|false|none||none| |history|[[ReportResponseDecisionHistoryItem](#schemareportresponsedecisionhistoryitem)]|false|none||none| #### 枚举值 |属性|值| |---|---| |targetType|USER| |targetType|MESSAGE| |status|PENDING| |status|RESOLVED| |status|REJECTED| |decision|RESOLVED| |decision|REJECTED|

RiskEventResponse

```json { "eventId": 0, "ruleCode": "string", "sourceAction": "string", "severity": "string", "status": "string", "occurrenceCount": 0, "windowStartedAt": "2019-08-24T14:15:22Z", "windowEndedAt": "2019-08-24T14:15:22Z", "detectedAt": "2019-08-24T14:15:22Z", "version": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |eventId|integer(int64)|false|none||none| |ruleCode|string|false|none||none| |sourceAction|string|false|none||none| |severity|string|false|none||none| |status|string|false|none||none| |occurrenceCount|integer(int32)|false|none||none| |windowStartedAt|string(date-time)|false|none||none| |windowEndedAt|string(date-time)|false|none||none| |detectedAt|string(date-time)|false|none||none| |version|integer(int64)|false|none||none|

RiskSeverityCount

```json { "severity": "string", "count": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |severity|string|false|none||none| |count|integer(int64)|false|none||none|

RiskRuleCount

```json { "ruleCode": "string", "count": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |ruleCode|string|false|none||none| |count|integer(int64)|false|none||none|

RiskOverviewResponse

```json { "openCount": 0, "bySeverity": [ { "severity": "string", "count": 0 } ], "byRule": [ { "ruleCode": "string", "count": 0 } ], "lastDetectedAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |openCount|integer(int64)|false|none||none| |bySeverity|[[RiskSeverityCount](#schemariskseveritycount)]|false|none||none| |byRule|[[RiskRuleCount](#schemariskrulecount)]|false|none||none| |lastDetectedAt|string(date-time)¦null|false|none||none|

RiskTrendPoint

```json { "time": "2019-08-24T14:15:22Z", "count": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |time|string(date-time)|false|none||none| |count|integer(int64)|false|none||none|

ApiResponsePageResponseReportResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "id": 0, "targetType": "USER", "targetUserId": 0, "messageId": 0, "reportedUserId": 0, "category": "string", "reason": "string", "evidenceUrls": [ "string" ], "status": "PENDING", "decision": "RESOLVED", "decisionNote": "string", "decidedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "messagePreview": "string", "reportedUser": { "userId": 0, "nickname": "string", "role": "string" }, "history": [ { "id": null, "fromStatus": null, "toStatus": null, "actorUserId": null, "actorRole": null, "note": null, "createdAt": null } ] } ], "totalElements": 0, "page": 0, "size": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|object|false|none||none| |» items|[[ReportResponse](#schemareportresponse)]|false|none||none| |» totalElements|integer(int64)|false|none||none| |» page|integer(int32)|false|none||none| |» size|integer(int32)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

RiskTrendResponse

```json { "bucket": "string", "items": [ { "time": "2019-08-24T14:15:22Z", "count": 0 } ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |bucket|string|false|none||none| |items|[[RiskTrendPoint](#schemarisktrendpoint)]|false|none||none|

RiskDistributionRow

```json { "ruleCode": "string", "severity": "string", "count": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |ruleCode|string|false|none||none| |severity|string|false|none||none| |count|integer(int64)|false|none||none|

ApiResponsePageResponseBlockRelationResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "id": 0, "blockedUserId": 0, "nickname": "string", "createdAt": "2019-08-24T14:15:22Z" } ], "totalElements": 0, "page": 0, "size": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|object|false|none||none| |» items|[[BlockRelationResponse](#schemablockrelationresponse)]|false|none||none| |» totalElements|integer(int64)|false|none||none| |» page|integer(int32)|false|none||none| |» size|integer(int32)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

RiskDistributionResponse

```json { "items": [ { "ruleCode": "string", "severity": "string", "count": 0 } ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |items|[[RiskDistributionRow](#schemariskdistributionrow)]|false|none||none|

RiskRuleUpdateRequest

```json { "enabled": true, "thresholdCount": 0, "windowMinutes": 0, "severity": "string", "expectedVersion": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |enabled|boolean|true|none||none| |thresholdCount|integer(int32)|true|none||none| |windowMinutes|integer(int32)|true|none||none| |severity|string|true|none||none| |expectedVersion|integer(int64)|true|none||none|

RiskEventActionRequest

```json { "action": "string", "reasonCode": "string", "expectedVersion": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |action|string|true|none||none| |reasonCode|string|true|none||none| |expectedVersion|integer(int64)|true|none||none|

ApiResponseRiskOverviewResponse

```json { "code": 0, "message": "string", "data": { "openCount": 0, "bySeverity": [ { "severity": "string", "count": 0 } ], "byRule": [ { "ruleCode": "string", "count": 0 } ], "lastDetectedAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[RiskOverviewResponse](#schemariskoverviewresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseRiskTrendResponse

```json { "code": 0, "message": "string", "data": { "bucket": "string", "items": [ { "time": "2019-08-24T14:15:22Z", "count": 0 } ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[RiskTrendResponse](#schemarisktrendresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseRiskDistributionResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "ruleCode": "string", "severity": "string", "count": 0 } ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[RiskDistributionResponse](#schemariskdistributionresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponsePageResponseRiskEventResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "eventId": 0, "ruleCode": "string", "sourceAction": "string", "severity": "string", "status": "string", "occurrenceCount": 0, "windowStartedAt": "2019-08-24T14:15:22Z", "windowEndedAt": "2019-08-24T14:15:22Z", "detectedAt": "2019-08-24T14:15:22Z", "version": 0 } ], "totalElements": 0, "page": 0, "size": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|object|false|none||none| |» items|[[RiskEventResponse](#schemariskeventresponse)]|false|none||none| |» totalElements|integer(int64)|false|none||none| |» page|integer(int32)|false|none||none| |» size|integer(int32)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseRiskRuleResponse

```json { "code": 0, "message": "string", "data": { "ruleCode": "string", "sourceAction": "string", "thresholdCount": 0, "windowMinutes": 0, "severity": "string", "enabled": true, "version": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[RiskRuleResponse](#schemariskruleresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseRiskEventResponse

```json { "code": 0, "message": "string", "data": { "eventId": 0, "ruleCode": "string", "sourceAction": "string", "severity": "string", "status": "string", "occurrenceCount": 0, "windowStartedAt": "2019-08-24T14:15:22Z", "windowEndedAt": "2019-08-24T14:15:22Z", "detectedAt": "2019-08-24T14:15:22Z", "version": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[RiskEventResponse](#schemariskeventresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseListRiskRuleResponse

```json { "code": 0, "message": "string", "data": [ { "ruleCode": "string", "sourceAction": "string", "thresholdCount": 0, "windowMinutes": 0, "severity": "string", "enabled": true, "version": 0 } ], "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[[RiskRuleResponse](#schemariskruleresponse)]|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

TalentDiscoveryPreferenceResponse

```json { "enabled": true, "version": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |enabled|boolean|false|none||none| |version|integer(int64)|false|none||none| |createdAt|string(date-time)|false|none||none| |updatedAt|string(date-time)|false|none||none|

TalentDiscoveryPreferenceUpdateRequest

```json { "enabled": true, "expectedVersion": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |enabled|boolean|true|none||none| |expectedVersion|integer(int64)|false|none||none|

TalentDiscoveryCandidateResponse

```json { "candidateKey": "string", "candidateLabel": "string", "city": "string", "education": "string", "graduationYear": 0, "skills": [ "string" ], "fitBand": "HIGH", "summary": "string", "signalsAvailable": [ "PREFERENCE" ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |candidateKey|string|false|none||none| |candidateLabel|string|false|none||none| |city|string|false|none||none| |education|string|false|none||none| |graduationYear|integer(int32)|false|none||none| |skills|[string]|false|none||none| |fitBand|string|false|none||none| |summary|string|false|none||none| |signalsAvailable|[string]|false|none||none| #### 枚举值 |属性|值| |---|---| |fitBand|HIGH| |fitBand|MEDIUM| |fitBand|BASIC|

TalentDiscoveryPageResponse

```json { "mode": "PERSONALIZED", "items": [ { "candidateKey": "string", "candidateLabel": "string", "city": "string", "education": "string", "graduationYear": 0, "skills": [ "string" ], "fitBand": "HIGH", "summary": "string", "signalsAvailable": [ "PREFERENCE" ] } ], "total": 0, "page": 0, "size": 0, "totalPages": 0, "message": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |mode|string|false|none||none| |items|[[TalentDiscoveryCandidateResponse](#schematalentdiscoverycandidateresponse)]|false|none||none| |total|integer(int64)|false|none||none| |page|integer(int32)|false|none||none| |size|integer(int32)|false|none||none| |totalPages|integer(int32)|false|none||none| |message|string|false|none||none| #### 枚举值 |属性|值| |---|---| |mode|PERSONALIZED| |mode|UNAVAILABLE| |mode|NO_ELIGIBLE_CANDIDATE|

ApiResponseTalentDiscoveryPreferenceResponse

```json { "code": 0, "message": "string", "data": { "enabled": true, "version": 0, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[TalentDiscoveryPreferenceResponse](#schematalentdiscoverypreferenceresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseTalentDiscoveryPageResponse

```json { "code": 0, "message": "string", "data": { "mode": "PERSONALIZED", "items": [ { "candidateKey": "string", "candidateLabel": "string", "city": "string", "education": "string", "graduationYear": 0, "skills": [ "string" ], "fitBand": "HIGH", "summary": "string", "signalsAvailable": [ "PREFERENCE" ] } ], "total": 0, "page": 0, "size": 0, "totalPages": 0, "message": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[TalentDiscoveryPageResponse](#schematalentdiscoverypageresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CreateTalentInvitationRequest

```json { "candidateKey": "string", "message": "string", "idempotencyKey": "0c14c6a6-6f50-4d1e-b0c4-b46ff43ba6a1" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |candidateKey|string|true|none||none| |message|string|true|none||none| |idempotencyKey|string(uuid)|true|none||none|

TalentInvitationDecisionRequest

```json { "decision": "ACCEPT", "expectedVersion": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |decision|string|true|none||none| |expectedVersion|integer(int64)|true|none||none| #### 枚举值 |属性|值| |---|---| |decision|ACCEPT| |decision|REJECT|

CompanyTalentInvitationResponse

```json { "invitationId": 0, "jobId": 0, "jobTitle": "string", "candidateLabel": "string", "message": "string", "status": "PENDING", "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z", "conversationId": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |invitationId|integer(int64)|false|none||none| |jobId|integer(int64)|false|none||none| |jobTitle|string|false|none||none| |candidateLabel|string|false|none||none| |message|string|false|none||none| |status|string|false|none||none| |createdAt|string(date-time)|false|none||none| |expiresAt|string(date-time)|false|none||none| |decidedAt|string(date-time)|false|none||none| |conversationId|integer(int64)|false|none||none| #### 枚举值 |属性|值| |---|---| |status|PENDING| |status|ACCEPTED| |status|REJECTED| |status|EXPIRED|

StudentTalentInvitationResponse

```json { "invitationId": 0, "companyId": 0, "companyName": "string", "jobId": 0, "jobTitle": "string", "jobCity": "string", "message": "string", "status": "PENDING", "version": 0, "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z", "conversationId": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |invitationId|integer(int64)|false|none||none| |companyId|integer(int64)|false|none||none| |companyName|string|false|none||none| |jobId|integer(int64)|false|none||none| |jobTitle|string|false|none||none| |jobCity|string|false|none||none| |message|string|false|none||none| |status|string|false|none||none| |version|integer(int64)|false|none||none| |createdAt|string(date-time)|false|none||none| |expiresAt|string(date-time)|false|none||none| |decidedAt|string(date-time)|false|none||none| |conversationId|integer(int64)|false|none||none| #### 枚举值 |属性|值| |---|---| |status|PENDING| |status|ACCEPTED| |status|REJECTED| |status|EXPIRED|

TalentInvitationPageResponseCompanyTalentInvitationResponse

```json { "items": [ { "invitationId": 0, "jobId": 0, "jobTitle": "string", "candidateLabel": "string", "message": "string", "status": "PENDING", "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z", "conversationId": 0 } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |items|[[CompanyTalentInvitationResponse](#schemacompanytalentinvitationresponse)]|false|none||none| |total|integer(int64)|false|none||none| |page|integer(int32)|false|none||none| |size|integer(int32)|false|none||none| |totalPages|integer(int32)|false|none||none|

TalentInvitationPageResponseStudentTalentInvitationResponse

```json { "items": [ { "invitationId": 0, "companyId": 0, "companyName": "string", "jobId": 0, "jobTitle": "string", "jobCity": "string", "message": "string", "status": "PENDING", "version": 0, "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z", "conversationId": 0 } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |items|[[StudentTalentInvitationResponse](#schemastudenttalentinvitationresponse)]|false|none||none| |total|integer(int64)|false|none||none| |page|integer(int32)|false|none||none| |size|integer(int32)|false|none||none| |totalPages|integer(int32)|false|none||none|

ApiResponseCompanyTalentInvitationResponse

```json { "code": 0, "message": "string", "data": { "invitationId": 0, "jobId": 0, "jobTitle": "string", "candidateLabel": "string", "message": "string", "status": "PENDING", "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z", "conversationId": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[CompanyTalentInvitationResponse](#schemacompanytalentinvitationresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseStudentTalentInvitationResponse

```json { "code": 0, "message": "string", "data": { "invitationId": 0, "companyId": 0, "companyName": "string", "jobId": 0, "jobTitle": "string", "jobCity": "string", "message": "string", "status": "PENDING", "version": 0, "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z", "conversationId": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[StudentTalentInvitationResponse](#schemastudenttalentinvitationresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseCompanyTalentInvitationPageResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "invitationId": 0, "jobId": 0, "jobTitle": "string", "candidateLabel": "string", "message": "string", "status": "PENDING", "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z", "conversationId": 0 } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[TalentInvitationPageResponseCompanyTalentInvitationResponse](#schematalentinvitationpageresponsecompanytalentinvitationresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseStudentTalentInvitationPageResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "invitationId": 0, "companyId": 0, "companyName": "string", "jobId": 0, "jobTitle": "string", "jobCity": "string", "message": "string", "status": "PENDING", "version": 0, "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z", "conversationId": 0 } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[TalentInvitationPageResponseStudentTalentInvitationResponse](#schematalentinvitationpageresponsestudenttalentinvitationresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

FairnessResponseDistribution

```json { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |sampleSize|integer|false|none||none| |mean|number|false|none||none| |median|number|false|none||none| |p10|number|false|none||none| |p25|number|false|none||none| |p75|number|false|none||none| |p90|number|false|none||none| |min|number|false|none||none| |max|number|false|none||none| |standardDeviation|number|false|none||none| |buckets|object|false|none||none| |» **additionalProperties**|integer|false|none||none| |concentrationRate|number|false|none||none| |riskLevel|string|false|none||none| |availability|string|false|none||none| |reason|string|false|none||none|

FairnessResponseDimensionMetric

```json { "dimension": "string", "populationSize": 0, "rowCount": 0, "missingRowCount": 0, "validSampleSize": 0, "confidence": "string", "missingRowRate": 0, "nullScoreRate": 0, "validCoverage": 0, "statusCounts": { "property1": 0, "property2": 0 }, "versionCounts": { "property1": 0, "property2": 0 }, "inconsistentRecordCount": 0, "unknownStatusCount": 0, "outOfRangeScoreCount": 0, "unknownRulesVersionCount": 0, "distribution": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" }, "distributionsByRulesVersion": { "property1": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" }, "property2": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" } }, "availability": "string", "reason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |dimension|string|false|none||none| |populationSize|integer|false|none||none| |rowCount|integer|false|none||none| |missingRowCount|integer|false|none||none| |validSampleSize|integer|false|none||none| |confidence|string|false|none||none| |missingRowRate|number|false|none||none| |nullScoreRate|number|false|none||none| |validCoverage|number|false|none||none| |statusCounts|object|false|none||none| |» **additionalProperties**|integer|false|none||none| |versionCounts|object|false|none||none| |» **additionalProperties**|integer|false|none||none| |inconsistentRecordCount|integer|false|none||none| |unknownStatusCount|integer|false|none||none| |outOfRangeScoreCount|integer|false|none||none| |unknownRulesVersionCount|integer|false|none||none| |distribution|[FairnessResponseDistribution](#schemafairnessresponsedistribution)|false|none||none| |distributionsByRulesVersion|object|false|none||none| |» **additionalProperties**|[FairnessResponseDistribution](#schemafairnessresponsedistribution)|false|none||none| |availability|string|false|none||none| |reason|string|false|none||none|

FairnessResponseOverview

```json { "basis": "string", "scope": "string", "period": "string", "capturedAt": "2019-08-24T14:15:22Z", "populationSize": 0, "computableSnapshotRatio": 0, "confidence": "string", "riskLevel": "string", "versionCounts": { "property1": 0, "property2": 0 }, "mixedVersionCount": 0, "unknownVersionCount": 0, "distribution": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" }, "distributionsByRulesVersion": { "property1": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" }, "property2": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" } }, "coherentVersionSubset": [ "string" ], "availability": "string", "reason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |basis|string|false|none||none| |scope|string|false|none||none| |period|string|false|none||none| |capturedAt|string(date-time)|false|none||none| |populationSize|integer|false|none||none| |computableSnapshotRatio|number|false|none||none| |confidence|string|false|none||none| |riskLevel|string|false|none||none| |versionCounts|object|false|none||none| |» **additionalProperties**|integer|false|none||none| |mixedVersionCount|integer|false|none||none| |unknownVersionCount|integer|false|none||none| |distribution|[FairnessResponseDistribution](#schemafairnessresponsedistribution)|false|none||none| |distributionsByRulesVersion|object|false|none||none| |» **additionalProperties**|[FairnessResponseDistribution](#schemafairnessresponsedistribution)|false|none||none| |coherentVersionSubset|[string]|false|none||none| |availability|string|false|none||none| |reason|string|false|none||none|

FairnessResponseDimensions

```json { "basis": "string", "scope": "string", "period": "string", "capturedAt": "2019-08-24T14:15:22Z", "dimensions": [ { "dimension": "string", "populationSize": 0, "rowCount": 0, "missingRowCount": 0, "validSampleSize": 0, "confidence": "string", "missingRowRate": 0, "nullScoreRate": 0, "validCoverage": 0, "statusCounts": { "property1": 0, "property2": 0 }, "versionCounts": { "property1": 0, "property2": 0 }, "inconsistentRecordCount": 0, "unknownStatusCount": 0, "outOfRangeScoreCount": 0, "unknownRulesVersionCount": 0, "distribution": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" }, "distributionsByRulesVersion": { "property1": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" }, "property2": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" } }, "availability": "string", "reason": "string" } ], "availability": "string", "reason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |basis|string|false|none||none| |scope|string|false|none||none| |period|string|false|none||none| |capturedAt|string(date-time)|false|none||none| |dimensions|[[FairnessResponseDimensionMetric](#schemafairnessresponsedimensionmetric)]|false|none||none| |availability|string|false|none||none| |reason|string|false|none||none|

FairnessResponseUnavailable

```json { "availability": "UNAVAILABLE", "reason": "string", "capturedAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |availability|string|false|none||none| |reason|string|false|none||none| |capturedAt|string(date-time)|false|none||none| #### 枚举值 |属性|值| |---|---| |availability|UNAVAILABLE|

FairnessResponseAppeals

```json { "basis": "string", "from": "2019-08-24", "to": "2019-08-24", "capturedAt": "2019-08-24T14:15:22Z", "appealCount": 0, "sampleSize": 0, "statusCounts": { "property1": 0, "property2": 0 }, "statusEventCounts": { "property1": 0, "property2": 0 }, "statusCandidateCounts": { "property1": 0, "property2": 0 }, "confidence": "string", "approvedEverCount": 0, "approvalRate": 0, "rollbackExecutionRate": 0, "duplicateAppealCount": 0, "duplicateAppealRate": 0, "comparableRollbackCount": 0, "comparableRollbackCandidateCount": 0, "changedCount": 0, "changedCandidateCount": 0, "actualScoreChangeRate": 0, "meanDelta": 0, "meanAbsoluteDelta": 0, "duplicateRollbackHistoryCount": 0, "invalidScoreRollbackCount": 0, "ruleVersionChangedRollbackCount": 0, "reasonCounts": { "property1": 0, "property2": 0 }, "availability": "string", "reason": "string", "exposureAppealRateAvailability": "string", "exposureAppealRateReason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |basis|string|false|none||none| |from|string(date)|false|none||none| |to|string(date)|false|none||none| |capturedAt|string(date-time)|false|none||none| |appealCount|integer|false|none||申诉事件数;与按独立候选人数统计的其他字段区分| |sampleSize|integer|false|none||none| |statusCounts|object|false|none||none| |» **additionalProperties**|integer|false|none||none| |statusEventCounts|object|false|none||none| |» **additionalProperties**|integer|false|none||none| |statusCandidateCounts|object|false|none||none| |» **additionalProperties**|integer|false|none||none| |confidence|string|false|none||none| |approvedEverCount|integer|false|none||none| |approvalRate|number|false|none||none| |rollbackExecutionRate|number|false|none||none| |duplicateAppealCount|integer|false|none||none| |duplicateAppealRate|number|false|none||none| |comparableRollbackCount|integer|false|none||可比 ROLLBACK 历史行数;仅唯一历史且分数/规则版本合法的申诉| |comparableRollbackCandidateCount|integer|false|none||可比回滚历史对应的独立候选人数;同一候选人的多份合法申诉只计一人| |changedCount|integer|false|none||none| |changedCandidateCount|integer|false|none||none| |actualScoreChangeRate|number|false|none||none| |meanDelta|number|false|none||none| |meanAbsoluteDelta|number|false|none||none| |duplicateRollbackHistoryCount|integer|false|none||none| |invalidScoreRollbackCount|integer|false|none||none| |ruleVersionChangedRollbackCount|integer|false|none||none| |reasonCounts|object|false|none||none| |» **additionalProperties**|integer|false|none||none| |availability|string|false|none||none| |reason|string|false|none||none| |exposureAppealRateAvailability|string|false|none||none| |exposureAppealRateReason|string|false|none||none|

ApiResponseFairnessResponseOverview

```json { "code": 0, "message": "string", "data": { "basis": "string", "scope": "string", "period": "string", "capturedAt": "2019-08-24T14:15:22Z", "populationSize": 0, "computableSnapshotRatio": 0, "confidence": "string", "riskLevel": "string", "versionCounts": { "property1": 0, "property2": 0 }, "mixedVersionCount": 0, "unknownVersionCount": 0, "distribution": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" }, "distributionsByRulesVersion": { "property1": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" }, "property2": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": { "property1": 0, "property2": 0 }, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" } }, "coherentVersionSubset": [ "string" ], "availability": "string", "reason": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[FairnessResponseOverview](#schemafairnessresponseoverview)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseFairnessResponseDimensions

```json { "code": 0, "message": "string", "data": { "basis": "string", "scope": "string", "period": "string", "capturedAt": "2019-08-24T14:15:22Z", "dimensions": [ { "dimension": "string", "populationSize": 0, "rowCount": 0, "missingRowCount": 0, "validSampleSize": 0, "confidence": "string", "missingRowRate": 0, "nullScoreRate": 0, "validCoverage": 0, "statusCounts": { "property1": 0, "property2": 0 }, "versionCounts": { "property1": 0, "property2": 0 }, "inconsistentRecordCount": 0, "unknownStatusCount": 0, "outOfRangeScoreCount": 0, "unknownRulesVersionCount": 0, "distribution": { "sampleSize": 0, "mean": 0, "median": 0, "p10": 0, "p25": 0, "p75": 0, "p90": 0, "min": 0, "max": 0, "standardDeviation": 0, "buckets": {}, "concentrationRate": 0, "riskLevel": "string", "availability": "string", "reason": "string" }, "distributionsByRulesVersion": { "property1": { "sampleSize": null, "mean": null, "median": null, "p10": null, "p25": null, "p75": null, "p90": null, "min": null, "max": null, "standardDeviation": null, "buckets": null, "concentrationRate": null, "riskLevel": null, "availability": null, "reason": null }, "property2": { "sampleSize": null, "mean": null, "median": null, "p10": null, "p25": null, "p75": null, "p90": null, "min": null, "max": null, "standardDeviation": null, "buckets": null, "concentrationRate": null, "riskLevel": null, "availability": null, "reason": null } }, "availability": "string", "reason": "string" } ], "availability": "string", "reason": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[FairnessResponseDimensions](#schemafairnessresponsedimensions)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseFairnessResponseUnavailable

```json { "code": 0, "message": "string", "data": { "availability": "UNAVAILABLE", "reason": "string", "capturedAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[FairnessResponseUnavailable](#schemafairnessresponseunavailable)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseFairnessResponseAppeals

```json { "code": 0, "message": "string", "data": { "basis": "string", "from": "2019-08-24", "to": "2019-08-24", "capturedAt": "2019-08-24T14:15:22Z", "appealCount": 0, "sampleSize": 0, "statusCounts": { "property1": 0, "property2": 0 }, "statusEventCounts": { "property1": 0, "property2": 0 }, "statusCandidateCounts": { "property1": 0, "property2": 0 }, "confidence": "string", "approvedEverCount": 0, "approvalRate": 0, "rollbackExecutionRate": 0, "duplicateAppealCount": 0, "duplicateAppealRate": 0, "comparableRollbackCount": 0, "comparableRollbackCandidateCount": 0, "changedCount": 0, "changedCandidateCount": 0, "actualScoreChangeRate": 0, "meanDelta": 0, "meanAbsoluteDelta": 0, "duplicateRollbackHistoryCount": 0, "invalidScoreRollbackCount": 0, "ruleVersionChangedRollbackCount": 0, "reasonCounts": { "property1": 0, "property2": 0 }, "availability": "string", "reason": "string", "exposureAppealRateAvailability": "string", "exposureAppealRateReason": "string" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[FairnessResponseAppeals](#schemafairnessresponseappeals)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

StudentProfileResponse

```json { "id": 0, "userId": 0, "realName": "string", "bio": "string", "location": "string", "education": "string", "school": "string", "graduationYear": 0, "resumeUrl": "string", "skills": "string", "createdAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||none| |userId|integer(int64)|false|none||none| |realName|string|false|none||none| |bio|string|false|none||none| |location|string|false|none||none| |education|string|false|none||none| |school|string|false|none||none| |graduationYear|integer(int32)|false|none||none| |resumeUrl|string|false|none||none| |skills|string|false|none||none| |createdAt|string(date-time)|false|none||none|

CandidateScoringCoverage

```json { "computableDimensions": 0, "totalDimensions": 0, "includedDimensions": [ "string" ], "excludedDimensions": [ { "dimension": "string", "status": "string", "reason": "string" } ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |computableDimensions|integer(int32)|false|none||none| |totalDimensions|integer(int32)|false|none||none| |includedDimensions|[string]|false|none||none| |excludedDimensions|[[CandidateScoringExcludedDimension](#schemacandidatescoringexcludeddimension)]|false|none||none|

CreateDataExportRequest

```json { "format": "string", "idempotencyKey": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |format|string|false|none||none| |idempotencyKey|string|false|none||none|

CandidateScoringExcludedDimension

```json { "dimension": "string", "status": "string", "reason": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |dimension|string|false|none||none| |status|string|false|none||none| |reason|string|false|none||none|

CandidateScoringRuleContribution

```json { "ruleCode": "string", "outcome": "APPLIED", "contribution": 0, "maxContribution": 0, "label": "string", "observation": "string", "explanation": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |ruleCode|string|false|none||none| |outcome|string|false|none||none| |contribution|number¦null|false|none||none| |maxContribution|number¦null|false|none||none| |label|string|false|none||none| |observation|string|false|none||none| |explanation|string|false|none||none| #### 枚举值 |属性|值| |---|---| |outcome|APPLIED| |outcome|NOT_APPLIED| |outcome|MISSING| |outcome|EXPIRED| |outcome|UNAVAILABLE|

ApiResponseStudentProfileResponse

```json { "code": 0, "message": "string", "data": { "id": 0, "userId": 0, "realName": "string", "bio": "string", "location": "string", "education": "string", "school": "string", "graduationYear": 0, "resumeUrl": "string", "skills": "string", "createdAt": "2019-08-24T14:15:22Z" }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[StudentProfileResponse](#schemastudentprofileresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CandidateScoringValidity

```json { "completedAt": "2019-08-24T14:15:22Z", "validUntil": "2019-08-24T14:15:22Z", "expired": true } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |completedAt|string(date-time)|false|none||none| |validUntil|string(date-time)|false|none||none| |expired|boolean|false|none||none|

ApiResponsePageResponseDataExportTaskResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "taskId": 0, "status": "string", "format": "string", "requestedAt": "2019-08-24T14:15:22Z", "startedAt": "2019-08-24T14:15:22Z", "completedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "sizeBytes": 0, "downloadAvailable": true, "errorCode": "string" } ], "totalElements": 0, "page": 0, "size": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|object|false|none||none| |» items|[[DataExportTaskResponse](#schemadataexporttaskresponse)]|false|none||none| |» totalElements|integer(int64)|false|none||none| |» page|integer(int32)|false|none||none| |» size|integer(int32)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

MessageResponse

```json { "id": 0, "conversationId": 0, "senderUserId": 0, "senderScope": "string", "content": "string", "status": "SENT", "recalledAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "isRead": true } ``` 脱敏消息响应;TALENT_INVITATION 使用 senderScope 而非 senderUserId ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||none| |conversationId|integer(int64)|false|none||none| |senderUserId|integer(int64)|false|none||none| |senderScope|string|false|none||none| |content|string|false|none||none| |status|string|false|none||none| |recalledAt|string(date-time)|false|none||none| |createdAt|string(date-time)|false|none||none| |isRead|boolean|false|none||none| #### 枚举值 |属性|值| |---|---| |status|SENT| |status|RECALLED|

MessagePageResponse

```json { "items": [ { "id": 0, "conversationId": 0, "senderUserId": 0, "senderScope": "string", "content": "string", "status": "SENT", "recalledAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "isRead": true } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 } ``` 脱敏消息分页响应 ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |items|[[MessageResponse](#schemamessageresponse)]|false|none||[脱敏消息响应;TALENT_INVITATION 使用 senderScope 而非 senderUserId]| |total|integer(int64)|false|none||none| |page|integer(int32)|false|none||none| |size|integer(int32)|false|none||none| |totalPages|integer(int32)|false|none||none|

ApiResponseMessagePageResponse

```json { "code": 0, "message": "string", "data": { "items": [ { "id": 0, "conversationId": 0, "senderUserId": 0, "senderScope": "string", "content": "string", "status": "SENT", "recalledAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "isRead": true } ], "total": 0, "page": 0, "size": 0, "totalPages": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[MessagePageResponse](#schemamessagepageresponse)|false|none||脱敏消息分页响应| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

ApiResponseMessageResponse

```json { "code": 0, "message": "string", "data": { "id": 0, "conversationId": 0, "senderUserId": 0, "senderScope": "string", "content": "string", "status": "SENT", "recalledAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "isRead": true }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[MessageResponse](#schemamessageresponse)|false|none||脱敏消息响应;TALENT_INVITATION 使用 senderScope 而非 senderUserId| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

RefreshTokenRequest

```json { "refreshToken": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |refreshToken|string|true|none||none|

TokenPairResponse

```json { "accessToken": "string", "refreshToken": "string", "expiresIn": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |accessToken|string|false|none||none| |refreshToken|string|false|none||none| |expiresIn|integer(int64)|false|none||none|

ApiResponseTokenPairResponse

```json { "code": 0, "message": "string", "data": { "accessToken": "string", "refreshToken": "string", "expiresIn": 0 } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer|false|none||none| |message|string|false|none||none| |data|[TokenPairResponse](#schematokenpairresponse)|false|none||none|

PasswordSetRequest

```json { "smsCode": "string", "newPassword": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |smsCode|string|true|none||none| |newPassword|string|true|none||none|

PasswordResetRequest

```json { "phone": "string", "smsCode": "string", "newPassword": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |phone|string|true|none||none| |smsCode|string|true|none||none| |newPassword|string|true|none||none|

PasswordLoginRequest

```json { "phone": "string", "password": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |phone|string|true|none||none| |password|string|true|none||none|

PasswordChangeRequest

```json { "currentPassword": "string", "newPassword": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |currentPassword|string|true|none||none| |newPassword|string|true|none||none|

PasswordOperationResponse

```json { "passwordConfigured": true, "reauthenticationRequired": true } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |passwordConfigured|boolean|false|none||none| |reauthenticationRequired|boolean|false|none||none|

ApiResponsePasswordOperationResponse

```json { "code": 0, "message": "string", "data": { "passwordConfigured": true, "reauthenticationRequired": true }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[PasswordOperationResponse](#schemapasswordoperationresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CompanyDetails

```json { "name": "string", "logoUrl": "string", "description": "string", "industry": "string", "website": "string", "address": "string" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |name|string|true|none||none| |logoUrl|string|false|none||none| |description|string|false|none||none| |industry|string|false|none||none| |website|string|false|none||none| |address|string|false|none||none|

CompanyRegistrationRequest

```json { "phone": "string", "code": "string", "password": "stringstring", "company": { "name": "string", "logoUrl": "string", "description": "string", "industry": "string", "website": "string", "address": "string" } } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |phone|string|true|none||none| |code|string|true|none||none| |password|string|true|none||none| |company|[CompanyDetails](#schemacompanydetails)|true|none||none|

ApiResponseCompanyRegistrationResponse

```json { "code": 0, "message": "string", "data": { "userId": 0, "companyId": 0, "role": "string", "onboardingStatus": "string", "accessToken": "string", "refreshToken": "string", "expiresIn": 0 }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CompanyRegistrationResponse](#schemacompanyregistrationresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CompanyRegistrationResponse

```json { "userId": 0, "companyId": 0, "role": "string", "onboardingStatus": "string", "accessToken": "string", "refreshToken": "string", "expiresIn": 0 } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |userId|integer(int64)|false|none||none| |companyId|integer(int64)|false|none||none| |role|string|false|none||none| |onboardingStatus|string|false|none||none| |accessToken|string|false|none||none| |refreshToken|string|false|none||none| |expiresIn|integer(int64)|false|none||none|

ApiResponseCompanyOnboardingResponse

```json { "code": 0, "message": "string", "data": { "company": { "id": 0, "name": "string", "logoUrl": "string", "description": "string", "industry": "string", "website": "string", "address": "string", "verified": true }, "onboardingStatus": "string", "latestVerification": { "id": 0, "status": "string", "submittedAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z" }, "missingFields": [ "string" ], "allowedActions": [ "string" ] }, "requestId": "string", "timestamp": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |code|integer(int32)|false|none||none| |message|string|false|none||none| |data|[CompanyOnboardingResponse](#schemacompanyonboardingresponse)|false|none||none| |requestId|string|false|none||none| |timestamp|string(date-time)|false|none||none|

CompanyOnboardingResponse

```json { "company": { "id": 0, "name": "string", "logoUrl": "string", "description": "string", "industry": "string", "website": "string", "address": "string", "verified": true }, "onboardingStatus": "string", "latestVerification": { "id": 0, "status": "string", "submittedAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z" }, "missingFields": [ "string" ], "allowedActions": [ "string" ] } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |company|[CompanySummary](#schemacompanysummary)|false|none||none| |onboardingStatus|string|false|none||none| |latestVerification|[VerificationSummary](#schemaverificationsummary)|false|none||none| |missingFields|[string]|false|none||none| |allowedActions|[string]|false|none||none|

CompanySummary

```json { "id": 0, "name": "string", "logoUrl": "string", "description": "string", "industry": "string", "website": "string", "address": "string", "verified": true } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||none| |name|string|false|none||none| |logoUrl|string|false|none||none| |description|string|false|none||none| |industry|string|false|none||none| |website|string|false|none||none| |address|string|false|none||none| |verified|boolean|false|none||none|

VerificationSummary

```json { "id": 0, "status": "string", "submittedAt": "2019-08-24T14:15:22Z", "decidedAt": "2019-08-24T14:15:22Z" } ``` ### 属性 |名称|类型|必选|约束|中文名|说明| |---|---|---|---|---|---| |id|integer(int64)|false|none||none| |status|string|false|none||none| |submittedAt|string(date-time)|false|none||none| |decidedAt|string(date-time)|false|none||none|