API Reference
API Reference

/review-cycles/:reviewCycleId/tasks/:id/forms/:reviewType

Returns a review of a review task together with its questionnaire. Required scope: r_reviews.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
🚧

This endpoint uses the r_reviews scope, 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 (the request is then evaluated with that member's permissions). An account token without member_id gets 403 Account tokens need a member_id for this operation. member_id is ignored for user tokens.

The member must have the View review cycles permission, be the reviewee, be the task's reviewing manager, or be a manager higher in the reviewee's reporting line.

Returns the review of the given type within the task (with its status and template ids) together with its questionnaire (sections and questions). Any answers saved so far are merged into the questions. Task ids (:id) and the available review types are discovered via GET /review-cycles/:reviewCycleId/tasks; each review there carries this endpoint as its update_form_url. Use PUT on the same URL to customize the form.

📘

When a task has several reviews of the same type (for example multiple peer reviews), the first one is returned.

Path parameters

ParameterTypeDescription
reviewCycleIdstringReview cycle SPI key
idstringReview task (aggregate) SPI key
reviewTypestringOne of: self, manager, peer, upwards

Results

{
  "review": {
    "id": "4d6",
    "type": "manager",
    "status": "draft",
    "master_template_id": "3001",
    "follower_template_id": null,
    "update_form_url": "/spi/v3/review-cycles/4d6/tasks/4d4/forms/manager",
    "state": "not_started",
    "submit_deadline": "2024-11-25T00:00:00.000Z",
    "share_deadline": "2024-11-27T00:00:00.000Z",
    "write_url": "/spi/v3/review-cycles/4d6/reviews/4d6"
  },
  "questionnaire": {
    "template_id": "7",
    "overall_rating": null,
    "sections": [
      {
        "id": "25012962-fd35-5082-aaed-dafc65bb3c29",
        "name": "<p>Job Performance</p>",
        "rating": null,
        "questions": [
          {
            "id": "25012920-c56d-5b70-b968-834e49ed95d4",
            "body": "<p>Are there any areas where the employee's performance could improve?</p>",
            "position": 0,
            "section_id": "25012962-fd35-5082-aaed-dafc65bb3c29",
            "type": "paragraph"
          },
          {
            "id": "2501297b-1920-5e4c-b21b-fc3caf56b265",
            "body": "<p>Section Rating</p>",
            "position": 1,
            "section_id": "25012962-fd35-5082-aaed-dafc65bb3c29",
            "type": "numeric_rated",
            "metadata": {
              "mandatory": true,
              "semantic_type": "section_rating",
              "rating_options": {}
            }
          }
        ]
      },
      {
        "id": "25012902-3adc-4a89-88a0-62a105b06fdd",
        "name": "<p>Overall Rating</p>",
        "rating": null,
        "questions": [
          {
            "id": "2501297b-1920-5e4c-b21b-fc3caf56b335",
            "body": "<p>Overall Rating</p>",
            "position": 0,
            "section_id": "25012902-3adc-4a89-88a0-62a105b06fdd",
            "type": "custom_rated",
            "metadata": {
              "mandatory": true,
              "semantic_type": "overall_rating",
              "rating_options": {
                "1": "Meets expectations",
                "2": "Exceeds expectations"
              }
            }
          }
        ]
      }
    ]
  }
}
keytypedescription
reviewobjectThe review
review.idstringReview SPI key
review.typestringOne of: self, manager, peer, upwards
review.statusstringForm status: ready once the review's form has been finalized, otherwise draft
review.master_template_idstring | nullId of the master template configured for this review type in the cycle
review.follower_template_idstring | nullId of the customized (follower) template for this review; null if the form has not been customized
review.update_form_urlstringRelative URL of this review's form endpoint (GET to read, PUT to customize)
review.statestringAnswering state. One of: not_started, draft, submitted
review.submit_deadlinestring | nullISO 8601 deadline for submitting the review
review.share_deadlinestring | nullISO 8601 deadline for sharing the review
review.write_urlstring | nullRelative URL to submit answers. Set only when the caller is the reviewer and the review is not yet submitted
questionnaireobjectThe review's questionnaire, merged with any answers saved so far
questionnaire.template_idstring | nullId of the template the questionnaire was built from
questionnaire.overall_ratingnumber | nullOverall rating, when saved
questionnaire.sectionsarrayOrdered list of sections
questionnaire.sections[].idstringSection id
questionnaire.sections[].namestringSection title (may contain HTML)
questionnaire.sections[].ratingnumber | nullSection rating, when saved
questionnaire.sections[].questionsarrayOrdered list of questions
questionnaire.sections[].questions[].idstringQuestion id (UUID)
questionnaire.sections[].questions[].bodystringQuestion text (may contain HTML)
questionnaire.sections[].questions[].positionintegerPosition within the section
questionnaire.sections[].questions[].section_idstringId of the parent section
questionnaire.sections[].questions[].typestringQuestion type in snake_case. One of: paragraph, paragraph_star_rated, paragraph_numeric_rated, paragraph_custom_rated, single_choice, multiple_choice, star_rated, numeric_rated, custom_rated
questionnaire.sections[].questions[].answerstring | nullFree-text answer. Omitted when nothing has been saved for the question
questionnaire.sections[].questions[].choicesarraySelected choices. Choice keys are replaced by their labels when the question has answer_options; for rating questions this holds the selected rating value. Omitted when empty
questionnaire.sections[].questions[].metadataobjectOptional question metadata: mandatory (boolean), semantic_type (section_rating or overall_rating), rating_options (map of rating value to label), answer_options.choices (map of choice key to label)

Error responses

Error bodies come in three shapes. 400 validation errors are a JSON object keyed by the invalid parameter, e.g. {"limit": {"code": "number.max", "message": "\"limit\" must be less than or equal to 200"}}. 401 and 403 are plain-text bodies, e.g. Required scopes missing: ["r_reviews"], or Forbidden when the member lacks permission. 404 is JSON, e.g. {"message": "Review cycle not found"}.

StatusCondition
400reviewCycleId or id is not a valid SPI key, or reviewType is not one of self, manager, peer, upwards
401Missing or invalid token
403Missing r_reviews scope, account token without member_id, or the member is not allowed to view the review's form
404The task does not exist or does not belong to the cycle, or it has no review of the requested type
Path Params
string
required

Review cycle SPI key (hexadecimal)

string
required

Review task (aggregate) SPI key, as returned by the tasks list

string
enum
required

Review type

Allowed:
Query Params
string

Required when using an account token: the member (SPI key, from GET /members) to act as. The request is evaluated with that member's permissions; without it the request gets 403. Ignored for user tokens.

Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
Credentials
Header
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
text/plain