Sarrus
Sarrus

Reputation: 631

How to set review for revision using Gerrit REST API

I'm trying to setup Teamcity building and verifying patchsets from Gerrit. The last step should set Verified to -1 if build failed. I'm playing around with Gerrit REST API and I think I found a proper command:

https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#set-review

The documentation says:

As response a ReviewInfo entity is returned that describes the applied labels.

My request looks like this:

POST <gerrit-url>/a/changes/I696f00f4968fcb35fa614ce6325499aa15367150/revisions/current/review

{
    "message": "Build failed",
    "labels": {
        "Verified": -1
   }
}

As a response I get full revision info:

{
  "id": "dev_test~master~<change-id>",
  "project": "dev_test",
  "branch": "master",
  "hashtags": [],
  "change_id": "<change-id>",
  "subject": "a test",
  "status": "NEW",
  "created": "2017-04-03 07:53:19.000000000",
  "updated": "2017-04-04 08:47:34.000000000",
  "submit_type": "MERGE_IF_NECESSARY",
  "mergeable": true,
  "insertions": 133,
  "deletions": 7,
  "unresolved_comment_count": 0,
  "_number": 381,
  "owner": {
    "_account_id": 4,
    "name": "<my-name>",
    "email": "<my-email>",
    "username": "<my-username>",
  },
  "labels": {
    "Code-Review": {
      "all": [
        {
          "value": 1,
          "date": "2017-04-04 08:47:34.000000000",
          "permitted_voting_range": {
            "min": -2,
            "max": 2
          },
          "_account_id": 4,
          "name": "<my-name>",
          "email": "<my-email>",
          "username": "<my-username>"
        }
      ],
      "values": {
        "-2": "This shall not be merged",
        "-1": "I would prefer this is not merged as is",
        " 0": "No score",
        "+1": "Looks good to me, but someone else must approve",
        "+2": "Looks good to me, approved"
      },
      "default_value": 0
    },
    "Verified": {
      "all": [
        {
          "value": 0,
          "permitted_voting_range": {
            "min": -1,
            "max": 1
          },
          "_account_id": 4,
          "name": "<my-name>",
          "email": "<my-email>",
          "username": "<my-username>"
        }
      ],
      "values": {
        "-1": "Fails",
        " 0": "No score",
        "+1": "Verified"
      },
      "default_value": 0
    }
  },
  "permitted_labels": {},
  "removable_reviewers": [],
  "reviewers": {
    "REVIEWER": [
      {
        "_account_id": 4,
          "name": "<my-name>",
          "email": "<my-email>",
          "username": "<my-username>"
      }
    ]
  },
  "current_revision": "913330441711b067899a664a60c78be518e547b4",
  "revisions": {
    "913330441711b067899a664a60c78be518e547b4": {
      "kind": "REWORK",
      "_number": 6,
      "created": "2017-04-03 14:08:14.000000000",
      "uploader": {
        "_account_id": 4,
          "name": "<my-name>",
          "email": "<my-email>",
          "username": "<my-username>"
      },
      "ref": "refs/changes/81/381/6",
      "fetch": {
        "ssh": {
          "url": "ssh://<url>",
          "ref": "refs/changes/81/381/6"
        },
        "http": {
          "url": "http://<url>",
          "ref": "refs/changes/81/381/6"
        }
      }
    }
  }
}

It's not affected by request. Same response is returned when I send request using GET method or using POST method with invalid JSON in body(!)

Gerrit version is: 2.13.6-3008-gcdc381e

Do I something wrong?

PS. Here is similar question, but it isn't helpful: Gerrit set-review api doesn't work

EDIT: It seems that I getting response from GET request not POST

Upvotes: 2

Views: 3006

Answers (1)

Sarrus
Sarrus

Reputation: 631

I figured it out. It's not gerrit problem. I used http request and our server redirected to https with 301 which the Postman fallowed and returned response for GET request.

Upvotes: 1

Related Questions