12

I am interested in creating automated release notes based on the Pull Request description, such as "Add legal resolutions claim report function" shown on the screen below.

However, I am not very experienced with Pull Requests, and I am not sure if the "description" is a Bitbucket-only functionality. My question is: How can I automatically retrieve this description from the Pull Request? I have checked the commit messages, but I couldn't find it anywhere there.

enter image description here

Dmitrij Kultasev
  • 5,447
  • 5
  • 44
  • 88

1 Answers1

3

Today, Bitbucket has two main services: Bitbucket Server and Bitbucket Cloud. If you have not downloaded a bitbucket server, you're most likely using the bitbucket cloud. To connect to the Bitbucket Cloud API, you can either use the Atlassian Connect to build an app to connect to bitbucket or you can use the rest apis (reference to all of their endpoints: https://developer.atlassian.com/bitbucket/api/2/reference/).

This is the api you would call to get all the information of all the pull requests from a given <repository name> of a <username>:

curl -u <username>:<password> https://api.bitbucket.org/2.0/repositories/<username>/<repository name>/pullrequests

If you have jq installed, you could pipe the output of the above api to it to retrieve only the descriptions, as you requested in your question. The following command would list all descriptions of all pull requests from <repository name> of <username>:

curl -u <username>:<password> https://api.bitbucket.org/2.0/repositories/<username>/<repository name>/pullrequests | jq ".values[] | .summary.raw"

This is the output I get from running requesting the above api on my bitbucket repository:

{
    "pagelen": 10,
    "values": [
        {
            "description": "this is just a description for testing the pull request api endpoint",
            "links": {
                "decline": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/decline"
                },
                "commits": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/commits"
                },
                "self": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1"
                },
                "comments": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/comments"
                },
                "merge": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/merge"
                },
                "html": {
                    "href": "https://bitbucket.org/dhulke/ojspkp/pull-requests/1"
                },
                "activity": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/activity"
                },
                "diff": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/diff"
                },
                "approve": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/approve"
                },
                "statuses": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/statuses"
                }
            },
            "title": "adding a to test a pull request",
            "close_source_branch": false,
            "type": "pullrequest",
            "id": 1,
            "destination": {
                "commit": {
                    "hash": "6188a5897db9",
                    "type": "commit",
                    "links": {
                        "self": {
                            "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/commit/6188a5897db9"
                        },
                        "html": {
                            "href": "https://bitbucket.org/dhulke/ojspkp/commits/6188a5897db9"
                        }
                    }
                },
                "repository": {
                    "links": {
                        "self": {
                            "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp"
                        },
                        "html": {
                            "href": "https://bitbucket.org/dhulke/ojspkp"
                        },
                        "avatar": {
                            "href": "https://bytebucket.org/ravatar/%7B605ba8e3-7b25-4093-9c72-f847da4b2464%7D?ts=default"
                        }
                    },
                    "type": "repository",
                    "name": "OJSPKP",
                    "full_name": "dhulke/ojspkp",
                    "uuid": "{605ba8e3-7b25-4093-9c72-f847da4b2464}"
                },
                "branch": {
                    "name": "master"
                }
            },
            "created_on": "2018-09-15T23:17:25.931924+00:00",
            "summary": {
                "raw": "this is just a description for testing the pull request api endpoint",
                "markup": "markdown",
                "html": "<p>this is just a description for testing the pull request api endpoint</p>",
                "type": "rendered"
            },
            "source": {
                "commit": {
                    "hash": "b02656e67546",
                    "type": "commit",
                    "links": {
                        "self": {
                            "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/commit/b02656e67546"
                        },
                        "html": {
                            "href": "https://bitbucket.org/dhulke/ojspkp/commits/b02656e67546"
                        }
                    }
                },
                "repository": {
                    "links": {
                        "self": {
                            "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp"
                        },
                        "html": {
                            "href": "https://bitbucket.org/dhulke/ojspkp"
                        },
                        "avatar": {
                            "href": "https://bytebucket.org/ravatar/%7B605ba8e3-7b25-4093-9c72-f847da4b2464%7D?ts=default"
                        }
                    },
                    "type": "repository",
                    "name": "OJSPKP",
                    "full_name": "dhulke/ojspkp",
                    "uuid": "{605ba8e3-7b25-4093-9c72-f847da4b2464}"
                },
                "branch": {
                    "name": "teste"
                }
            },
            "comment_count": 0,
            "state": "OPEN",
            "task_count": 0,
            "reason": "",
            "updated_on": "2018-09-15T23:17:25.963178+00:00",
            "author": {
                "username": "dhulke",
                "display_name": "Danilo Moraes",
                "account_id": "557058:ab26766f-757e-4687-88ff-099bd94b0895",
                "links": {
                    "self": {
                        "href": "https://api.bitbucket.org/2.0/users/dhulke"
                    },
                    "html": {
                        "href": "https://bitbucket.org/dhulke/"
                    },
                    "avatar": {
                        "href": "https://bitbucket.org/account/dhulke/avatar/"
                    }
                },
                "type": "user",
                "uuid": "{1b22ad2c-9f1c-48f4-b9dc-958e8eddd3e8}"
            },
            "merge_commit": null,
            "closed_by": null
        }
    ],
    "page": 1,
    "size": 1
}
Danilo Souza Morães
  • 1,481
  • 13
  • 18