Signs a shared performance review as the reviewee or the manager. Required scope: w_reviews.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
This endpoint uses thew_reviewsscope, which must be enabled through the Integrations section found within the Settings menu.
Requires a user token, or an account token together with the member_id query parameter, whose employee is either the reviewee or the aggregate's manager. An account token without member_id gets 403 Account tokens need a member_id for this operation, and no other role can sign, including admins.
Records the caller's signature on the review aggregate. If the caller is the reviewee, the employee signature is recorded. If the caller is the manager, the manager signature is recorded. The aggregate moves to signed once both have signed. There is no request body.
Preconditions:
- The cycle has signing enabled (it has a sign deadline) and is not
archived. - The aggregate has been shared.
- The aggregate is not fully signed, and the caller has not already signed it.
- The sign deadline has not passed.
- If the cycle requires an employee meeting, a meeting has been scheduled.
Results
Returns 200 with the updated employee aggregate. The shape is the same as GET /review-cycles/:reviewCycleId/employees/:employeeId, and reviews contains only the reviews visible to the caller.
{
"id": "4d3",
"status": "ready",
"state": "shared",
"review_cycle": {
"id": "4d3",
"name": "Annual Review 2024",
"state": "active",
"customization_start_date": "2024-10-01T00:00:00.000Z",
"customization_end_date": "2024-10-15T00:00:00.000Z"
},
"reviewee": {
"id": "4d4",
"name": "Jane Doe"
},
"manager": {
"id": "4d3",
"name": "John Smith"
},
"reviews": [
{
"review": {
"id": "4d4",
"type": "manager",
"status": "ready",
"master_template_id": "1001",
"follower_template_id": null,
"update_form_url": "/spi/v3/review-cycles/4d3/tasks/4d3/forms/manager",
"state": "submitted",
"submit_deadline": "2024-11-20T00:00:00.000Z",
"share_deadline": "2024-11-25T00:00:00.000Z",
"write_url": null
},
"questionnaire": {
"template_id": "2",
"overall_rating": 4,
"sections": [
{
"id": "2501299e-4332-59e9-8979-93bdc5aceaa9",
"name": "<p>Goals</p>",
"rating": 4,
"questions": [
{
"id": "2501297d-e22b-5f57-bbeb-21490ee0c212",
"body": "<p>What progress has the employee made toward their goals?</p>",
"position": 0,
"section_id": "2501299e-4332-59e9-8979-93bdc5aceaa9",
"answer": "Delivered three major projects on time.",
"type": "paragraph"
}
]
}
]
}
}
]
}See PUT /review-cycles/:reviewCycleId/tasks/:id/share for the field reference.
Error responses
All business-rule errors return {"message": "...", "code": "..."}.
| Status | Condition |
|---|---|
| 400 | review_aggregate.cannot_be_signed: the cycle does not have signing enabled, the aggregate is not shared, or an employee meeting is required but none is scheduled |
| 400 | review_aggregate.already_signed: the aggregate is fully signed, or the caller (as manager or as reviewee) has already signed |
| 400 | review_aggregate.sign_in_archived_review_cycle: the cycle is archived |
| 400 | review_aggregate.sign_in_inactive_review_cycle: the cycle is not active and the sign deadline has passed |
| 400 | review_aggregate.sign_after_sign_deadline: the sign deadline has passed |
| 401 | Missing or invalid token |
| 403 | Missing w_reviews scope, account token without member_id, or the caller is neither the reviewee nor the manager |
| 404 | {"message": "Review aggregate not found"}: the task does not exist, is deleted, or belongs to a different review cycle |
