How to create pull request using command line?

Hi,

I'm getting 401 error when trying to create a pull request via command line

curl -u user:password -X POST -H "Content-Type: application/json" https://host:8443/projects/myproject/repos/myrepo/pull-requests/\?create\&sourceBranch\=refs/heads/bugfix/feature-branch\&targetBranch\=refs/heads/develop

What am I doing wrong?

4 answers

Thanks for the update Jeff,

You need to pass a JSON payload containing the source and destination refs as the request body, rather than specifying them with -d. e.g. 

The example from the documentation is: 

{
    "title": "Talking Nerdy",
    "description": "It’s a kludge, but put the tuple from the database in the cache.",
    "state": "OPEN",
    "open": true,
    "closed": false,
    "fromRef": {
        "id": "refs/heads/feature-ABC-123",
        "repository": {
            "slug": "my-repo",
            "name": null,
            "project": {
                "key": "PRJ"
            }
        }
    },
    "toRef": {
        "id": "refs/heads/master",
        "repository": {
            "slug": "my-repo",
            "name": null,
            "project": {
                "key": "PRJ"
            }
        }
    },
    "reviewers": [
        {
            "user": {
                "name": "charlie"
            }
        }
    ]
}

I'm surprised you're getting a 401 though. If you've got the password wrong too many times, you might have triggered CAPTCHA on your account. Are you able to log in and create pull requests via the UI using the user you're authenticating as?

If all else fails, I'd add the -v flag to your command and see if the response has any more information, and enable debug logging on the Stash server to see if you can get some insight into what's going wrong.

cheers,

Tim

Tim, I must not be doing this correctly. I'm still getting the same error. After so many tries it does trigger CAPTCHA, then I just have to login again from the web. Try again it will give me the same 401 error. curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -u user:password -v \ https://host:8443/rest/api/3.3/projects/myproject/repos/myrepo/pull-requests/ \ -d '{ "title": "Testing", "description": "Create pull request test", "state": "OPEN", "open": true, "closed": false, "fromRef": { "id": "refs/heads/bugfix/feature-123", "repository": { "slug": "myrepo", "name": null, "project": { "key": "myproject" } } }, "toRef": { "id": "refs/heads/develop", "repository": { "slug": "myrepo", "name": null, "project": { "key": "myproject" } } }, "reviewers": [ { "user": { "name": "team" } } ] }' * Adding handle: conn: 0x7fad3300c600 * Adding handle: send: 0 * Adding handle: recv: 0 * Curl_addHandleToPipeline: length: 1 * - Conn 0 (0x7fad3300c600) send_pipe: 1, recv_pipe: 0 * About to connect() to host port 8443 (#0) * Trying 192.168.253.52... * Connected to host (192.168.253.52) port 8443 (#0) * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 * Server certificate: *.host * Server certificate: GlobalSign Organization Validation CA - SHA256 - G2 * Server certificate: GlobalSign Root CA * Server auth using Basic with user 'user' > POST /rest/api/3.3/projects/myproject/repos/myrepo/pull-requests/ HTTP/1.1 > Authorization: Basic amx1OmpLbGNvbQ== > User-Agent: curl/7.30.0 > Host: host:8443 > Accept: application/json > Content-Type: application/json > Content-Length: 745 > * upload completely sent off: 745 out of 745 bytes < HTTP/1.1 401 Unauthorized HTTP/1.1 401 Unauthorized * Server Apache-Coyote/1.1 is not blacklisted < Server: Apache-Coyote/1.1 Server: Apache-Coyote/1.1 < X-AREQUESTID: @MG75UCx1242x179700x0 X-AREQUESTID: @MG75UCx1242x179700x0 < X-ASEN: SEN-3350037 X-ASEN: SEN-3350037 < Set-Cookie: _atl_stash_remember_me=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/ Set-Cookie: _atl_stash_remember_me=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/ * Authentication problem. Ignoring this. < WWW-Authenticate: Basic realm="Atlassian Stash" WWW-Authenticate: Basic realm="Atlassian Stash" < Content-Type: application/json;charset=UTF-8 Content-Type: application/json;charset=UTF-8 < Content-Length: 130 Content-Length: 130 < Date: Sat, 11 Oct 2014 00:42:21 GMT Date: Sat, 11 Oct 2014 00:42:21 GMT < * Connection #0 to host host left intact {"errors":[{"context":null,"message":"Authentication failed. Please check your credentials and try again.","exceptionName":null

Hi Jeff,

That's not the Pull Request REST API, that's a web UI url. 

Take a look at https://developer.atlassian.com/static/rest/stash/latest/stash-rest.html, specifically the /rest/api/1.0/projects/{projectKey}/repos/{repositorySlug}/pull-requests resource.

cheers,

Tim

 

Sorry, I paste the wrong command.

This is what I was doing:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -u user:password \
https://host:8443/rest/api/1.0/projects/myproject/repos/myrepo/pull-requests/ \
-d src=refs/heads/bugfix/feature-branch \
-d dest=refs/heads/develop
HTTP/1.1 401 Unauthorized
Server: Apache-Coyote/1.1
X-AREQUESTID: @MG75UCx1378x156187x1
X-ASEN: SEN-3350037
Set-Cookie: _atl_stash_remember_me=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/
WWW-Authenticate: Basic realm="Atlassian Stash"
Content-Type: application/json;charset=UTF-8
Content-Length: 130
Date: Fri, 10 Oct 2014 02:58:56 GMT

{"errors":[{"context":null,"message":"Authentication failed. Please check your credentials and try again.","exceptionName":null}]}%

Hi Jeff,

On a side note, you will be pleased to see the small (but great) improvement release on Stash 3.3. Please refer to the section "Pull request URLs are displayed in the console after pushing" of:

Best regards,
Thiago Bomfim
Atlassian Support

Suggest an answer

Log in or Join to answer
Community showcase
Piotr Plewa
Published Dec 27, 2017 in Bitbucket

Recipe: Deploying AWS Lambda functions with Bitbucket Pipelines

Bitbucket Pipelines helps me manage and automate a number of serverless deployments to AWS Lambda and this is how I do it. I'm building Node.js Lambda functions using node-lambda&nbsp...

717 views 0 4
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you
Atlassian Team Tour

Join us on the Team Tour

We're bringing product updates and pro tips on teamwork to ten cities around the world.

Save your spot